2013-06-22 5 views
0

내 응용 프로그램은 다음과 같이하도록되어안드로이드 화면 밀도 레이아웃 문제

enter image description here

페이저 지표가 훨씬 작아서 다음 육각형을 볼 수 없습니다. 이것은 내 채널 호출기입니다. https://gist.github.com/hanleyhansen/e0a5aae4ad1548316b91

더 높은 해상도의 화면에서 발생하는 것 같습니다. https://gist.github.com/hanleyhansen/0b6f032daaf74d012925

그리고 이것은 내 fragment_channel.xml입니다 :

내가 육각형 그리기있어 어떻게 https://gist.github.com/hanleyhansen/70b865b0e982ee7e0536

나는 지표 그리기 해요 방법에 빠른 찌르기를 촬영 https://gist.github.com/hanleyhansen/8037f74304a32565228d

답변

1

도트의 경우 픽셀을 사용하여 그립니다. 따라서 xhdpi 화면의 이러한 원은 mdpi 화면 (픽셀이 더 큰 화면)보다 시각적으로 더 작습니다.

더 많은 dpi 장치에서 더 많은 픽셀을 사용하여 비슷한 크기를 얻으려면 다음과 같이 PageControl을 변경하는 것이 좋습니다.

public class PageControl extends LinearLayout { 

    int page = 0; 
    int count = 0; 
    int spacer = 8; 
    private Boolean centered = true; 

    int r; 
    final int rDP = 8; // DP value (needs conversion to dp placed into r) 
    private final Paint mNormal = new Paint(Paint.ANTI_ALIAS_FLAG); 
    private final Paint mSelected = new Paint(Paint.ANTI_ALIAS_FLAG); 

    public PageControl(Context context) { 
      super(context); 
      r = dpToPx(context, rDP); 
      setWillNotDraw(false); 
    } 

    public PageControl(Context context, AttributeSet attrs) { 
      super(context, attrs); 
      r = dpToPx(context, rDP); 
      setWillNotDraw(false); 
      setCentered(true); 
    } 

public int dpToPx(int dp) { 
     float density = getResources().getDisplayMetrics().density 
     return (int) (dp * density + 0.5f); 
} 
1

을 문제는 XXHDPI를위한 새로운 리소스를 정의해야한다고 생각합니다 (S4 및 Htc One은이 밀도 버킷에 빠지게됩니다). 또한 레이아웃이 화면 크기 버킷 (밀도가 아님)을 사용하고 dp (또는 다른 해상도 독립적 인 단위)로 "고정 크기"리소스를 정의하는지 확인하십시오.

+0

육각형은 ShapeDrawables이며, 정의 할 리소스가 없습니다. – hanleyhansen

관련 문제