Android获取设备屏幕方法以及densitydpi和density的区别
2016-10-25 19:11
423 查看
density值表示每英寸有多少个显示点,与分辨率是两个概念。HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120 。 densitydpi:屏幕像素密度 一般计算公式为,由屏幕长宽的分辨率,根据勾股定律求出对角线的像素数,再除以屏幕的尺寸,即可得densitydpi.
// 通过WindowManager获取DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);System.out.println("heigth : " + dm.heightPixels);System.out.println("width : " + dm.widthPixels);// 通过Resources获取DisplayMetrics dm2 = getResources().getDisplayMetrics();System.out.println("heigth2 : " + dm2.heightPixels);System.out.println("width2 : " + dm2.widthPixels);// 获取屏幕的默认分辨率Display display = getWindowManager().getDefaultDisplay();System.out.println("width-display :" + display.getWidth());System.out.println("heigth-display :" + display.getHeight()); 可以看到,第一、第三种方法都用到了getWindowManager()这个方法,而第二种方法没有用getWindowManager()。有些网友说书写getWindowManager()后eclipse会报错,说没有getWindowManager()这个方法,这是什么原因呢?因为getWindowManager()这个方法是在类Activity中的,如果你自己编写的类不是继承于类Activity,那么必然在这个类中书写代码就不能用到getWindowManager()这个方法。所以当你自己编写的类不是继承于类Activity,那么就只能应用第二种方法获取手机屏幕的大小。
public class MainActivity extends Activity { private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView) findViewById(R.id.textView1); findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub text.setText(getScreenSize()); } }); } private String getScreenSize() { DisplayMetrics dm = new DisplayMetrics(); getWindow().getWindowManager().getDefaultDisplay().getMetrics(dm); int h = dm.heightPixels; int w = dm.widthPixels; float f = dm.density; int dens = dm.densityDpi; double wi = (double)w/dens; double hi = (double)h/dens; double x = Math.pow(wi, 2); double y =Math.pow(hi, 2); double screenInches = Math.sqrt(x+y); return "height:" + h + "\nwidth:" + w + "\ndensity:" + f+"\nscreenInches:"+screenInches+" \ndm:"+dm; } }<span style="color:#ff0000;"> </span>
相关文章推荐
- 不同Android版本设备正确获取屏幕分辨率的通用方法
- android获取设备屏幕大小的方法
- android获取设备屏幕大小的方法
- android获取设备屏幕大小的方法
- Android获取设备CPU核数以及内存大小的方法
- android获取设备屏幕大小的方法
- android获取设备屏幕大小的方法
- Android 获取设备屏幕大小的几种方法总结
- Android获取设备屏幕分辨率的方法
- android获取设备屏幕大小的方法
- android获取设备屏幕大小的方法
- Android获取设备屏幕大小的方法
- Android中获取LayoutInflater的三种方法以及区别
- android获取设备屏幕大小的方法
- android获取设备屏幕大小的方法
- android获取设备屏幕大小的方法
- Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法
- 不同Android版本设备正确获取屏幕分辨率的通用方法
- android获取设备屏幕大小的方法
- android获取设备屏幕大小的方法