2014-03-13 5 views
0

예, DisplayMetrics을 사용할 수 있지만 일부 장치에서는 widthPixels 회원이 잘못된 값 (적어도 하나의 전화가 있음)이 문제라는 것입니다. setting 페이지의 해상도는 1280 * 720이지만 widthPixelsDisplayMetrics 600 및 heightPixels는 또한 I는 getRealSize 시도 1067내 장치의 "실제"해상도를 어떻게 얻을 수 있습니까?

이고 반환 된 값이 정확하다. 하지만 결국 나는 내 휴대 전화의 "실제"너비가 640 (그리고 높이도 다른 숫자라고 생각합니다)이라는 것을 알았습니다.

굉장! 여기서 정말로 무슨 일이 일어나고있는거야?

편집 : DisplayMetrics

바로 여기에 일부 데이터 widthPixelsheightPixels는 1067

내가 모든 방법을 시도했지만 모두 작동하지 않는 한 600 density은 1.6입니다. 정답을 너무 쉽게 찾을 수 있다면 여기에 내 질문을 게시 할 필요가 없습니다. 이 디바이스는 중국에서 만든, HN3-U01입니다

이 코드를 사용할 수 있습니다
+0

왜 'width'로 영역을 뺍니까? 600은 세로로 장치 너비입니다 – suitianshi

+0

Bhanu의 대답을 확인하십시오. 맞습니다. – Sushil

답변

0

..

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

나는 이것을 포함하여 많은 접근법을 시도했다. 하지만 작동하지 않습니다 – suitianshi

0
// Get device resolution 



int width = 0; 
int height = 0; 
Point size = new Point(); 
WindowManager w = getWindowManager(); 

if (Build.VERSION.SDK_INT >= 13) 
{ 
    w.getDefaultDisplay().getSize(size); 
    width = size.x; 
    height = size.y; 
} 
else 
{ 
    Display display = getWindowManager().getDefaultDisplay(); 
    width = display.getWidth(); 
    height = display.getHeight(); 
} 

때문에 getWidth()와 getHeight() 메서드는이와 API level 13

+0

나는 이것을 포함하여 많은 접근 방식을 시도했습니다. 하지만 작동하지 않습니다 – suitianshi

0

시도 후 사용되지

private DisplayMetrics metrics; 
    private int widthPixels; 
private float scaleFactor; 
private float widthDp; 
    metrics = new DisplayMetrics(); 

    getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); 

    int density= getResources().getDisplayMetrics().densityDpi; 

    widthPixels = metrics.widthPixels; 

    scaleFactor = metrics.density; 

    widthDp = widthPixels/scaleFactor; 
+0

나는 이것을 포함하여 많은 접근 방식을 시도했습니다. 하지만 작동하지 않습니다 – suitianshi

+0

내 측면에서 자사의 작품 –

+0

예, 위의 모든 답변은 정확하지만 내 장치에 내 편집을 참조하십시오. – suitianshi

관련 문제