作者:admin发布时间:2021-08-20分类:传奇私服浏览:122评论:12
在实际开发中针对某一界面我们有不同的显示需求以app中的消息列表为例在网络有问题的情况下我们界面显示网络出现问题在网络正常但是没有消息数据的情况下我们要求显示没有消息。这是常规的异常显示案例。
但是有时候为了减少数量我们不得不将一些异常情况都写在一个界面。
异常布局
_empty_iconandroid:layout_centerHorizontaltrueandroid:layout_marginTop16dptools:text内容加载失败/
然后在activity中控制异常界面中对应控件的显示。
以上两种方法都可以分别实现一种异常布局的显示但是有没有一种方法可以分别不同显示两种异常布局呢
答案是可以的将异常布局默认为网络异常情况然后对于没有数据情况进行处理。
if(!CommonUtils.isNetWorkAvailable(this)){DialogNewUtils.getInstance().showDialogToast(this,网络出问题了请检查网络ivErrorIcon.setBackgroundResource(R.drawable.viewtools_icon_no_net);errRel.setVisibility(View.VISIBLE);empView.setText(网络出问题了请检查网络shopWeb.setVisibility(View.GONE);viewWhiteBg.setVisibility(View.GONE);LoadingDialogUtils.getInstance().dismissDialog();}
在上面的代码中最重要的是这行设置图片资源背景通过加载无网络图片实现一个布局两种异常。
ivErrorIcon.setBackgroundResource(R.drawable.viewtools_icon_no_net);
但是提及到加载图片就不得不说imageview设置资源图片问题。
提及ImageView设置资源图片老生常谈的话题是图片变形问题和窗口适配问题。
1.以背景的形式进行设置图片
优点:可以不用关心图片的大小直接填充窗体
image2.setBackground(getResources().getDrawable(R.drawable.blackk));image2.setBackgroundResource(R.drawable.blackk);image2.setBackgroundDrawable(getResources().getDrawable(R.drawable.blackk));
缺点:与窗体不能完美结合
优点:图片不会变形
image2.setImageDrawable(getResources().getDrawable(R.drawable.blackk))StringpathEnvironment.getExternalStorageDirectory()File.separatortest1.jpgBitmapbmBitmapFactory.decodeFile(path);image2.setImageBitmap(bm);//不会变形image2.setImageResource(R.drawable.blackk);//不会变形
【注意】这种方法仅使用于两种异常显示切图长宽相近的情况当长宽比不同时会导致图像失真过度变宽变长影响显示。此时可以用include或者gone显示布局的办法进行显示毕竟前端业务产品和UI是大爷。
参考文献
https://blog.csdn.net/q****/article/details/53446379
已有12位网友发表了看法: