我在自定义视图的 onMeasure 方法中添加了一些代码,以确保最小的物理尺寸,以确保用户在单击它时不会遇到问题。事实上,我想确保 8 毫米的高度,但同时在某些设备中似乎可以正常工作,但在三星 Galaxy S II 中却无法正常工作。对于预期的 8 毫米,我在屏幕上绘制了小于 5 毫米的东西,它更小并且无法正确单击视图。为了确定问题出在设备上,我创建了一个小程序来测试它,主要活动的代码如下:
public class TrialMillimetersActivity extends Activity {
private static final float FINGER_WIDTH = 8.0f;
private static final int FINGER_WIDTH_UNITS = TypedValue.COMPLEX_UNIT_MM;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
TextView tv = new TextView(this);
tv.setText("DisplayMetrics:" +
"\n Screen resolution in pixels: " +
metrics.widthPixels + "x" + metrics.heightPixels +
"\n Screen density (dpi): " + metrics.densityDpi +
"\n Scale for text: " + metrics.scaledDensity);
final float minFingerWidth = TypedValue.applyDimension(
FINGER_WIDTH_UNITS, FINGER_WIDTH, metrics);
tv.append("\n\nThe platform returns for " + FINGER_WIDTH +
"mm the number of " + minFingerWidth + " pixels on this device.");
final float widthMm = FINGER_WIDTH * (metrics.widthPixels) / minFingerWidth;
final float heightMm = FINGER_WIDTH * (metrics.heightPixels) / minFingerWidth;
tv.append("\n\nThis means this screen has a resolution of " + widthMm + "x" +
heightMm + " in millimeters.");
setContentView(tv);
}
}
我在不同的设备上尝试了上面的代码,即使不准确,它们也非常接近屏幕尺寸(用尺子测量)。但不是在 Galaxy S II 中。
有人可以告诉我如何解决这个问题,或者如果代码中出现错误,请告诉我问题出在哪里?
非常感谢