我的应用应该是这样的:
但出于某种原因,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
答案 0 :(得分:1)
快速尝试这个问题我猜你需要为XXHDPI定义一个新资源(S4和Htc One落入这个密度桶)。还要检查您的布局是否正在使用屏幕大小存储桶(而不是密度),并且您要根据dp(或其他与分辨率无关的单位)定义任何“固定大小”资源。
答案 1 :(得分: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);
}