android屏幕试配,告诉你为什么安卓切图要出两套

一、我们先看看安卓里面有几种单位

1.dp(dip):density-independent pixels,这并不是一个绝对的单位,而只是一个相对的概念,代表的是屏幕写对角线上每inch上像素点的个数。

       2.px:就是一个像素

       3.sp:scaled pixels,主要用于显示文字的大小,google官方推荐使用这一单位,因为察看TextView的源码可知Android默认使用sp作为字号单位。

       4.pt:point,一个pt=1/72(inch);

       5.in:inch(英寸)

       6.mm:毫米

二、明确几个概念

1.屏幕尺寸:手机屏幕斜对角线的长度,单位inch

2.屏幕密度(dpi):dot per inch,计算方式:(h^2+w^2)开方/屏幕尺寸

3.分辨率:一个物理屏幕上总的像素点数,如1280x720。

三、接下来看段源码,在android源码包TypedValue.java中,我们看如下函数:

    public static float applyDimension(int unit, float value,

                        DisplayMetrics metrics)

   {

        switch (unit) {

        case COMPLEX_UNIT_PX:

            return value;

        case COMPLEX_UNIT_DIP:

            return value * metrics.density;

        case COMPLEX_UNIT_SP:

            return value * metrics.scaledDensity;

        case COMPLEX_UNIT_PT:

            return value * metrics.xdpi * (1.0f/72);

        case COMPLEX_UNIT_IN:

            return value * metrics.xdpi;

        case COMPLEX_UNIT_MM:

            return value * metrics.xdpi * (1.0f/25.4f);

        }

        return 0;

    }


metrics.density:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;

metrics.scaledDensity:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;

metrics.xdpi:默认值为DENSITY_DEVICE;

DENSITY_DEVICE:屏幕密度

DENSITY_DEFAULT:默认值为160

四、因此我们可以通过计算得到大致数据如下

*注意:xxhdpi原本是google官方留给平板的,所以其实这里把1080X1920屏幕的手机放在xxhdpi下是不合适的。目前市场上的1080X1920的手机屏幕尺寸基本都在5以上,所以实际上这些手机的屏幕密度是达不到480dpi的,因此在这里我们建议同志们在做1080X1920手机屏幕适配时按照xhdpi即可。

总结:1.切图应该出两套,即480*800下一套,720*1280下一套。

           2.dimens适配如果用dp来写,320X480还有480X800可以用一套dp,而720X1280及1080X1920的用一套




  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用蓝湖切图适配不同机型的一些代码实现方式: 1. 使用不同分辨率的资源文件 在res目录下新建drawable、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等子目录,分别存放不同分辨率的图片资源文件。在布局文件或代码中引用图片时,系统会自动选择合适分辨率的资源文件进行加载。示例代码如下: ``` <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/my_image" /> ``` 2. 使用dp作为尺寸单位 在布局文件中使用dp作为尺寸单位,可以保证在不同分辨率的设备上显示效果基本一致。示例代码如下: ``` <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16dp" android:text="Hello World!" /> ``` 3. 使用代码动态设置布局参数 在代码中可以使用代码动态设置布局参数,根据不同机型的屏幕尺寸和分辨率进行适配。示例代码如下: ``` // 获取屏幕宽度和高度 DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); int screenWidth = displayMetrics.widthPixels; int screenHeight = displayMetrics.heightPixels; // 动态设置View的宽度和高度 View view = findViewById(R.id.my_view); ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); layoutParams.width = screenWidth / 2; layoutParams.height = screenHeight / 3; view.setLayoutParams(layoutParams); ``` 4. 使用代码动态加载不同分辨率的图片 在代码中可以使用代码动态加载不同分辨率的图片,根据不同机型的屏幕分辨率进行适配。示例代码如下: ``` // 获取屏幕密度 float density = getResources().getDisplayMetrics().density; // 动态加载不同分辨率的图片 if (density <= 1.0f) { imageView.setImageResource(R.drawable.my_image_mdpi); } else if (density <= 1.5f) { imageView.setImageResource(R.drawable.my_image_hdpi); } else if (density <= 2.0f) { imageView.setImageResource(R.drawable.my_image_xhdpi); } else { imageView.setImageResource(R.drawable.my_image_xxhdpi); } ``` 以上是一些常用的适配代码实现方式,根据实际需求和机型适配情况,可以进行相应的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值