android 화면 길이 와 너비 구현 코드 가 져 오기(손 글씨)
4452 단어 안 드 로 이 드 화면길이 와 너비
// ( 1)
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // ( , :480px)
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // ( , :800p)
Log.e(TAG + " getDefaultDisplay", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// ( 2)
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // ( :0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // ( :120/160/240/320)
float xdpi = dm.xdpi;
float ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
screenWidth = dm.widthPixels; // ( , :480px)
screenHeight = dm.heightPixels; // ( , :800px)
Log.e(TAG + " DisplayMetrics(111)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// ( 3)
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density; // ( :0.75/1.0/1.5/2.0)
densityDPI = dm.densityDpi; // ( :120/160/240/320)
xdpi = dm.xdpi;
ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
int screenWidthDip = dm.widthPixels; // (dip, :320dip)
int screenHeightDip = dm.heightPixels; // (dip, :533dip)
Log.e(TAG + " DisplayMetrics(222)", "screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip);
screenWidth = (int)(dm.widthPixels * density + 0.5f); // (px, :480px)
screenHeight = (int)(dm.heightPixels * density + 0.5f); // (px, :800px)
Log.e(TAG + " DisplayMetrics(222)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
결 과 는 다음 과 같다.
E/== MyScreenActivity =================================== getDefaultDisplay( 8509): screenWidth=320; screenHeight=533
E/== MyScreenActivity =================================== DisplayMetrics( 8509): xdpi=156.3077; ydpi=157.51938
E/== MyScreenActivity =================================== DisplayMetrics( 8509): density=1.0; densityDPI=160
E/== MyScreenActivity =================================== DisplayMetrics(111)( 8509): screenWidth=320; screenHeight=533
E/== MyScreenActivity =================================== DisplayMetrics( 8509): xdpi=234.46153; ydpi=236.27907
E/== MyScreenActivity =================================== DisplayMetrics( 8509): density=1.5; densityDPI=240
E/== MyScreenActivity =================================== DisplayMetrics(222)( 8509): screenWidthDip=320; screenHeightDip=533
E/== MyScreenActivity =================================== DisplayMetrics(222)( 8509): screenWidth=480; screenHeight=800
분석 결과:onDraw()방법 에서 방법 1 과 2 가 일치 하고 모두 320*533 으로 테스트 기 i9000 의 화면 크기 방법 3 이 아니 라 방법 1 과 2 를 얻 은 결 과 를 density 에 곱 한 후,완벽 한 480*800,perfect!주:density 가 1 보다 큰 경우 targetSdkVersion 을 4-9 사이 에 설정 해 야 합 니 다.예 를 들 어