android 重新加载网络页面设置
2016-07-12 23:23
363 查看
这两天在优化程序的页面,重新加载网络的工作,感触颇多。在这里将自己学到的给大家分享一下:
我们获取网络数据时,如果突然断网,或者网络不好,不能获取完整的数据,那么我们就需要弹出重新加载的按钮,当用户点击时,如果网络网络状态良好,就应该重新加载页面。
上代码:`public class DiyView {
private View view = null;
private ViewGroup viewGroup = null;
private Context mContext;
private String TAG = “DiyView”;
private AgainView againView;
private TextView tv_again;
public final static int TYPE_NULL = 0;
public final static int TYPE_Error = 1;
public DiyView(Context context, ViewGroup viewGroup) {
this.viewGroup = viewGroup;
this.mContext = context;
}
}
`
使用的时候,在应的activity先实例化类,为什么不用单例模式呢?应为每个页面的ViewGroup都是不一样的。其中View是我们自定义的加载页面。在使用它的时候呢,把要作为父控件的控件放到实例化的类里面,如果获取数据失败,就调用diyView.setReturnView(DiyView.TYPE_Error);方法。
—2016-07-12
今天在使用过程中发现,该类使用onclick的话,必须点击两下才能相应点击事件。这是应为,在相应点击事件的时候,要先获取控件的焦点,然后才会响应点击。解决方法是,将点击事件换成触摸事件setOnTouchListener就可以啦。
在遇到ViewGroup是相对布局或者帧布局的时候,要将布局下的子控件的宽高改成自适应的宽高,这样重新加载的按钮才不会被原来的布局给覆盖住。 —2016-07-13(刚写了一遍,没保存成功,所以略写)
我们获取网络数据时,如果突然断网,或者网络不好,不能获取完整的数据,那么我们就需要弹出重新加载的按钮,当用户点击时,如果网络网络状态良好,就应该重新加载页面。
上代码:`public class DiyView {
private View view = null;
private ViewGroup viewGroup = null;
private Context mContext;
private String TAG = “DiyView”;
private AgainView againView;
private TextView tv_again;
public final static int TYPE_NULL = 0;
public final static int TYPE_Error = 1;
public DiyView(Context context, ViewGroup viewGroup) {
this.viewGroup = viewGroup;
this.mContext = context;
}
/**设置当前状态:TYPE_NULL---》请求成功,没有数据TYPE_Error---》请求失败,重新加载 * * @param type */ public void setReturnView(int type){ switch (type){ case TYPE_NULL: view = LayoutInflater.from(mContext).inflate(R.layout.lay_nulldata,viewGroup,false); viewGroup.addView(view,0); break; case TYPE_Error: if(viewGroup==null){ Log.d(TAG, "setReturnView: "+"Viewgroup"+"是空"); } view = LayoutInflater.from(mContext).inflate(R.layout.lay_tryagain,viewGroup,false); if(view==null){ Log.d(TAG, "setReturnView: "+"view是空" ); } viewGroup.addView(view,0); tv_again = (TextView) viewGroup.findViewById(R.id.tv_again); break; } } /** * 请求失败是点击重新加载的外接接口 * @param tryAgain */ public void setTryAgain(final AgainView tryAgain){ tv_again.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "onClick: "+"点击了重新加载"); clearView(); tryAgain.try_Again(); } }); } /** * 重新加载完成后,或者是正常加载时,清除之前添加的页面 */ public void clearView(){ if(view!=null){ viewGroup.removeView(view); } //之前没有添加view,所以不操作 else{ } }
}
`
使用的时候,在应的activity先实例化类,为什么不用单例模式呢?应为每个页面的ViewGroup都是不一样的。其中View是我们自定义的加载页面。在使用它的时候呢,把要作为父控件的控件放到实例化的类里面,如果获取数据失败,就调用diyView.setReturnView(DiyView.TYPE_Error);方法。
—2016-07-12
今天在使用过程中发现,该类使用onclick的话,必须点击两下才能相应点击事件。这是应为,在相应点击事件的时候,要先获取控件的焦点,然后才会响应点击。解决方法是,将点击事件换成触摸事件setOnTouchListener就可以啦。
在遇到ViewGroup是相对布局或者帧布局的时候,要将布局下的子控件的宽高改成自适应的宽高,这样重新加载的按钮才不会被原来的布局给覆盖住。 —2016-07-13(刚写了一遍,没保存成功,所以略写)
相关文章推荐
- HTTP应答状态
- HTML5基础与Meta http-equiv属性详解
- Unix网络编程卷一笔记
- 网络协议及网络软件框架设计
- Retrofit 一种适用于Android和Java的类型安全的http客户端
- httpd安装配置
- NAT(网络地址转换器)&UDP打洞
- http请求数据
- java网络编程之InetAddress
- HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Basic realm=xxxxx”
- 网络协议初入门
- TCP端口的作用、漏洞和操作建议
- 协议分析工具学习TCP/IP(三)
- 协议分析工具学习TCP/IP(二)
- 协议分析工具学习TCP/IP(一)
- centos 6.7之httpd配置
- http 常 用 状 态 码
- 计算机网络绪论
- java导入https证书
- httpd配置