public void getAndroiodScreenProperty() { WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; // 屏幕宽度(像素) int height = dm.heightPixels; // 屏幕高度(像素) float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5) int densityDpi = dm.densityDpi; // 屏幕密度dpi(120 / 160 / 240) // 屏幕宽度算法:屏幕宽度(像素)/屏幕密度 int screenWidth = (int) (width / density); // 屏幕宽度(dp) int screenHeight = (int) (height / density);// 屏幕高度(dp) Log.d("h_bl", "屏幕宽度(像素):" + width); Log.d("h_bl", "屏幕高度(像素):" + height); Log.d("h_bl", "屏幕密度(0.75 / 1.0 / 1.5):" + density); Log.d("h_bl", "屏幕密度dpi(120 / 160 / 240):" + densityDpi); Log.d("h_bl", "屏幕宽度(dp):" + screenWidth); Log.d("h_bl", "屏幕高度(dp):" + screenHeight); }
2. 根据实际屏幕的宽度/设计稿的宽度,就是对应的比例 , 注意:屏幕的密度
设计比例 = 屏幕的宽度(dp) / (设计稿的宽度(px) / 屏幕密度)
实际引用的时候如果用dp适配,则要注意得到 ( 设计图 (px) / 屏幕密度) * 设计比例
如果看不明白第二条,则直接看栗子 :)
举个例子: 设计图比例是: 1080px * 720px
要设备的屏幕是 1080dp * 720 dp ,则如果用dp适配即是 1 比 1 适配
比如:设计图的 dialog 的宽度是800px, 则开发的布局文件xml中的dialog 的width 就是 800dp