0

我的应用程序应该是这样的:

在此处输入图像描述

但出于某种原因,在 Galaxy S4 上它看起来像这样:

在此处输入图像描述

寻呼机指示器要小得多,我看不到下一个六边形。这是我的频道寻呼机: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

4

2 回答 2

1

快速解决这个问题我猜你需要为 XXHDPI 定义一个新资源(S4 和 Htc One 属于这个密度桶)。还要检查您的布局是否使用屏幕尺寸桶(而不是密度),并且您正在根据 dp(或其他分辨率独立单位)定义任何“固定尺寸”资源。

于 2013-06-22T01:45:08.130 回答
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);
}
于 2013-06-27T16:57:01.690 回答