Android 显示空页面工具类
来源:互联网 发布:php date 取小时分钟 编辑:程序博客网 时间:2024/06/05 11:08
做项目肯定会遇到这样的需求,数据加载为空或者数据加载异常时候显示一个空页面给用户:
这篇blog就来实现这样一个简单的封装
1.首先定义一个线性布局
2.然后通过一个工具类来管理这样一个View
先来看自定义的线性布局
public class EmptyLayout extends LinearLayout{ /** * 空页面图片 */ private ImageView emptyImg; /** * 空页面文本 */ private TextView emptyTv; /** * 空文字 */ private String emptyText; /** * 空文字颜色 */ private int emptyTextColor; /** * 空文字大小 */ private float emptyTextSize; /** * 空图片 */ private Drawable emptyDrawable; /** * 图片宽度 */ private int imgWidth; /** * 图片高度 */ private int imgHeight; public EmptyLayout(Context context) { this(context ,null); } public EmptyLayout(Context context, AttributeSet attrs) { this(context, attrs ,0); } public EmptyLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); //初始化布局 initView(); //初始化参数 initDatas(); } /** * 初始化布局 */ private void initView(){ View view= LayoutInflater.from(getContext()).inflate(R.layout.empty_layout,this);//注意inflate方法的parent传入LinearLayout emptyImg= (ImageView) view.findViewById(R.id.common_iv); emptyTv= (TextView) view.findViewById(R.id.common_tv); } /** * 设置文本 */ public void setEmptyText(String emptyText) { this.emptyText=emptyText; if(emptyText!=null) emptyTv.setText(emptyText); } /** * 设置文本颜色 */ public void setEmptyTextColor(int emptyTextColor) { this.emptyTextColor=emptyTextColor; emptyTv.setTextColor(emptyTextColor); } /** * 设置空文本字体大小 * * @param emptyTextSize 单位是sp */ public void setEmptyTextSize(float emptyTextSize) { this.emptyTextSize=emptyTextSize; emptyTv.setTextSize(TypedValue.COMPLEX_UNIT_PX,emptyTextSize); } /** * 设置图片 */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public void setEmptyDrawable(Drawable drawable) { this.emptyDrawable=drawable; emptyImg.setBackground(drawable); } /** * 设置图片的宽度和高度 */ public void setImgWH(int imgWidth ,int imgHeight) { this.imgHeight=imgHeight; this.imgWidth=imgWidth; ViewGroup.LayoutParams lp=emptyImg.getLayoutParams(); lp.width=imgWidth; lp.height=imgHeight; emptyImg.setLayoutParams(lp); } /** * 初始化参数 */ public void initDatas(){ setEmptyText(emptyText); setEmptyTextColor(emptyTextColor); setEmptyTextSize(emptyTextSize); setEmptyDrawable(emptyDrawable); setImgWH(imgWidth,imgHeight); }}
代码很简单,简单的我都不知道说什么了,注释也比较清晰。
然后通过一个工具类来对这个布局进行初始化:
public class ViewUtil { public static EmptyLayout getEmptyLayout(Context context ,String text){ EmptyLayout layout=new EmptyLayout(context); layout.setEmptyText(text); layout.setEmptyTextSize(CommonUtils.dip2px(context,15)); layout.setEmptyTextColor(context.getResources().getColor(R.color.colorAccent)); layout.setEmptyDrawable(context.getResources().getDrawable(R.mipmap.nodata)); layout.setImgWH(CommonUtils.dip2px(context, 69), CommonUtils.dip2px(context, 47)); //这里控制了 AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, CommonUtils.dip2px(context, 300)); layout.setLayoutParams(params); return layout; }}
也没有什么难度,用到一个dp转px的方法,很常见:
/** * dp转px */ public static int dip2px(Context context ,float dpValue){ float density=context.getResources().getDisplayMetrics().density; return (int)(dpValue*density+0.5); }
最后看如何使用:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(ViewUtil.getEmptyLayout(this,"暂无数据")); }}
只需要在想用到该view的地方调用
ViewUtil.getEmptyLayout(this,"暂无数据")
同理的其实也可以类似实现无网络状况的页面,页面加载失败的页面等。而不需要我们在对应页面的布局中去写布局文件。
ps:最后在放一个对登陆与否方法的封装
/** * 提示登录 * @param context * @param clazz */ public static void isEnterLoginAct( final Context context,Class clazz) { //获取登陆用户保存数据 boolean isLogin=TextUtils.isEmpty(GlobalParams.Token) if (isLogin) { Intent intent = new Intent(context, clazz); context.startActivity(intent); } else { ShowDialogUtils.showInfoDialog(context, "您还没有登录,是否去登录?", new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context, LoginAct.class); context.startActivity(intent); } }); } }
一直以来对封装都不是很在行,不积硅步无以至千里,先从最简单的做起。
0 0
- Android 显示空页面工具类
- Android EmptyUtils-判空相关工具类
- Android 清空应用程序数据的工具类
- Android判断对象是否为空工具类
- android 字符串工具类 格式化日期字符串 拼接数组 判断字符串是否为空 转换时间显示 转换文件大小 获取中英文字符个数
- StateTool 一种好用的"空页面 错误页面 等待页面 数据页面"切换工具
- Android空数据页面提示控件
- android 过渡和空数据页面
- 常用非空工具类
- JAVA判断空工具类
- 非空判定工具类
- 判空相关工具类
- 判空相关工具类
- Android 实例-个人理财工具 之六 完善明细显示页面,附工程代码
- JSP接收数据为空--页面显示为0
- ecshop更新缓存后,前台页面显示空…
- WebView无网请求空web页面不显示错误信息
- android listView的为空时显示
- MPAndroidChart系列源码解读(四)
- Twemproxy安装使用
- 通过GeoIP2分析访问者IP获取地理位置信息
- MPAndroidChart系列源码解读(五)
- 利用JMX来监控大部分java应用
- Android 显示空页面工具类
- Android 智能问答机器人的实现
- CSS基础(六):浮动深入
- Oracle 11g 新特性数据库用户密码区分大小写参数sec_case_sensitive_logon对sys无效
- iOS swift判断摄像头权限
- 如何优化服务器
- 如何设计和维护好一个大项目
- FreeRTOS高级篇3---FreeRTOS调度器启动过程分析
- app在安卓5.0运行正常,但是在6.0运行报错