了解开发手机的各项参数之显示屏

现在android手机越来越便宜了,所以开发的话用的最多的还是真机.作为一个程序员,如果拿着手机却在百度找手机的参数,这可不太好.

所以,让我们从程序员的角度来了解一下手机显示屏的参数.

public class MainActivity extends Activity {

	private TextView tv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);	
		setContentView(R.layout.activity_main);
		
		//获取显示屏实例
		Display d = getWindowManager().getDefaultDisplay();
		//将显示屏的信息转换成字符串
		String show = d.toString();
		
		//以逗号为分隔符对字符串断行,看起来舒服些
		StringBuffer sb = new StringBuffer();
		String[] strs = show.split(",");
		for(String str : strs)
		{
			sb.append(str+"\n");
		}
		
		//DisplayMetrics是一个描述显示屏一般信息(大小,密度,字体缩放等)的结构体
		DisplayMetrics dm = new DisplayMetrics();
		d.getMetrics(dm);
		
		//屏幕宽和高,单位是像素
		int width = dm.widthPixels;
		int height = dm.heightPixels;
		//屏幕每英寸像素点
		float xdpi = dm.xdpi;
		float ydpi = dm.ydpi;
		
		//计算宽和高是多少英寸
		float xInch = width / xdpi;
		float yInch = height / ydpi;
		
		//计算显示屏是多少英寸
		double screenInch = Math.sqrt(xInch * xInch + yInch * yInch);
		
		String sScreenInch = String.format("屏幕是 %.1f 英寸", screenInch);
		sb.append(sScreenInch);
		
		tv = (TextView)findViewById(R.id.show);
		tv.setText(sb.toString());
		
	}
}

下面是运行截图:


看到这些参数,应该有人已经猜到我用的是MX3了,吐槽下,手机太不经摔了,2次就摔花屏了鄙视


下面一一来说下参数的意思:

1. real 1080 x 1800 

这个简单,宽1080像素  高1800像素

2.density 440 (415.636 x 415.636)dpi  (dpi: dots per inch)

通用的算法是这样的,

像素密度density =  开方(1080平方+1800平方) / 屏幕英寸(这里是5.1)

那么结果是: 约等于412 dpi

难道是我数学不好?

换个方向算,若要density = 440,那么,计算过程应该是这样:

开方(1080平方+1920平方) / 5英寸 = 440 鄙视虚假宣传

3.ScaledDensity = 2.75

这个和开发就关系很大了,因为已知 屏幕像素密度是"440dpi"

那么 440 / 160 = 2.75 

为什么是除以160呢?

安卓规定,

屏幕密度是160dpi时 , 1dip = 1     px;

屏幕密度是240dpi时 , 1dip = 1.5 px;

屏幕密度是320dpi时 , 1dip = 2    px;


最后,算一下我这个手机屏幕宽高各是多少dp吧:

宽 :   1080 / 2.75 = 393 dp

高:    1800 / 2.75 = 655 dp

当然,实际计算布局高度的时候,还要减去通知栏和标题栏高度.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值