一直都在关注问题。只要听说哪里有什么好的适配方法都会去看一看。
期间用过很多大神的黑科技
http://blog.csdn.net/i7788/article/details/44937277 用不同的dimen来设置宽高。他的jar包是用的宽度做基准。不过改一改还是可以用的。
https://github.com/hongyangAndroid/AndroidAutoLayout 鸿洋大神的自动布局。把你写的px值根据屏幕实际大小进行缩放。
他们原理都是用px进行等比例缩放。鸿洋大神的库有很多坑要爬,有些属性没有比如drawablepadding 、 行间距。不能正常监听键盘弹出。和databinding混合使用是否会有坑?
所以我想找有没有更好的办法。
又绕了回来。
还是用dp sp 适配吧。特殊情况特殊处理!
我们本来就不应该花太多的时间来琢磨这个。我们更需要关注业务。android已经给我推荐了方法了,照到做就行了。适配的事情还是交给android来做吧。
就用dp! 把设计图上标的px,转成dp。设置到xml上就ok了
具体1dp转成多少px看ppi。一般对于手机来说:
在Android中,规定以160dpi(即屏幕分辨率为320x480)为基准:1dp=1px
从上面图看。1920*1080的设计图。(这里的dpi是用的参考的dpi,不一定就是实际手机的dpi)1dp换算成3px就ok , 720p的设计图 1dp换算成2px。
当然不能完全依靠这个,还需要结合linearlayout,realativelayout等的规则做限制。就更好了。
对于pad来说。上面这幅图就不够看了。因为有可能一个2560*1600的pad 他的dpi可能只有xhdpi。
所以还是要自己掌握这个换算公式。