当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > 简单分析下drable
简单分析下drable
时间:2016-12-14作者:华清远见

在做android开发的时候,在res下会有drawable(-*)文件夹,如图所示

对于将何种分辨率的资源放到哪个文件夹下,对于刚刚接触android开发者来说造成一定的困扰。这些文件该怎么放?

首先,我们需要弄清一个问题----什么是dpi?

dpi是“dot per inch”的缩写,每英寸像素数。四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high),一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。

其次,dpi是如何计算的?

dpi=对角线的像素值/尺寸。可以通过代码获取,如下:

public class MainActivity extends Activity {
                TextView tvOne, tvTwo, tvThree, tvFour;
                @Override
                protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.activity_main);
                        tvOne = (TextView) findViewById(R.id.one);
                        tvTwo = (TextView) findViewById(R.id.two);
                        tvThree = (TextView) findViewById(R.id.three);
                        tvFour = (TextView) findViewById(R.id.four);

                        DisplayMetrics metric = new DisplayMetrics();
                        getWindowManager().getDefaultDisplay().getMetrics(metric);
                        int width = metric.widthPixels;         // 屏幕宽度(像素)
                        int height = metric.heightPixels;         // 屏幕高度(像素)
                        float density = metric.density;         // 屏幕密度(0.75 / 1.0 / 1.5)
                        int densityDpi = metric.densityDpi;         // 屏幕密度DPI(120 / 160 / 240)

                   &nbnbsp;    tvOne.setText("屏幕宽度(像素) " + width);
                        tvTwo.setText("屏幕高度(像素)) " + height);
                        tvThree.setText("屏幕密度(0.75 / 1.0 / 1.5) " + density);
                        tvFour.setText("屏幕密度DPI(120 / 160 / 240) " + densityDpi);
                }
        }

后,系统是怎么做的?

android会根据屏幕本身的尺寸与密度特性,自动载入对应文件夹下的资源,并把它们从dip转换成屏幕上的物理像素。

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)