在数据返回之前一般都需要有个进度指示器来告诉用户,程序正在拼命帮你加载,当数据返回后展示正常数据,这是个很简单也很常用的功能,但是可能每一个页面都需要为这个简单功能浪费精力体力,所以我们需要一个简单通用的加载LoadingView...Activity的Xml布局文件中,我们可以直接添加 <com.sw.library.widget.library.UniversalLoadingView android:id="@+id/loadingView
画图首先是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 loadingview.Kawaii_LoadingView...定义控件变量 private Kawaii_LoadingView Kawaii_LoadingView; // 2....绑定控件 Kawaii_LoadingView = (Kawaii_LoadingView) findViewById(R.id.Kawaii_LoadingView);
特点 对比市面上的加载等待自定义控件,该控件Kawaii_LoadingView 的特点是: 3.1 样式清新 对比市面上 各种酷炫、眼花缭乱的加载等待自定义控件,该款 Kawaii_LoadingView...使用示例 在XML文件中进行设置 activity_main.xml 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
传统的做法 定义一个(或多个)显示不同加载状态的控件或者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
传统的做法 定义一个(或多个)显示不同加载状态的控件或者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
} 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 ?
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(
已在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.
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
= 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
ListView.setEmptyView()没有效果 有时调用setEmptyView没有效果,这是因为我们设置的这个EmptyView必须和该ListView在同一个布局体系中 如:下面这样的代码有些时候会没有效果 View loadingView...= View.inflate(getActivity(), R.layout.loading, null); mPullLoadListView.setEmptyView(loadingView)...View loadingView = View.inflate(getActivity(), R.layout.loading, null); //添加到同一布局体系中 getActivity().addContentView...(loadingView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT )); mPullLoadListView.setEmptyView...(loadingView); mPullLoadListView.setAdapter(adapter); Activity中 View empty = getLayoutInflater().inflate
如果要使用它,可以很简单地写出以下代码: LoadingView"> 其中,LoadingView 是在指定用哪一个控件来做加载动画。..."450" Width="800" Background="Black"> LoadingView...DelayButton_Click(object sender, RoutedEventArgs e) { Thread.Sleep(3000); } } } 而 LoadingView...同时它还没有后台代码: ▲ LoadingView 的动画效果 LoadingView" xmlns
(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 SoftReferenceLoadingView>(loadingView);...--旋转的图--> LoadingView android:layout_width="wrap_content"
public class LoadingLayout extends ConstraintLayout { /** * 正在加载的布局 */ private View loadingView...LayoutInflater inflater = LayoutInflater.from(context); /***** 加载正在加载页面 *******/ loadingView...= inflater.inflate(R.layout.loading_load, this, false); addView(loadingView); /****...showContentView() { removeView(errorView); removeView(emptyView); removeView(loadingView...View view = getChildAt(i); view.setVisibility(View.GONE); } loadingView.setVisibility
STATE_EMPTY = 3; public static final int STATE_SUCCESS = 4; public int state = STATE_UNKOWN; private View loadingView...LoadingPage(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { loadingView...= createLoadingView(); // 创建了加载中的界面 if (loadingView !...= null) { this.addView(loadingView, new FrameLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT...= null) { loadingView.setVisibility(state == STATE_UNKOWN || state == STATE_LOADING ?