2014-04-30 1 views
0

안녕을 감지 그래서 화면의 폭과 높이를 얻을 필요가있다. 내가 예를내가 모든 화면 크기에 내 응용 프로그램에 맞게하고 싶은 장치의 화면 크기

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels 

이 코드를 사용하는 경우 그것은 나에게 태블릿에 대해 동일한 dimentions와 작은 전화를 제공하는 상황이 발생할 수 있습니다 하지만 그것은 나에게 픽셀을 제공합니다. 실제 화면 크기를 얻으려면 어떻게해야합니까?

와 다른 것은, 내가 그것을 잘 작동하지만 태블릿에 비트 맵 내가 화면 크기에 따라 크기를 조절할 수있는 방법을 너무 작은 비트 맵으로 내 휴대 전화에서 내가 만든 게임을?

+0

두 번째 질문은 텍스트에 숨겨진 비트입니다. 별도로 요청하는 것이 좋습니다. – Zielony

답변

-1

노력이 :

Display display = activity.getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    int width = size.x; 
    int height = size.y; 
+0

api 17 이상부터 표시 사용 안 함 – user3419789

+0

@ user3419789 내가 실수 한 것 같아요. API 레벨 1에 추가되었습니다 : http://developer.android.com/reference/android/view/Display.html –

-1

당신이 코드와 화면 크기를 얻을 수 있습니다 :

public int getScreenHeight() { 
    return getDisplay().getHeight(); 
    } 
private Display getDisplay() { 
    return ((WindowManager) getContext().getSystemService(
     Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    } 
public int getScreenWidth() { 
    return getDisplay().getWidth(); 
} 
1

당신은 화면 밀도와 픽셀 크기가 필요합니다. (픽셀 수)/(인치당 도트 수)는 화면 크기를 인치로 나타냅니다.

은 참조 : 두 번째 질문에 대한 getting the screen density programmatically in android?

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels 
int realWidth = (int)((float)width/metrics.density); 
int realHeight = (int((float)height/metrics.density); 

대답은 어떻게 당신이 당신의 비트 맵을로드에 따라 달라집니다. 여러 장치에 대해 여러 크기를 제공해야합니다. 그런 다음 기본 제공 스케일링 메커니즘을 사용할 수 있습니다. 비트 맵을 일치하는 드로어 블 (dpi) - (화면 크기) 폴더에 넣기 만하면됩니다. 다른 방법으로 자산 폴더에서 이미지를로드하고 필요한 경우 크기를 조정해야합니다.

-1

시도해보십시오.

는에서 onCreate() 메소드에이를 추가합니다. 포인트를 선언하십시오!

WindowManager wm = ((WindowManager) getSystemService(WINDOW_SERVICE)); 
    Display display = wm.getDefaultDisplay(); 
    point = getDisplaySize(display); 

// 여기에 장치의 크기를 얻을 수있는 방법이다.

비트 맵을 태블릿에 너무 작은 게재 될 두번째 문제에 대한
@Deprecated 
@SuppressLint("NewApi") 
private static Point getDisplaySize(final Display display) { 
    final Point point = new Point(); 
    try { 
     display.getSize(point); 
    } catch (java.lang.NoSuchMethodError ignore) { // Older device 
     point.x = display.getWidth(); 
     point.y = display.getHeight(); 
    } 
    return point; 
} 
1

, 이 높은를 사용하십시오 각 폴더 (hdpi에, MDPI, xhdpi, xxhdpi)에서 그 이미지를 배치 한 후 구 패치 이미지를 시도하고 그렇지 않으면 이미지가 늘어납니다 (품질이 좋지 않습니다). 당신은 아홉 여기에서 이미지를 패치 할 수도 nine patching image

+0

나는 그것을하려했지만 이미지를 더 작게 만듭니다. 그리고 mdpi가 더 작은 이미지라면 문제가 있습니다. hdpi보다 mdpi가있는 태블릿과 작은 전화기가 있다면 어떻게 될까요? 크기가 맞지 않습니다 – user3419789

+0

원본 이미지가 작 으면 분명히 이미지가 작게 표시되고 다른 것은 해당 이미지에 대해 가중치를 지정하는 것입니다. –

관련 문제