背景:我之前做的都是实验性质的程序,只要在我的设备上跑起来就行了,不用考虑界面。现在准备尝试一下做一个能满足大多数屏幕的程序
思路:我看到写layout的时候有一个单位是dp,貌似是根据百分比来定位的,我决定用这个但是一想安卓的分辨率适配是个很大的难题,不可能用这一个dp来全部解决的,请各位老手说一下 用dp可能带来哪些问题?
思路:我看到写layout的时候有一个单位是dp,貌似是根据百分比来定位的,我决定用这个但是一想安卓的分辨率适配是个很大的难题,不可能用这一个dp来全部解决的,请各位老手说一下 用dp可能带来哪些问题?
解决方案 »
- service运行时间过久,就不起作用
- android 调用手机拍照,拍出来的照片小
- 重写googlemap的ItemizedOverlay时候空指针异常。。。
- 请问ImageButton里面那几个状态在xml文件定义怎么实现?
- 求助:crittercism 怎么设置SDK,才能接收Network latency 信息呢?
- BroadcastReceiver出现不能监听
- 求设备尺寸转换方法(mm, dp)
- android vlc截图与视频录制问题
- 谁能用安卓播放此url视频?
- android 把一个弹窗做出有fragment的效果
- 关于byte转换为string类型的问题。
- 讨论下android学习——如何进阶?
正常情况下,用dp或dip就可以满足所有分辨率的适配,但也不排除一些特殊情况。所以,一般情况下做多屏幕适配的话,都是用dip,然后再将一些用Dip还无法解决适配的界面单独写出来。详细可见此处四楼回复:http://topic.csdn.net/u/20120916/11/7265f38e-d9c7-4264-b078-2bfbaefc3c4a.html
------------------------
简单的问题,不需要深入讨论了。
第一:程序中,绝对不要出现像素为单位,而应该以dip或者dp为单位(1dip = 1.5px)
第二:做好特殊分辨率适配:切图只需要一套,高清的就行,便如按1027*768切的图,则所有比其小的分辨率都可以用啊,就算是比其大一点,也可以用的。实际开发中,一般以480*800来切图。
第三:将不同分辨率的布局文件分开写呀:
layout
layout-1024x800
layout-1280x720
layout-1280x800
layout-320x240
layout-480x320
layout-800x480
layout-960x540
第四:不要被上面的不同分辨率布局文件吓到,其实,只要你遵循了第一条,你会发现绝大多数界面在所有分辨率上都显示正常,你只需要将极少数比较特殊的界面写上上面各分辨率的目录中就OK啦~
我再问个傻一点的问题,比如我在res文件夹下面新建了个layout-1024x800文件夹,那程序跑起来后是安卓系统会根据屏幕分辨率(1024x800)找到layout-1024x800 (代码里写setContentView(R.layout.main))
还是
我在代码的头要手动获得当前屏幕分辨率,然后setContentView(R.layout-1024x800.main)?
详见:http://blog.csdn.net/chthq/article/details/8047027
另外,要适配不同的机器的话,最好用相对布局
你只需要在layout中写好xml布局文件就OK了。
举个简单的例子:
你本身有一个layout,然后你又建了layout-480x320和layout-800x480两个目录,并且,你在这三个目录中,都有同一个布局文件main.xml,那么,当你在某个Activity用使用这个main.xml布局文件时,若运行该程序的机器是480X320或者800X480,程序就会自动调用这两个目录中的main.xml文件,若运行程序的机器不是这两种分辨率,则程序会调用默认的layout中的main.xml。
实际在写程序时,一般只会有一两个xml文件需要单独实现,正常情况下,dp或者dip就能满足要求……