2011-09-01 1 views
0

나는 아직도이 문제에 관해 문제가 있습니다.게임용 크기가 다른 화면 - 안드로이드

기본적으로 캔버스를 사용하여 게임의 이미지를 그릴 때 픽셀 값을 하드 코딩하고 있습니다.

분명히 한 화면의 픽셀 값이 다른 화면에서 제대로 실행되지 않으므로이 게임을 모든 화면 크기에 적합하게 만드는 프로세스에 대해 어떻게 생각합니까? 사전에

덕분에

+0

http://stackoverflow.com/questions/7061258/multiple-screen-resolutions-aspect-ratios-games – Phil

답변

1

왜 픽셀 값을 필요합니까? dp가 아닌 px 값을 사용하십시오 !!

final float scale = getContext().getResources().getDisplayMetrics().density; 
int px = (int) (dp * scale + 0.5f); 

DP 밀도 독립형 픽셀 - 화면 물리적 밀도에 기반한 추상적 단위. 이 단위는 160dpi (인치당 도트 수) 화면과 관련이 있으므로 화면 밀도가 이 아니어도 160dp는 항상 1 인치입니다. dp-to-pixel의 비율은 밀도가 화면 일 때 변경되지만 반드시 비율은 아닙니다. 레이아웃에서 뷰 치수를 지정할 때이 단위를 단위로 사용해야하므로 UI ​​ 은 다른 화면에서 동일한 실제 크기로 렌더링되도록 올바르게 축척됩니다. ("dp"가 "sp"와 더에도 불구하고, 컴파일러는 "딥"와 "DP"모두 받아들입니다.)

+0

캔버스로 그리는 방법은 무엇입니까? –

1

화면 크기를 얻기 위해 다음을 사용할 수 있어야합니다 :

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 

그럼 당신이 맞는 볼 무엇을 결정 - 캔버스 화면의 일부인 경우 등, 큰 입술에 직접 그릴에 맞게

을 원래 해상도를 스트레칭 추적의 상대적인 위치를 왼쪽 상단에 놓고 그에 따라 위치/크기를 조정합니다.