最近在编码过程中总是要使用一些商品图片,为了使他们的大小可以一致,我写了个ImageView,用一个正方形的框框的图片作为它的背景,并限制了高宽。同时把图片做成了.9图片。但是因为图片数据是从后台获取的,因此我又使用了DisplayImageOptions,并使用了它的一些关于显示的属性,即
showImageOnLoading(R.drawable.default_1) //设置图片在下载期间显示的图片
.showImageForEmptyUri(R.drawable.default_1) //设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.default_1) //设置图片加载/解码过程中错误时候显示的图片
可是发现图片显示时没有铺满我的商品框。
我的主要代码如下:
public class MyAdapter extends BaseAdapter {
private List<MyModel> mList;
private Context mContext;
private DisplayImageOptions mOptions;
public MyAdapter(Context context, List<MyModel> list) {
this.mContext = context;
this.mList = list;
mOptions = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.default_1)
.showImageForEmptyUri(R.drawable.default_1).showImageOnFail(R.drawable.default_1).cacheInMemory(true)
.cacheOnDisk(true).imageScaleType(ImageScaleType.EXACTLY).displayer(new RoundedBitmapDisplayer(0))
.build();
}
...}
而代码中的“default_1”这张图片就是一张“.9”图片,于是这张图片的.9的样式就失效,直接等比例拉伸了。
而我们只需要把代码中的红色部分改成下面的代码:
mOptions = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true)
.imageScaleType(ImageScaleType.EXACTLY).displayer(new SimpleBitmapDisplayer()).build();
就可以了,当然那我们就没有默认的背景图片,这个就只需要我们在适配器代码里面加一句
item.mIv.setImageResource(R.drawable.default_1);
就可以了。
小贴士:.9图片的制作
在我们的sdk文件夹下面有一个tools->draw9patch.bat,双击打开,再点Enter键,就会出来一个图片制作软件,点击左上方的file,打开一张图片。
把我们希望在适配过程中可以拉伸的区域选中并且保存图片就OK了。