您的位置:首页 > 其它

获取手机屏幕宽高 dp|px互转

2016-12-09 10:06 274 查看
package com.rivc.myapplication;

import android.content.Context;
import android.graphics.Point;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;

public class MainActivity extends AppCompatActivity {

private int width;
private int height;
private static float density = 0f;
private static float defaultDensity = 1.5f;// 高分辨率的手机density普遍接近1.5

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Display display = this.getWindowManager().getDefaultDisplay();
Point size = new Point();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
display.getSize(size);
width = size.x;
height = size.y;
} else {
width = display.getWidth();
height = display.getHeight();
}

Log.e("px", "width: " + width + "      height: " + height);

Log.e("dp by px2dp", "width: " + px2dp(this, width) + "      height: " + px2dp(this, height));

Log.e("px by dp2px", "width: " + dp2px(this, px2dp(this, width)) + "        height: " + dp2px(this, px2dp(this, height)));

}

public static int px2dp(Context context, float pxValue) {
int dp;
if (density == 0) {
if (context != null) {
density = getDensity(context);
}
if (density == 0) {
density = defaultDensity;
}
}
dp = (int) (pxValue / density + 0.5f);
return dp;
}

public static int dp2px(Context context, float dpValue) {
int px;
if (density == 0) {
if (context != null) {
density = getDensity(context);
}
if (density == 0) {
density = defaultDensity;
}
}
px = (int) (dpValue * density + 0.5f);
return px;
}

public static float getDensity(Context context) {
return context.getResources().getDisplayMetrics().density;
}
}


转发的请标明出处,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  屏幕宽高 dp px