2012-10-20 2 views
0

OnDraw 메서드를 사용하여 캔버스에 직사각형을 그려서지도를 만들었습니다. 삼성 s2에서 완벽하게 작동했지만 s3에 캔버스를 설치하면 캔버스가 너무 작아 보입니다. 어떻게해야합니까?캔버스 레이아웃이 제대로 작동하지 않습니다.

나는 표면보기를 사용하여 직사각형을 그렸습니다.

답변

0

갤럭시 S2는 hdpi이고 S3는 xhdpi이므로 사각형이 조금 더 작게 나타나는 이유는 아마도이 때문입니다. onMeasure를 재정의 (override) 한 다음 캔버스의 현재 높이와 너비를 기준으로 사각형의 높이와 너비를 설정하는 것이 좋습니다.

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
int parentViewWidth = MeasureSpec.getSize(widthMeasureSpec); 
int parentViewHeight = MeasureSpec.getSize(heightMeasureSpec); 
// ... take into account the parent's size as needed ... 
super.onMeasure(
    MeasureSpec.makeMeasureSpec(newWidth, MeasureSpec.EXACTLY), 
    MeasureSpec.makeMeasureSpec(newHeight, MeasureSpec.EXACTLY)); 

}

편집 : 그냥 당신이 당신의 사각형을 그려보기하지 서피스 뷰 SurfaceView를 사용했다 깨달았다. onDraw에서 캔버스의 현재 높이와 너비를 가져오고 직사각형의 고정 된 치수를 하드 코딩하는 대신 이러한 치수를 기반으로 사각형을 그립니다. 희망이

+0

나는 이미 가장 짧은 경로 분석을하고있다 사각형 좌표 coz와 별도의 데이터베이스를 구현했습니다. 그래서 어떤 이유로 든 직사각형 좌표를 변경할 수 없습니다. 나는 직사각형 좌표를 검색하는 웹 서비스를 가지고있다. 그것은 S2에 완벽하게 작동 ..하지만 S3 : (그리고 나는 그것을 고칠 수있는 방법을 몰라! – Ruby

관련 문제