2013-06-22 164 views
0

我的應用程序應該是這樣的:的Android屏幕密度佈局問題

enter image description here

但在Galaxy S4某種原因,它看起來像這樣:

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