Android-android应用针对不同的分辨率的机器,应如何设计以保证“一次设计,处处运行”?
现在开发android应用,不得不面临的一个现实的问题就是:如何能保证平台无关性?这里的平台无关性指具体设备分辨率的无关性。针对不同的设备,会有不同的分辨率,在安装同一应用时,如何降低这种差异性。
有几个疑问,需要一一解惑:
1.在应用中用到图片,是否要一种分辨率配备一组?如果这样的话,一个问题就是程序的体积会比较庞 大,这个我认为不是一个比较好的策略;还有一个问题就是,因为分辨率不一样,是否也要添加相应的布局文件(layout.xml)?看得出,这样子维护起来也不方便。
2.如果不用第一种方法,那我现在用这第二种方法。我现在遇到imageView一个很DT的问题,那就是我设置layout_width与layout_height为wrap_content之后,实际imageView显示的大小会比实际图片的像素尺寸要大(问题url:http://www.dewen.net.cn/q/2707)。所以针对这种情况,那我在layout布局中有时就不能指定宽度与高度,必需要在代码中,对宽度与高度、间距等要用dp来进行设置,而且还不能用px,所以可想而知,代码与布局已揉到了一起,这样工程量也大,维护也不容易。
针对以上这两种情况 ,是否有更好的建议,期待。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
个人在开发过程中是使用LinearLayout和RelativeLayout的结合的方式,在线性布局中多使用比重概念,这样在任何平台都是按某个比例显示。
1.是的,需要。维护起来很方便。体积不是主要问题,任何策略都有代价。
2.这只是细节和具体的技巧。不是方法。
3.尽量使用dp, dp解决不了可以使用dimens,针对不同的分辨率可以设置不同的元素尺寸,放在dimens.xml中。在代码中dp和px可以互相转换。
最后,平台无关性,这种抽象的理解,至少在我看来是一种错误,你需要更多的实践经验。无关性只是部分的无关性,意思是将可以和设备无关的部分提取出来,但是大部分UI设计是和设备有关的。尽量弄清楚android的自适应分辨率的机制。这套机制足以应付目前市面上的各种设备需求了。在弄懂已有的机制之前奢谈更大的设备无关性是徒劳的。
你的问题也是大家一直在纠结的问题,机型的适配是最酷B,最烦人的了。你上诉的第一种方法是技术上可行的,不过后期有修改的时候很难管理。
我个人觉得这个不仅仅是从我们程序这方面的去入手,产品美工都必须参与进来,现在很多东西手机平板,各种乱七八糟的机型分辨率都有。 产品设计,美工图片都是必须存在一定的可拓展性,例如图片尽量简洁,别包含一大堆乱七八糟的元素, 这样即使图片稍微拉伸一点,也不会让人感觉那么丑。。 如果产品设计的东西他只想到当前分辨率的效果,但是又让你去适配所有的分辨率,那简直就是扯淡。。
有点发牢骚了。。
我感觉尽量能适配机型分辨率的写法就是, 尽量已相对布局的思考方式去写,多用相对属性, 单位定义用dip,
位置大小的控制,以当前开发分辨为参考,用 android:layout_weight 去控制。 关于图片。。我举得宽和高 都能写成wrap_content就是最好的保证图片不变的写法,如果你发现不对你还以调整imageView 的android:scaleType,有几个值,你可以感受下。
个人愚见,请高人点播。。
Android官方有针对这个问题,开了一个专题来介绍,下面是我翻译的对应文章,希望对你有所帮助。
[【Android Advanced Training-01】适配不同的屏幕Lesson 1 - 支持不同的屏幕大小
[【Android Advanced Training-01】适配不同的屏幕Lesson 2 - 适配不同屏幕密度
[【Android Advanced Training-01】适配不同的屏幕Lesson 3 - 实现可适配的UI流程