android获取数据加载页面(loadingmanager)
来源:互联网 发布:北京大学网络投诉 编辑:程序博客网 时间:2024/06/15 01:34
Android获取数据加载页面
核心思路
- 显示数据的页面与显示加载的页面在同一个RelativeLayout中
- 动态实例化各个组件,添加FrameLayout进入RelativeLayout中
- 三种情况对应三种xml,使用inflater获取组件实例
- loading页面能够旋转依靠Animation类
可重用类LoadingManager
public class LoadingManager { private Activity mActivity; private LayoutInflater mInflater; private View mView; private ImageView mLoadingView; private Animation mAnimation; private RelativeLayout mListParent; private FrameLayout mLoadingFrame; private RelativeLayout mRlLoading; private LinearLayout mLlNoData; private LinearLayout mLlNoNetwork; public LoadingManager(Activity activity, View view, int resId){ mActivity = activity; mView = view; mInflater = mActivity.getLayoutInflater(); mListParent = (RelativeLayout) mView.findViewById(resId); initViews(); initAnimation(); } public LoadingManager(Activity activity, int resId){ mActivity = activity; mInflater = mActivity.getLayoutInflater(); mListParent = (RelativeLayout) mActivity.findViewById(resId); initViews(); initAnimation(); } private void initViews() { mLoadingFrame = new FrameLayout(mActivity); LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); mLoadingFrame.setLayoutParams(params); // 初始化三种状态的layout mRlLoading = (RelativeLayout) mInflater.inflate(R.layout.page_loading, null); mLlNoData = (LinearLayout) mInflater.inflate(R.layout.page_no_data, null); mLlNoNetwork = (LinearLayout) mInflater.inflate(R.layout.page_no_network, null); // 在mRllLoading中过去ImageView mLoadingView = (ImageView) mRlLoading.findViewById(R.id.iv_rotate); // 初始化后隐藏 hideAll(); // 添加三种状态为frame的子view mLoadingFrame.addView(mRlLoading); mLoadingFrame.addView(mLlNoData); mLoadingFrame.addView(mLlNoNetwork); mListParent.addView(mLoadingFrame); } public void hideAll() { mRlLoading.setVisibility(View.GONE); mLlNoData.setVisibility(View.GONE); mLlNoNetwork.setVisibility(View.GONE); mLoadingFrame.setVisibility(View.GONE); } private void initAnimation() { mAnimation = new RotateAnimation(0.0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); mAnimation.setInterpolator(new LinearInterpolator()); mAnimation.setDuration(2000); mAnimation.setRepeatMode(Animation.RESTART);// 重复 mAnimation.setRepeatCount(Animation.INFINITE);// 无限次 } public void showLoading(){ hideAll(); mLoadingFrame.setVisibility(View.VISIBLE); mRlLoading.setVisibility(View.VISIBLE); mLoadingView.setAnimation(mAnimation); mAnimation.startNow(); } public void showNoData(){ hideAll(); mLoadingFrame.setVisibility(View.VISIBLE); mLlNoData.setVisibility(View.VISIBLE); } public void showNoNetwork(){ hideAll(); mLoadingFrame.setVisibility(View.VISIBLE); mLlNoNetwork.setVisibility(View.VISIBLE); } public boolean isHiding(){ return mLoadingFrame.getVisibility() == View.GONE; }}
判断网络状态NetworkTools
public class NetworkTools { public enum NetType { NONE, WIFI, CELLULAR } public static boolean isNoNetwork(Context context) { return NetType.NONE == getNetType(context); } public static boolean is2G3GNetwork(Context context) { return NetType.CELLULAR == getNetType(context); } public static NetType getNetType(Context context) { ConnectivityManager conManger = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (conManger == null) { return NetType.NONE; } NetworkInfo networkInfo = conManger.getActiveNetworkInfo(); if (networkInfo == null || !networkInfo.isAvailable()) { return NetType.NONE; } if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { return NetType.WIFI; } return NetType.CELLULAR; }}
实例代码
// 初始化LoadingMangermLoadingManager = new LoadingManager(mActivity, R.id.loading_layout); // 判断是否有网络,没有网络就显示NoNetwork状态界面 if(NetworkTools.isNoNetwork(mActivity)){ mLoadingManager.showNoNetwork(); return ;}// 显示Loading状态界面 mLoadingManager.showLoading();// 开启另一个线程进行数据的获取,在数据获取结束后调用 mLoadingManager.hideAll();getData();
0 0
- android获取数据加载页面(loadingmanager)
- Android异步加载获取网络数据(图片)
- Android菜鸟学习笔记(WebView加载html页面,页面提交数据问题)
- JSP页面加载时同时访问action获取数据( struts标签s:action方法)
- 静态页面 写ajax获取接口 加载数据案例
- 获取页面加载时间
- android 登陆、提交数据或加载数据时提示页面
- android 登陆、提交数据或加载数据时提示页面
- android 登陆、提交数据或加载数据时提示页面
- android 登陆、提交数据或加载数据时提示页面
- 页面数据延时加载
- 页面下拉加载数据
- 优化页面加载数据
- 页面下拉加载数据
- 页面加载数据顺序
- Android 打开页面加载数据时的遮罩弹屏效果
- jsp页面加载的时候,从后台获取数据,页面加载完成之后,下拉列表中已经有值
- 页面异步获取数据
- Markdown学习笔记
- mahout利用布尔型数据评估查准率和查全率
- 第37课第三题
- XSHELL/SecureCRT使用rz指令上传乱码/出错问题解决
- SDN研究进展
- android获取数据加载页面(loadingmanager)
- 计算机网络面试知识汇总(不定期更新)
- 0x 颜色对应代码
- 七、Linux网络编程-TCP客户/服务器模型、回射客户/服务器
- subString
- HTML5 postMessage 消息传输与 POST 跨域通信
- Mysql双主复制搭建和基于keepalived的故障转移
- 企业IT项目开发之七宗罪(上篇)
- struts需要的jar包