화면 너비와 높이를 얻는 방법
다음 코드를 사용하여 Android 앱 개발에서 화면 너비와 높이를 얻으려고했습니다.
Display display = getWindowManager().getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
하지만 내 , 왜 NullPointerException 이 발생 display
합니까? 화면 너비와 높이를 얻는 방법은 무엇입니까?
Activity 외부에서 이것을 호출하는 경우 컨텍스트를 전달해야합니다 (또는 다른 호출을 통해 가져와야합니다). 그런 다음이를 사용하여 디스플레이 메트릭을 가져옵니다.
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
업데이트 : API 레벨 17 이상에서는 다음을 사용할 수 있습니다 getRealSize
.
Point displaySize = new Point();
activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize);
사용 가능한 창 크기 를 원하는 경우 getDecorView
실제 표시 크기에서 장식보기 크기를 빼서 사용 가능한 영역을 계산할 수 있습니다.
Point displaySize = new Point();
activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize);
Rect windowSize = new Rect();
ctivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(windowSize);
int width = displaySize.x - Math.abs(windowSize.width());
int height = displaySize.y - Math.abs(windowSize.height());
return new Point(width, height);
getRealMetrics
작동 할 수도 있지만 (API 레벨 17 이상 필요) 아직 시도하지 않았습니다.
DisplayMetrics metrics = new DisplayMetrics();
activity.GetWindowManager().getDefaultDisplay().getRealMetrics(metrics);
활동 내에서 다음을 호출 할 수 있습니다.
int width = this.getResources().getDisplayMetrics().widthPixels;
int height = this.getResources().getDisplayMetrics().heightPixels;
뷰에있을 때 먼저 컨텍스트를 가져와야합니다.
int width = getApplicationContext().getResources().getDisplayMetrics().widthPixels;
int height = getApplicationContext().getResources().getDisplayMetrics().heightPixels;
이는 API 1부터 사용 가능한 모든 Android 버전에서 작동하며 더 이상 사용되지 않습니다.
서비스에서 :
Display display= ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
이것이 마침내 나를 위해 일한 것입니다.
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
context.getResources().getDisplayMetrics()
사용 가능한 컨텍스트가 있으면 통해 시도하십시오 .
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
나는 당신이 작성한 코드가 더 이상 사용되지 않는 것 같습니다.
if (Build.VERSION.SDK_INT >= 11) {
Point size = new Point();
try {
this.getWindowManager().getDefaultDisplay().getRealSize(size);
screenWidth = size.x;
screenHeight = size.y;
} catch (NoSuchMethodError e) {
screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();
screenWidth=this.getWindowManager().getDefaultDisplay().getWidth();
}
} else {
DisplayMetrics metrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
}
다음 코드를 사용하여 화면의 너비와 높이를 얻으십시오.
int widthOfscreen =0;
int heightOfScreen = 0;
DisplayMetrics dm = new DisplayMetrics();
try {
((Activity) context).getWindowManager().getDefaultDisplay()
.getMetrics(dm);
} catch (Exception ex) {
}
widthOfscreen = dm.widthPixels;
heightOfScreen = dm.heightPixels;
WindowManager w = getWindowManager();
Display d = w.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
d.getMetrics(metrics);
Log.d("WIDTH: ", String.valueOf(d.getWidth()));
Log.d("HEIGHT: ", String.valueOf(d.getHeight()));
/*
*DisplayMetrics: A structure describing general information about a display, such as its size, density, and font scaling.
* */
DisplayMetrics metrics = getResources().getDisplayMetrics();
int DeviceTotalWidth = metrics.widthPixels;
int DeviceTotalHeight = metrics.heightPixels;
int scrWidth = getWindowManager().getDefaultDisplay().getWidth();
int scrHeight = getWindowManager().getDefaultDisplay().getHeight();
Display display = getActivity().getWindowManager().getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
Log.d("Tag", "Getting Width >> " + screenWidth);
Log.d("Tag", "Getting Height >> " + screenHeight);
이것은 내 응용 프로그램에서 제대로 작동했습니다.
기능을 사용하는 다른 방법
private int[] getScreenSIze(){
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int h = displaymetrics.heightPixels;
int w = displaymetrics.widthPixels;
int[] size={w,h};
return size;
}
버튼 클릭 또는 생성 기능에 다음 코드를 추가하십시오.
int[] screenSize= getScreenSIze();
int width=screenSize[0];
int height=screenSize[1];
screenSizes.setText("Phone Screen sizes \n\n width = "+width+" \n Height = "+height);
답변 미만 지원 API 레벨 10 미만 및 이상
if (Build.VERSION.SDK_INT >= 11) {
Point size = new Point();
try {
this.getWindowManager().getDefaultDisplay().getRealSize(size);
screenWidth = size.x;
screenHeight = size.y;
} catch (NoSuchMethodError e) {
screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();
screenWidth=this.getWindowManager().getDefaultDisplay().getWidth();
}
} else {
DisplayMetrics metrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
}
참조 URL : https://stackoverflow.com/questions/6520718/how-to-get-screen-width-and-height
'programing' 카테고리의 다른 글
프로그래밍 방식으로 iPhone 인터페이스 방향을 결정하는 방법은 무엇입니까? (0) | 2021.01.16 |
---|---|
Django 관리자 이미지 필드에서 이미지 표시 (0) | 2021.01.16 |
nginx로 모든 요청을 index.php에 다시 작성하십시오. (0) | 2021.01.16 |
방법 내 방법 (0) | 2021.01.16 |
Ruby 배열의 홀수 (또는 짝수) 항목 (0) | 2021.01.16 |