手写一个通用加载中、显示数据、加载失败、空数据的LoadingView框架。 定义3个布局:加载中,加载失败,空数据 加载中: <?..., null); } public LoadingView(@NonNull Context context, @Nullable AttributeSet attrs) { this(context,...= GONE) loadingView.setVisibility(GONE); addView(loadingView); views.put(loadingLayoutId, loadingView...); if (loadingView.getVisibility() !...import android.view.View; import android.widget.Button; import android.widget.Toast; import com.sample.loadingview.widget.LoadingView
最近项目有要用到环形的进度条,Github上有一个类似的DashedCircularProgress控件,但是他画的进度是通过设置画笔的虚线效果来实现间隔的:p...
今天看到一个银行的APP上面的loadingview 挺好的,就尝试着自己实现,觉得很简单,但自己实现起来还是发现了一些问题。 LoadingView和下图类似: ?...然后代码就是代码实现了,主要的内容都有注释,代码如下: public class LoadingView extends View { private final static String TAG =..."LoadingView"; private final static int LEFT_BALL_DOWN = 1; private final static int LEFT_BALL_UP =...attrs) { super(context, attrs); init(context); } public LoadingView(Context context, @Nullable AttributeSet...最后贴上想xml文件,后续会完善设置loadingview的大小和颜色之类的参数。
在数据返回之前一般都需要有个进度指示器来告诉用户,程序正在拼命帮你加载,当数据返回后展示正常数据,这是个很简单也很常用的功能,但是可能每一个页面都需要为这个简单功能浪费精力体力,所以我们需要一个简单通用的加载LoadingView...Activity的Xml布局文件中,我们可以直接添加 <com.sw.library.widget.library.UniversalLoadingView android:id="@+id/<em>loadingView</em>
画图首先是onDraw方法(我会把圆代码写上,一步一步剖析): 首先在view中定义个属性:private RectF rectf = new RectF();...
首先在view中定义个属性:private RectF rectf = new RectF();//可以理解为,装载控件按钮的区域
已在Github开源:Kawaii_LoadingView,欢迎 Star ! 目录 1....特点 对比市面上的加载等待自定义控件,该控件Kawaii_LoadingView 的特点是: 3.1 样式清新 对比市面上 各种酷炫、眼花缭乱的加载等待自定义控件,该款 Kawaii_LoadingView... 步骤2:设置动画属性 属性说明: 具体属性设置 使用示例 在XML文件中进行设置 activity_main.xml <scut.carson_ho.kawaii_loadingview.Kawaii_LoadingView...定义控件变量 private Kawaii_LoadingView Kawaii_LoadingView; // 2....绑定控件 Kawaii_LoadingView = (Kawaii_LoadingView) findViewById(R.id.Kawaii_LoadingView);
传统的做法 定义一个(或多个)显示不同加载状态的控件或者xml布局文件(例如:LoadingView) 每个页面的布局中都写上这个view 在BaseActivity/BaseFragment中封装LoadingView...好一点的封装方法 定义一个(或多个)显示不同加载状态的控件或者xml布局文件(例如:LoadingView) 定义一个工具类(LoadingUtil)来管理LoadingView,不同状态显示不同的UI...如果需要复用到其它App中,因为每个App的UI风格可能不同,对应的LoadingView布局也可能会不一样,要想复用必须先将页面与LoadingView解耦。 如何解耦? --- 1....梳理一下我们需要实现的效果 页面的LoadingView可切换,且不需要改动页面代码 页面中可指定LoadingView的显示区域(例如导航栏Title不希望被LoadingView覆盖) 支持在Fragment...我们也可以按照这个思路来解耦LoadingView: 创建一个工具类,用于管理LoadingView各个状态的UI展示 创建一个Adapter接口,外部提供实现类,通过getView方法创建具体的LoadingView
特点 对比市面上的加载等待自定义控件,该控件Kawaii_LoadingView 的特点是: 3.1 样式清新 对比市面上 各种酷炫、眼花缭乱的加载等待自定义控件,该款 Kawaii_LoadingView...使用示例 在XML文件中进行设置 activity_main.xml <scut.carson_ho.kawaii_loadingview.Kawaii_LoadingView...定义控件变量 private Kawaii_LoadingView Kawaii_LoadingView; // 2....绑定控件 Kawaii_LoadingView = (Kawaii_LoadingView) findViewById(R.id.Kawaii_LoadingView); // 3....使用动画(API说明) // 3.1 启动动画 Kawaii_LoadingView.startMoving(); // 3.2 停止动画 Kawaii_LoadingView.stopMoving
} show();// 根据服务器的数据 切换状态 return frameLayout; // 拿到当前viewPager 添加这个framelayout } private View loadingView...successView;// 加载成功的界面 private FrameLayout frameLayout; // 在FrameLayout中 添加几种不同的界面 private void init() { loadingView...= createLoadingView(); // 创建了加载中的界面 if (loadingView !...= null) { frameLayout.addView(loadingView, new FrameLayout.LayoutParams( LayoutParams.MATCH_PARENT...= null) { loadingView.setVisibility(state == STATE_UNKOWN || state == STATE_LOADING ?
传统的做法 定义一个(或多个)显示不同加载状态的控件或者xml布局文件(例如:LoadingView) 每个页面的布局中都写上这个view 在BaseActivity/BaseFragment中封装LoadingView...好一点的封装方法 定义一个(或多个)显示不同加载状态的控件或者xml布局文件(例如:LoadingView) 定义一个工具类(LoadingUtil)来管理LoadingView,不同状态显示不同的UI...如果需要复用到其它App中,因为每个App的UI风格可能不同,对应的LoadingView布局也可能会不一样,要想复用必须先将页面与LoadingView解耦。 如何解耦? ---- 1....梳理一下我们需要实现的效果 页面的LoadingView可切换,且不需要改动页面代码 页面中可指定LoadingView的显示区域(例如导航栏Title不希望被LoadingView覆盖) 支持在Fragment...我们也可以按照这个思路来解耦LoadingView: 创建一个工具类,用于管理LoadingView各个状态的UI展示 创建一个Adapter接口,外部提供实现类,通过getView方法创建具体的LoadingView
2.代码实现 /** * Created by x-sir on 2018/8/22 :) * Function: */ public class LoadingView { private...* * @param builder */ public LoadingView(Builder builder) { this.mText =...this.loadingWidth = loadingWidth; return this; } /** * Set gif loadingView...mLoadingView = new LoadingView.Builder(this) .setDropView(activity_main)....build(); 2.自定义设置各种参数: mLoadingView = new LoadingView.Builder(this) .setText(
Android手把手撸一个CustomProgressDialog 1.自定义LoadingView /** * Created by xpf on 2017/8/28 :) * Function:...自定义加载中的Dialog */ public class LoadingView extends ProgressDialog { public LoadingView(Context...context) { super(context); } public LoadingView(Context context, int theme) {...(); } @Override public void dismiss() { // 关闭Dialog super.dismiss(); } } 2.LoadingView...color/transparent 6.代码中使用 if (loading == null) { loading = new LoadingView
已在Github开源:Kawaii_LoadingView,欢迎 Star ! ---- 目录 ? ---- 1....简介 一款 可爱 、清新 & 小资风格的 Android自定义View控件 已在Github开源:Kawaii_LoadingView,欢迎 Star ! ? ---- 2....特点 对比市面上的加载等待自定义控件,该控件Kawaii_LoadingView 的特点是: 3.1 样式清新 对比市面上 各种酷炫、眼花缭乱的加载等待自定义控件,该款 Kawaii_LoadingView...完整Demo地址 Carson_Ho的Github地址:Kawaii_LoadingView_TestDemo ? ---- 6....Github开源地址:Kawaii_LoadingView ---- 8.
已在Github开源:Kawaii_LoadingView,欢迎 Star ! 目录 ---- 1....简介 一款 可爱 、清新 & 小资风格的 Android自定义View控件 已在Github开源:Kawaii_LoadingView,欢迎 Star ! 2....特点 对比市面上的加载等待自定义控件,该控件Kawaii_LoadingView 的特点是: 3.1 样式清新 对比市面上 各种酷炫、眼花缭乱的加载等待自定义控件,该款 Kawaii_LoadingView...完整Demo地址 Carson_Ho的Github地址:Kawaii_LoadingView_TestDemo 6....Github开源地址:Kawaii_LoadingView 8.
= null ){ if (loadingView !...= null ){ loadingView.setVisibility(View.INVISIBLE); imageView.setVisibility(View.VISIBLE...= null ){ loadingView.setVisibility(View.VISIBLE); imageView.setVisibility(View.INVISIBLE...= null && imageUrl.equals(imageView.getTag())){ loadingView.setVisibility(View.INVISIBLE);...= null ){ loadingView.setVisibility(View.INVISIBLE); imageView.setVisibility(View.VISIBLE
STATE_SUCCESS = 4; public int state = STATE_UNKOWN; private Context mContext; private View loadingView...= createLoadingView(); // 创建了加载中的界面 if (loadingView !...= null) { this.addView(loadingView, new LayoutParams( LayoutParams.MATCH_PARENT...showPage();// 根据不同的状态显示不同的界面 } // 根据不同的状态显示不同的界面 private void showPage() { if (loadingView...= null) { loadingView.setVisibility(state == STATE_UNKOWN || state == STATE_LOADING
(Context context) { this(context, null); } public LoadingView(Context context, @Nullable...AttributeSet attrs) { this(context, attrs, 0); } public LoadingView(Context context...> mLoadingViewSoftReference; private float mDegrees = 0f; public LoadingRunnable(LoadingView...loadingView) { mLoadingViewSoftReference = new SoftReference(loadingView);...--旋转的图--> <com.llw.mvplibrary.view.LoadingView android:layout_width="wrap_content"
范例: public class LoadingView extends View { //圆形的半径 int radius; //圆形外部矩形rect的起点 int left = 10,...top = 30; Paint mPaint = new Paint(); public LoadingView(Context context) { super(context); }...= context.obtainStyledAttributes(attrs, R.styleable.LoadingView); radius = typedArray.getInt(R.styleable.LoadingView_radius..., 0); } public LoadingView(Context context, AttributeSet attrs, int defStyleAttr) { super(context...<com.example.a16040657.customviewtest.LoadingView android:layout_marginLeft="10dp" android
领取专属 10元无门槛券
手把手带您无忧上云