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

简介: 最近在编码过程中总是要使用一些商品图片,为了使他们的大小可以一致,我写了个ImageView,用一个正方形的框框的图片作为它的背景,并限制了高宽。同时把图片做成了.9图片。

最近在编码过程中总是要使用一些商品图片,为了使他们的大小可以一致,我写了个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了。

 

目录
相关文章
|
3月前
|
JavaScript 前端开发
判断对象是否含有改属性,三个方法
JavaScript中判断对象是否包含属性的三种方法:1. 使用`'property' in object`检查自有属性和继承属性;2. 使用`object.hasOwnProperty('property')`仅检查自有属性;3. 使用`if (object.property)`判断,但返回属性值。
36 2
判断对象是否含有改属性,三个方法
|
25天前
|
前端开发 搜索推荐 算法
|
数据采集 前端开发 JavaScript
什么是语义化?图片下的空隙如何解决?创建对象常用的几种方式?
语义化是指用合理的html标记以及其特有的属性去格式化文档内容。如标题用h1-h6,段落用p标签。
|
小程序 C#
C#释放内嵌的资源文件到指定位置(几种情况的讨论)
C#释放内嵌的资源文件到指定位置(几种情况的讨论)
475 0
|
存储 Java
定义不可变对象的策略---粗略翻译自文档
定义不可变对象的策略---粗略翻译自文档
定义不可变对象的策略---粗略翻译自文档
|
前端开发 JavaScript
有关使用Map结构替换掉复杂的if-else结构【项目使用】
有关使用Map结构替换掉复杂的if-else结构【项目使用】
226 0
|
PHP
【laravel项目】@13 解决访问器与数据填充冲突(3)
【laravel项目】@13 解决访问器与数据填充冲突
93 0
【laravel项目】@13 解决访问器与数据填充冲突(3)
|
PHP 数据库
【laravel项目】@13 解决访问器与数据填充冲突(2)
【laravel项目】@13 解决访问器与数据填充冲突
125 0
【laravel项目】@13 解决访问器与数据填充冲突(2)
|
PHP 数据库
【laravel项目】@13 解决访问器与数据填充冲突(1)
【laravel项目】@13 解决访问器与数据填充冲突
108 0
【laravel项目】@13 解决访问器与数据填充冲突(1)