屏幕适配问题

1 基本概念:

屏幕大小 :物理屏幕的大小,看屏幕的对角线。
分辨率   :实际上是像素的总和。1280*720
dpi      :密度。(每英寸所展示的像素)

hdpi :480*800    ~240dpi
ldpi :320*240    ~120dpi
mdpi : 320*480    ~160dpi  (参照物)
xhdpi: 1280*720   ~320dpi

缩放比例
l :m :h :x
 3:4:6:8
 
如果drawable每个文件夹都有就加载文件夹的,如果没有就向上加载。例如mdpi就加载hdpi的。也就是只要有一个文件夹有,就会自动加载。

低分辨率的图片可以跑在高分辨率(大屏)的手机上,无非就是图片拉伸了,也就是说模糊了而已,
而如果是高分辨率的图片,放在小屏手机上,那么可能直接就崩了,或者显示不了。也就是向上兼容无非
就是模糊了,向下可能就会出问题,所以像素才选定为hdpi。

涉及到背景图片时,例如欢迎界面,那么就必须切两套图,不然肯定是会拉伸的。如果是一些其他
小图,就直接一套全部适配就可以了。  


通过java代码动态适配应该是最准确的。。


手机分辨率和像素的转换

package com.itheima.mobilesafe.utils;

import android.content.Context;

public class DensityUtil {  
	  
    /** 
     * 根据手机的分辨率从 dip 的单位 转成为 px(像素) 
     */  
    public static int dip2px(Context context, float dpValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (dpValue * scale + 0.5f);  
    }  
  
    /** 
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp==dip
     */  
    public static int px2dip(Context context, float pxValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (pxValue / scale + 0.5f);  
    }  
}
对于不同分辨率,布局文件必要时要分包。

屏幕适配问题_第1张图片

java代码适配

屏幕适配问题_第2张图片

layout布局适配

屏幕适配问题_第3张图片

weight权重比例适配

屏幕适配问题_第4张图片

配置在配置文件中,配置文件根据分辨率分包

屏幕适配问题_第5张图片

480*800的像素要放在mdpi这个文件夹下的原因:

mdpi的英寸为4.0英寸,根据计算,长为480px像素为2.058英寸,所以每英寸有233像素,而mdpi的像素是240,所以放在mdpi文件夹下

屏幕适配问题_第6张图片

屏幕适配问题_第7张图片

你可能感兴趣的:(屏幕适配问题)