话说春天就像装B人的脸,一会儿晴来一会儿雨。昨儿还是雨天,今天就放晴了。迎面阵阵微风吹来,听着阿牛哥的桃花朵朵开,不禁想起了某南宋文艺高富帅的约炮口号:"腰缠十万贯,骑鹤下扬州"。想到这贫道一阵鄙视,“当自己是种人吗,要泡遍整个扬州城?”再翻翻自己的皮夹子,虽然只有10元钱骑鹤去扬州是不行了,但是骑车吃碗白粥还是可以的。正当贫道起身准备进膳时,长相猥琐,貌比如花的QA大叔,唱着上学歌,一路蹦了过来。如果说上次那个图片在屏幕不同位置,图片尺寸不同是个奇迹,那么这次的就是个灵异事件了。在贫道测试平板上显示正常的图片(见图1),在Qa的平板上只显示了图片的中间部分(见图2)。此刻贫道突然有一种下一刻,贞子MM会从屏幕里爬出来的感觉。为了能检测到问题所在,贫道冒着贞子MM会爬出来的危险,强行把Qa的平板扣留了下来。

 

图1                                                                                                                                图2

贫道迅速写了个测试代码,由于ImageView的大小是200x200像素,所设的图片也是200x200像素,正确的话应该是图能正好完全显示。

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity" ><ImageViewandroid:id="@+id/img"android:layout_width="200px"android:layout_height="200px"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:scaleType="center"/></RelativeLayout>

MainActivity.java

package com.example.testimg;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ImageView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ImageView imv = (ImageView)this.findViewById(R.id.img); imv.setImageResource(R.drawable.emp);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}

测试程序在贫道的平板上还是没有问题,然后又在Qa的平板上运行了一下。这个每篇必出现的"但是"君,又是如约而至。图片真的只显示了一部分。贫道看了看自己的杂牌平板,又看了看Qa高贵冷艳的Nexus 7,难道Android也搞品牌歧视。高贵的看不上杂牌的?不是Android所在的希望国号称人人平等吗?看来平等不平等,只有贫道亲自去看一看了,当然希望国是去不了的,但调试到程序里看看还是可以的。

既然是图片显示不完整,说明ImageView控件或者加载图片的大小出了问题,所以贫道添加了获取ImageView和图片大小的代码。

MainActivity.java

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ImageView imv = (ImageView)this.findViewById(R.id.img);int w1 = imv.getWidth();int h1 = imv.getHeight();Bitmap img = BitmapFactory.decodeResource(this.getResources(),R.drawable.emp);int w2 = img.getWidth();int h2 = img.getHeight();imv.setImageBitmap(img);}

按下调试按钮后,只见图片的Width和Height都变成了266,而不是图片本身的大小(见图3)。希望国名为平等,实乃霸权的丑恶嘴脸再一次显现无疑。此时的天空又下起了阵阵细雨,仿佛是傻大木,卡上校内牛满面的泪水。

图3

是继续揭露其伪平等的黑幕吗?想到武装到牙齿的王师,贫道不禁打了个冷战,想可耻的匿了。就在这时太祖那抑扬顿挫的声音在贫道脑海中响起:"美帝国主义都是纸老虎"。远处天雷滚滚,而此时的贫道心中一种使命感油然而生,心中顿时出现了希曼那伟岸的身影,不禁间手握窗边的避雷针高喊道:"春哥,赐予我力量吧。"刹那间贫道浑身上下牛B闪闪,是在渡劫飞升吗?答案自然是否定的,只不过是电流经过人肉电阻产生的发热发光的自然现象。与此同时,一张写着篆字的黄色字条,缓缓飘落,只见上面写着:"安卓不决问谷歌,解铃还须系铃人。"

看到这,贫道不禁想起了,几天前参加了一个Google赞助的水陆大法会,会上碰巧一位道友在宣讲了一个关于Android UI布局的法事。在宣讲的过程中,很神奇的演示了下在不同分辨率下,界面的布局做到了一致性,没有因为分辨率的变化而导致控件大小和位置显示不同。待贫道想问个究竟时,此道友却洒下一大把所谓的讲义,然后得道飞升了。在一片众人羡慕的眼光中,贫道一阵黑线,难道开发Android也能攒飞升经验值。望着满天飞舞的讲义,贫道伸手抓了一张,只见在擦屁股都嫌硬的纸上,用老军医体歪歪扭扭的印着几个google专有网址。贫道很不屑的塞到了包里,就当草稿纸了。

拿出那张已经皱巴巴的讲义,点开了其中的一个链接。只见上面写道,Android为了能让程序适应不同平板的分辨率,以dpi为标准将平板分成了四个档次。dpi者,屏幕密度也。一英寸160个像素被称为中密度屏幕,也称基准密度屏幕(mdpi),低于此标准的为ldpi,高于此标准的为hdpi,再高的就为xhdpi。与此同时在res目录下生成了四个对等的目录(drawable-hdp,drawable-ldpi,drawable-mdpi,drawable-xhdpi)标准如下:

xhdpi:~320dpi

hdpi: ~240dpi

mdpi:~160dpi

ldpi:~120dpi

此时贫道恍然大悟,原来贫道的平板是中密度屏幕属于发展中国家水平,而QA的Nexus 7已经是高密度屏幕, 已达到发达国家水平。看来号称人类希望的米国,不仅不平等,还嫌贫爱富,为富不仁啊。 更令人发指的是,程序就是根据dpi从不同的目录里寻找相关的资源,如果在本目录里寻找不到,就会到其他的目录里寻找。找到后,并不是按照原来的大小载入图片,而是根据当前屏幕dpi/找到图片的目录所对应的dpi来确定图片的大小。以本文为例,Nexus 7的dpi为208dpi属于hdpi,如果图片只放在了drawable-mdpi中而没有放到drawable-hdpi里。这样当程序运行在Nexus 7上时,图片的width和height就为原图片的208/160倍,也就是1.3倍左右。贫道检查了下测试程序,果然只在drawable-mdpi目录里存放了图片,而在drawable-hdpi里没有存放,这就是造成为啥图片的width和height是266px的原因,因为被放大了1.3倍。

看到这贫道心中一片悲凉,原来在Android的世界中,高端人士也是拿着屌丝们的资源任意操作,造成系数膨胀,导致灾难的发生。贫道不禁仰天长叹,一生为之奋斗的清平世界何时才能重返人间。此时的贫道陷入了深深的沉思中。

<<上一篇: 傲娇Android二三事之古古怪怪的Margin

转载于:https://www.cnblogs.com/andreitang/archive/2013/04/08/Display_image.html

傲娇Android二三事之诡诡异异的图片加载相关推荐

  1. 傲娇Android二三事之古古怪怪的Margin

    在一个淅淅沥沥的下午,贫道一边品着窖藏了七天的桶装水,一边尝着牙缝里剔出来的肉丝,估计食堂师傅是以吃盐为生的,两三个小时了,还有着一股淡淡的咸味.看着窗外,三三两两的情侣打着伞在雨中漫步.贫道不禁想到 ...

  2. android 开发中常用的第三方库(图片加载篇)

    今天我们来学习其中一个Android主流的图片加载库的使用 - Picasso 目录 目录 1. 简介 介绍:Picasso,可译为"毕加索",是Android中一个图片加载开源库 ...

  3. 傲娇Android二三事之操蛋的开发日记(第一回)

    武宗元年 十一月初四 霾 今日魔都,依旧仙雾环绕,仿佛蓬莱落凡尘.望着470这个鲜红的AQI修仙指数,贫道不禁吟道,"正是修仙好光景,雾霾时节又逢君".但在这个只修bug,不修仙的 ...

  4. Android高效异步图片加载框架

    概述 Android高效异步图片加载框架:一个高效的异步加载显示的图片加载框架,同时具备图片压缩,缓存机制等特性. 详细 代码下载:http://www.demodashi.com/demo/1214 ...

  5. Android图片加载到底哪家强

    图片加载几乎是任何 Android 项目中必备的需求,而图片加载的开源库也越来越多,我们姑且在 GitHub 上搜索下 android image 关键字,出来的前五个按照 Star 数排序的项目如下 ...

  6. Android图片加载库的封装实战

    重磅更新 2017-02-16 2017-05-09 优化圆形图片加载 更新demo 前言 主流图片加载库的对比 Android-Universal-Image-Loader Picasso Glid ...

  7. Android Glide图片加载框架(二)源码解析之into()

    文章目录 一.前言 二.源码解析 1.into(ImageView) 2.GlideContext.buildImageViewTarget() 3.RequestBuilder.into(Targe ...

  8. Android Glide图片加载框架(二)源码解析之load()

    文章目录 一.前言 二.源码分析 1.load() Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图片加载框架(二)源 ...

  9. Android Glide图片加载框架(二)源码解析之with()

    文章目录 一.前言 二.如何阅读源码 三.源码解析 1.with() Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图 ...

  10. Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53939176 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

最新文章

  1. java学习一 path与classpath
  2. python调包侠_拒绝调包侠,不需要高级算法和数据结构技巧
  3. 腾讯qq在线状态,开放平台
  4. cobertura覆盖率_Cobertura和Maven:集成和单元测试的代码覆盖率
  5. jQuery 简单案例
  6. 博士当中学老师是“人才浪费”?
  7. 用 lastIndexOf()、substr()、split()方法截取一段字符串
  8. html5语音读取文字_文字识别神器最新版-文字识别神器安卓版下载
  9. Elasticsearch6.x和Kibana6.x的安装
  10. 3. DICOM图像层级分类-DCMTK-数据字典避坑
  11. Xshell使用教程——问答方式
  12. 阿里菜鸟java岗面试
  13. 麦本本笔记本怎么U盘重装Win10系统教学?
  14. 什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!
  15. 随手写了一个鸡肋的二叉树
  16. JavaWeb-16 (E家园项目案例1)
  17. 半方差(semi-variogram)分析的原理和应用
  18. 单片机智能小区安防系统
  19. 网站推广工具易推宝是什么?
  20. 适用于linux的解压工具,Linux下的压缩/解压缩工具

热门文章

  1. BiLSTM+CRF命名实体识别:达观杯败走记(下篇)
  2. 百面机器学习——svm基尼系数寻找最优划分
  3. Python—常用正则表达式方法
  4. bug1-tensorflow中自定义模型的bug-input_signature
  5. 李宏毅自然语言处理——成分句法分析
  6. 书单|互联网企业面试案头书之程序员技术篇
  7. 25 矩阵——QR分解、Householder 矩阵、镜面反射
  8. C语言Register关键字:利用寄存器提升访问效率
  9. java 计算器 junit测试_测试工具之JUnit4 结合Mockito模拟测试代码
  10. linux下c 上传图片到mysql_Linux下C连接MySql数据库