android 屏幕适配

来源:互联网 发布:minecraft服务器优化 编辑:程序博客网 时间:2024/06/03 16:47
一、 基本概念:

屏幕大小 :物理屏幕的大小,看屏幕的对角线。

分辨率   :实际上是像素的总和。1280*720

dpi      :密度。(每英寸所展示的像素)

查看Android设备分辨率趋势: http://www.umindex.com/devices/android_resolutions    友盟

查看Android API:




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

缩放比例
l :m :h :x
3 :4  : 6 :8

mdpi 目录下有一张48*48像素的图片

48 / 4 = 12

ldpi 目录下图片的大小

12 * 3 = 36   即 36 x 36

hdpi 目录下图片的大小

12 * 6 = 72   即 72 x 72

ldpi 目录下图片的大小

12 * 8 = 96   即 96 x 96

 

一般是按照hdpi 大小进行切图 : 480*800 

为什么将480 x 800 图片放在hdip 目录下

因为根据勾股定理(例如:4.0寸屏幕)

800^2 + 480^2 = 4^2

     即:5x^2 + 3x^2 = 16

x = 0.6860

宽 3x = 2.058

高 5x = 3.43

每英寸有多少像素  480/宽  即 480/2.058 = 233    800/3.43 = 233   取相近值 240dpi


图片的适配:

1.可以在不同目录下放置不同尺寸的图片,即切3~5套图,一般不推荐使用(造成APP应用非常大)。

2.一般使用一套图片,放置在hdpi 目录下,(启动图则需要分别切不同尺寸的图)。

android 默认根据屏幕的大小去加载对应目录下的图片,如果没有,则去查找比它高一级目录下图片图片,如果都没有,则去加载低一级目录下的图片。


dimens.xml :  即在不同的屏幕尺寸下新建不同文件。如下:

注意:新建 values-1280x720 文件时,高在前,宽在后。


布局适配:根据屏幕尺寸的不同新建对应尺寸布局目录文件:如下


代码适配:

获取屏幕的宽和高:

<span style="white-space:pre"></span>DisplayMetrics displayMetrics = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);        int screenWidth = displayMetrics.widthPixels;        int screenHeight = displayMetrics.heightPixels;
        // 设置按钮宽度100%, 高度为10% ;      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(         <span style="white-space:pre"></span>LayoutParams.MATCH_PARENT,        <span style="white-space:pre"></span>(int)(screenHeight * 0.1f + 0.5f)); // 加上0.5f 提交精度      btn.setLayoutParames(params);


0 0