作者LZN (秋)
看板AndroidDev
标题Re: [问题] 萤幕解析度 资料夹问题
时间Sat May 25 00:38:16 2013
※ 引述《Ferich (纯粹的透明)》之铭言:
: 在前几篇 看到两位大大在讨论
: 我还是有很大的疑问
: 目前 手上测试的手机是
: xperia s 1280X720 4.3寸 PPI 312.47
: Nexus 7 1280X800 7.3寸 PPI 206.77
上述PPI我想指的是实际萤幕解析度/寸算出来的值,
由於我手上没机台,我推论实务上
Xperia s在Android系统环境会设定为320dpi (xhdpi)
Nexus 7会设为213 (tvdpi)
因此可计算出这两台的萤幕大小分别为
Xperia s 640dpX360dp
Nexus 7 960dpX600dp
PS:使用Android所定义的dp单位在设计与开发上是最好的作法。
: 用的套图是 xhdpi的那个资料夹内的图
: 图是用1280X720 下去制作的
: 显示都是正常
: 但是 放到 N7上 却不是因为PPI缩小而变大
: 而是变成只要是warp_content的图 都变成只有相当於画面的1/2
: 也就是说 在xs上满版的图 in N7上 都只有几乎一半大
: 後来用PhotoShop测试 居然要1920X1280的图 在N7上 才会几乎是满版
这段话并不正确,
只有Xperia s是使用drawable-xhdpi内的图,
而Nexus 7会使用drawable-tvdpi内的图,
我这边先假设你App内没有提供drawable-tvdpi的图档,
不过没关系,Android很聪明的会先寻找高解析度的图档,
并自动缩小到tvdpi应有的图档大小。
(若没高解析度的图档,才使用低解析度的图并放大到tvdpi应有的图档大小)
一定要知道图档被使用的情况是下列的哪一种,
1.该View不会动态变动大小,例如icon。
2.该View会动态调整大小,例如使用在background
for case 1
假设要显示一个80dpX80dp的icon在画面上,该icon的图档应该多大?
根据解析度不同,所需的图档大小也不同,
因此各个目录里面图档大小如下所列..
drawable-xhdpi 160pxX160px
drawable-hdpi 120pxX120px
drawable-tvdpi 106pxX106px
drawable-mdpi 80pxX80px
drawable-ldpi 60pxX60px
若能掌握住此原则,在写layout xml时,
该ImageView的layout_width和layout_height只要使用wrap_content即可,
不用指定80dp,这样弹性会比较大。
for case 2
假设是使用在View的background,
且该View内容会动态改变大小,
(ex..layout_width/layout_height设wrap_content或match_parent)
请务必使用9-patch图档,相关讯息请参阅
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
http://developer.android.com/tools/help/draw9patch.html
9 patch图也是需要依据不同解析度来放置不同大小的9 patch,基本概念与case1相同。
: 问题1. xs 与 N7 萤幕解析度差不多 只是因为寸数 让PPI不同
: 同一套图 为何差异性大
如同上述
Xperia s 640dpX360dp
Nexus 7 960dpX600dp
这两个萤幕大小完全不同,因此不可这样相比。
: 问题2. 目前市面上的平板解析度百百种 Nexus10 2560X1600 Sony Z table 1920X1200
: 在如此过高的解析度下 就得靠 screen size的方式来区分 而非 dpi资料夹了吗?
screen size跟drawable-<l/m/h/tv/xh/>dpi资料夹完全没关系,
千万不要把这两个混在一起看了。
Android中screen size指的是萤幕大小,并非指解析度。
(因为有很高解析度但萤幕很小的情况,反之亦然)
Android使用dp单位来来当单位长度,因此可以使用dp来解释萤幕大小
160dp = 1寸 ,因为dp是以 mdpi(160dpi, 1寸有160px)为基准,
在mdpi的状况下,1dp = 1px。
以你提的两个例子,
可分别算出萤幕大小为
Nexus10(xhdpi) 1280dpX800dp
Sony Z table(hdpi) 1280dpX800dp
因此这两台萤幕是一样大的。
: 问题3. 有无可以尽量 等比放大的设定啊~ 看起来解析度差没关系
: 只要版面不要跑掉.
通常不会这样设计介面...
我认为一般有水准以上的app大致会区分
手机、7寸平板/手机、10寸平板并分别设计layout
以小於600dp为手机介面
以大於等於600dp(sw600dp)小於800dp为7寸平板手机介面
以大於等於800dp(sw800dp)为10寸平板介面
: 问题4. 在上述的例子中 N7 1280X800 7.3寸的ui满版 要用1920X1280的原因是...
: 这样在设计上 很难捉模 ui应有的尺寸.
首先要有个认知就是,
在相同萤幕大小手机中,会有各种不同的解析度,
连10寸平板解析度都很有可能小於手机的解析度。
因此
只要把一般的图档以及用在background的图档的使用方式/时机弄清楚,
配合有弹性的介面/layout设计,
开发Android layout应该是很轻松愉快的啦~
: 感谢看完 请鞭
: 以上.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.92.63