Android图片加载时,由于网络状况 图片大小 手机内存等情况会导致加载图片的时长不同,这时候就涉及到给ImagevVew设置默认图片的问题.
当然了,最简单的方法就是在每个使用ImageView的地方加上UI提供的默认背景图,最简单也是最麻烦的.
由于图片加载工具是自己动手写的,所以对于图片的操作都可以实现,故而想到了一个办法,如果你的默认背景图也是一个固定底图+logo的话,可以参考下这个思路
解决方案:
1.需要UI提供一个默认的底图(background),一个大小合适的logo(png格式,透明背景好处理);
2.将background作为底图,logo附在上面,这样background可随意改变大小而不至于变形,logo可根据对应的ScaleType设置
3.下面看具体实现代码
图片加载使用的是AsyncTask,因为图片加载完成后,显示的操作是在onPostExecute()方法中实现的,所以,可以在onPreExecute()中进行默认背景图的设置
在onPreExecute()方法中设置对应的background和ScaleType,具体代码如下:
@Override protected void onPreExecute() { super.onPreExecute(); mScaleType = mview.getScaleType(); //获取scaletype background = mview.getBackground(); //获取背景 mDrawable = DPApplication.mContext.getResources().getDrawable(R.drawable.morenbeijing); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { mview.setBackground(mDrawable); } else { mview.setBackgroundDrawable(mDrawable); } //设置mview mview.setImageResource(R.drawable.morenwenzi); mview.setScaleType(ImageView.ScaleType.CENTER_CROP); }
总而言之,就是将原先的默认背景图拆分成两部分,底图+logo,这样不带文字的背景图层怎么变形都不会看出来,只需要将logo附在上面即可,简单又实用,已在正式项目中启用,实践效果不错!