屏幕适配初探

当我们明白了dp、dpi、px、sp、屏幕密度这些概念时,这才是第一步。后面我们需要了解的是安卓是怎样一个机制来加载图片的,即那么drawable-hdpi等等是怎么个玩意儿。我想写一个实例来窥探其一部分特性,后续的特性会慢慢补上。
这个实验呢,很简单,一张图(590x300),开两个模拟器A和B(一个320x480,一个480x800)。
从安卓的资源系统中加载图片
先看raw文件夹,我们自己创建出来,将图片放在其中。

setContentView(R.layout.activity_main);
iv=(ImageView) findViewById(R.id.iv);
BitmapFactory.Options op = new BitmapFactory.Options();
op.inSampleSize =1;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.header_graphic,op);
//Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/header_graphic.png", op);
System.out.println(op.outWidth+","+op.outHeight);
iv.setImageBitmap(bitmap);

A的结果为590,300,即图片的原始大小
B的结果为885,450,进行了一个1.5倍的放大

再看各种Drawable文件夹,假设将该图片放在drawable-hdpi中
A的结果为393,200,进行了1.5倍的缩小
B的结果为590*300,没有进行缩放
解释如下:
raw文件夹默认的为mdpi,他会根据设备的分辨率去动态的对图片进行一个缩放。
drawable-hdpi同理,系统认为这是一张高清图片,你的手机却是个mdpi的,那么他会进行缩放。
从网络或本地文件中加载图片
我们选择从本地SD卡中加载图片(网络同理)
A 590,300 没有变化
B 590,300 没有变化
所以,从本地或者网络加载图片没有筛选过程,直接显示原生图片的大小

我们要做的事情
从资源中加载图片,系统会帮你进行筛选,那么当从网络或者本地文件加载时,就需要我们自己进行一个缩放了。
核心就是BitmapFactory.Options这个参数。
比如,当我们从网络中加载上面的图片时,图片的分辨率是590x300,而A设备的分辨率是320x480,显然,我们要进行一个缩放,那么,我们令inSimpleSize=2
A 295,150
正是我们所需要的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值