关于Android适配,按UI设计等比例缩放

本文介绍了如何解决Android适配问题,提出了一种根据UI设计等比例缩放的思路。通过获取缩放比例,利用反射访问ViewGroup的私有成员变量mChildren,遍历并缩放所有子视图。针对TextView及其衍生控件调整文本大小,处理padding和布局参数。适配方法包括在Activity的setContentView方法中以及ListView、GridView的Adapter中使用工具类进行布局缩放。虽然可能影响效率,但对于一般应用开发是可行的解决方案。
摘要由CSDN通过智能技术生成

做android开发,最另程序员头疼的事莫过于适配了,费时费力,仍不能兼顾所有机型;本人所在公司希望能

根据一套设计图(以ios为标准),在各分辨率设备上按宽度比例(高度也按宽度比例)缩放,之前用dp单位写布局

坐标,希望能自适应,很遗憾...;后来就试图在布局里直接写绝对坐标(px),再通过在程序中动态计算坐标进行

缩放,刚开始通过findViewById()找到使用绝对坐标的view,再做缩放,可以想想其效率和工作量...;出于程序员的

“惰性”,通过查看sdk源码,找到以下解决方案,进入正题:

取得缩放比例不难,随后上代码,要使整个视图层级全部进行缩放,就必须取得层级中的各个对象,但是sdk

提供给开发者拿子视图的方法,只有findViewById(),findViewByTag(),直接pass;在这种具有层次的结构中遍历所有

对象,很容易想到递归,遗憾的是google没有提供取得子View的方法;通过观察API,所以视图容器都继承了

ViewGroup,再看ViewGroup的源码,他有一个私有成员变量:private View[] mChildren; 就是它了,(还没理解

google为什么不提供访问它的接口),访问私有变量,自然还得是java的反射机制了,这便是关键,看代码:

完整源码见:http://www.oschina.net/code/snippet_992727_23980

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值