Android开发

Android 小技巧之屏幕适配

2021-06-07  本文已影响0人  Kevin_小飞象

推荐1倍效果图,即采用 720 * 360 大小( 1280 *720:两倍图 \ 1920 * 1080: 三倍图),最主要的原因就是1px = 1dp,效果图标多大的 px,布局就写多大 dp。

定义

  1. 每英寸中的像素数。
  2. 假如设备分辨率为320*240,屏幕长2英寸宽1.5英寸,dpi=320/2 = 240/1.5 =160。
  3. 对应于DisplayMetrics类中属性densityDpi的值。
  4. 当然这种宽和高的dpi都相同的情况现在已经很少见。
public class Dp2Px {
    public static int dp2px(Context context, int dp) {
        return (int) (dp * context.getResources().getDisplayMetrics().density + 0.5);
    }

    public static int px2dp(Context context, int px) {
        return (int) (px / context.getResources().getDisplayMetrics().density + 0.5);
    }
}

常见设备的dp、px、density的关系

density:0.75
分辨率:240*320 
关系:dp = px / 0.75
density:1
分辨率:320 * 480
关系:dp = px / 1
density:1.5
分辨率:480 * 800
关系:dp = px / 1.5
density:2.0
分辨率:720 * 1280 
关系:dp = px / 2
density:3
分辨率:1080 * 1920 
关系:dp = px / 3
//以1280*720为基准:
//获取手机屏幕的宽和高
int widthPixels = getResources().getDisplayMetrics().widthPixels;
int heightPixels = getResources().getDisplayMetrics().heightPixels;
//density
float density = getResources().getDisplayMetrics().density;
//dpi
int densityDpi = getResources().getDisplayMetrics().densityDpi;
//1dp = 多少px
int px = Dp2Px.dp2px(this, 1);
//1px  = 多少dp
int dp = Dp2Px.px2dp(this, 1);
E/MainActivity: widthPixels: 720
E/MainActivity: heightPixels: 1280
E/MainActivity: density: 2.0
E/MainActivity: densityDpi: 320
E/MainActivity: px:2
E/MainActivity: dp:1

适配

  1. 图片适配
drawable-ldpi :低分辨率(用的少了,一般不再用)
drawable-mdpi:中分辨率
drawable-hdpi:高分辨率
drawable-xdpi:较高分辨率
drawable-xxdpi:超级高分辨率
drawable-xxxhpi:顶级分辨率
  1. 今日头条适配
  1. 添加依赖:
implementation 'me.jessyan:autosize:1.2.1'
  1. 在 AndroidManifest.xml 中配置参数
<!-- 如果您项目中的所有页面都只需要以高或宽中的一个作为基准进行适配的话, 那就只需要填写高或宽中的一个设计图尺寸即可 -->
<manifest>
    <application>    
        ...
        <meta-data
            android:name="design_width_in_dp"
            android:value="360"/>
        <meta-data
            android:name="design_height_in_dp"
            android:value="640"/>      
        ...
     </application>           
</manifest>
  1. 参考 Demo
上一篇 下一篇

猜你喜欢

热点阅读