一个简单粗暴的屏幕适配
来源:互联网 发布:火狐浏览器打不开淘宝 编辑:程序博客网 时间:2024/05/19 07:09
由于Android碎片化严重,屏幕适配一直是开发中较为头疼的问题。面对市面上五花八门的屏幕大小与分辨率,Android基于dp与res目录名称来适配的方案已无法满足一次编写全屏幕适配的需求,为了达到最优的视觉效果,开发过程中总是需要花费较多资源进行适配。也有开发者给出了一些自己的解决方案。
使用姿势:
核心。使用冷门的pt作为长度单位,按照上述想法将其重定义为与屏幕大小相关的相对单位,不会对dp等常用单位的使用造成影响。
绘制。编写xml时完全对照设计稿上的尺寸来编写,只不过单位换为pt。假如设计图宽度为200,一个控件在设计图上标注的长度为3,只需要在初始化时定义宽度为200,绘制该控件时长度写为3pt,那么在任何大小的屏幕上该控件所表现的长度都为屏幕宽度的3/200。如果需要在代码中动态转换成px的话,使用
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PT, value, metrics)
。预览。实时预览时绘制页面是很重要的一个环节。以1334x750的设计图为例,为了实现于正常绘制时一样的预览功能,创建一个长为1334磅,宽为750磅的设备作为预览,经换算约为21.5英寸(
(sqrt(1334^2+750^2))/72
)。预览时选择这个设备即可。
使用方法: 在build.gradle中加入依赖:
compile 'com.bulong.rudeness:rudeness:latest.release@aar'
在Application的onCreate中引用:
//设计图标注的宽度int designWidth = 750;new RudenessScreenHelper(this, designWidth).activate();这样绘制出来的页面就跟设计图几乎完全一样,无论大小屏上看起来就只是将设计图缩放之后的结果。
SDK API Refrences:
public class RudenessScreenHelper { /** * 转换dp为px * @param context context * @param value 需要转换的dp值 * @return px值 */ public static float dp2px(Context context, float value); /** * 转换pt为px * @param context context * @param value 需要转换的pt值,若context.resources.displayMetrics经过resetDensity()的修改则得到修正的相对长度,否则得到原生的磅 * @return px值 */ public static float pt2px(Context context, float value); /** * 构造方法 * @param application application * @param width 设计稿宽度 */ public RudenessScreenHelper(Application application, float width); /** * 激活本方案 */ public void activate(); /** * 恢复系统原生方案 */ public void inactivate();}
原文链接请戳这里
、、
阅读全文
0 0
- 一个简单粗暴的屏幕适配
- 简单粗暴安卓全屏幕适配
- Android获取当前屏幕截图,简单粗暴!
- 一个解决socket阻塞简单粗暴的方法
- 一个简单粗暴的前后端分离方案
- 一个简单粗暴的前后端分离方案
- 简单粗暴的理解KMP
- 简单粗暴的MHA部署
- 简单粗暴----RecyclerView的使用
- vim简单粗暴的配置
- 简单粗暴的切面实战
- 简单而粗暴的LeakCanary
- 简单粗暴的理解Promise
- 简单粗暴的时间轴
- 简单粗暴直面实现一个Memcpy函数
- Android:Android 6.0+权限适配--简单粗暴
- 一个简单粗暴的方法让后台数据改变的时候app端自动更新
- Android中遇到问题时的解决方案:突出一个简单粗暴!Android Activity泄漏问题解决方案
- Callable,Runnable比较及用法
- C++ 闭包(closure)
- 常用的一些GIT指令
- SVN is already locked.
- allegro学习之绘制板框的时候定位孔如何放置以及对板边的距离为多少合适
- 一个简单粗暴的屏幕适配
- POJ-2387-Til the Cows Come Home [最短路]
- 面试相关
- 【LEDE】树莓派上玩LEDE终极指南-99-编译psutil,安装thefuck
- Excel常见神器的另类新解 “条件格式”OR“自定义数字格式”
- C++基础---友元
- camera2 (api2)打开预览过程(二)
- JVM(Java虚拟机)优化大全和案例实战
- android使用fir.im实现版本更新