您的位置:首页 > 运维架构

DisplayImageOptions对象的使用和".9"图片的冲突问题

2015-02-07 11:11 363 查看
最近在编码过程中总是要使用一些商品图片,为了使他们的大小可以一致,我写了个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了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐