android随笔19——手机屏幕适配

手机屏幕适配

 

让应用在不同分辨率下的手机有较好的显示效果。

 

1. 图片适配: 根据手机的像素密度,选择不同drawable文件夹下的图片

2. dimens 尺寸 适配:根据手机的像素密度,选择不同values文件夹下的dimens

3. 布局适配:根据手机的像素密度,选择不同layout文件夹下的布局

4. 代码适配:通过代码动态指定控件大小,达到适配效果

5. 权重适配:layout_weight:巧妙利用权重进行适配(将屏幕宽高 等分)

 

 

像素密度: 单位尺寸内的像素大小  dpi   dipdp

 

红米 note  1280x720  5.5

 

像素密度:对角线的像素的多少/尺寸

 

1638400 + 518400 =  1468 (对角线的像素的多少)

 

1468/5.5 = 267 dpi 

 

 

xxdpi   与  像素密度dpi  关系

ldpi  ~120dpi

mdpi  ~16odpi

 drawable/values(默认资源)

hdpi  ~240dpi

xhdpi  ~320dpi

xxhdpi  ~480dpi

xxxhdpi  ~640dpi

 

 

1. 图片适配: 根据手机的像素密度,选择不同drawable文件夹下的图片

 

默认情况下,会根据手机像素密度,加载对应drawable文件夹下的图片  (手机mdpi--drawable-mdpi

 

在布局中使用同名文件图片,在不同的drawable下放入不同大小的a.jpg  (a:不同大小的相同的图片)

 

如果对应drawable文件夹下没有当前图片,会向上查找:mdpi没有,hdpi——xhdpi——————

 

如果向上找,找不到对应的图片,才会向下查找。

 

drawable  是 大于mdpi  小于hdpi  

 

在工作中,美工会给多套图片,放入对应的drawable文件夹下即可

 

 

2. dimens 尺寸 适配:根据手机的像素密度,选择不同values文件夹下的dimens

 

ldpi  1dp = 0.75px

mdpi  1dp = 1px

hdpi  1dp = 1.5px

xhdpi 1dp = 2.0px

 

hdpi   宽度 480px  , 一半 240px

 

160dp  * 1.5  = 240 px 

 

xhdpi   宽度 800px  一半  400 px = 200dp

 

160dp *2 = 320px  

 

使用dimens规则:

 

将布局中的dp抽取出来,放到dimens里即可。布局中通过@dimen/xxx调用

 

dp有一定的适配能力

 

在工作中,还是使用dp,如果测试时发现不视频的机型,针对某种机型,做dimens适配。

3. 布局适配:根据手机的像素密度,选择不同layout文件夹下的布局

 

谷歌推荐做法,当时公司不采用。layout布局编写非常麻烦,工作量大

 

layout-xhdpi  241-320dpi

 

layout-1280x720  :  某一个精确分辨率的手机适配

values-sw600dp  : 手机最小边框长度,如果大于等于600dp ,就会选择此文件夹下的资源

 

4. 代码适配:通过代码动态指定控件大小,达到适配效果 (不要出现具体的px值)

 

1. 根据手机屏幕来设置控件大小

 

 TextView textView = (TextView) findViewById(R.id.textview);

        //获取屏幕宽度

        int screenWidth = getResources().getDisplayMetrics().widthPixels;//屏幕宽度:px

        int textViewWidth = (int) (screenWidth*0.8);

        LayoutParams params = new LayoutParams(textViewWidth , LayoutParams.WRAP_CONTENT);

        textView.setLayoutParams(params);

 

2. dp-px (工具)

 

   /** 

                   * 若代码中出现了具体的数字,其单位是px 需要根据手机的分辨率从 dip                * 的单位 转成为 px(像素

    */  

    public static int dip2px(Context context, float dpValue) {  

        final float scale = context.getResources().getDisplayMetrics().density; //屏幕的密度dpi 

        return (int) (dpValue * scale + 0.5f);  

    }  

5. 权重适配:layout_weight:巧妙利用权重进行适配(将屏幕宽高 等分)

 

1. 屏幕平分

2. 将剩余控件分配给其中一个控件

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值