代号一:如何获得一个组件的毫米宽度?

时间:2017-08-04 15:55:40

标签: codenameone

我创建了一个应用程序来计算多图像的大小,以便在Codename One设计器中使用它们。

正如您在下面的屏幕截图中看到的,我的应用程序有一个滑块,我得到它的宽度(以毫米为单位)。问题是所选宽度的值不正确。我在两台Android设备上测试了应用程序,测量的长度与应用程序报告的长度不同。

您可以看到full source code,但相关代码如下:

Label value = new Label("Move the cursor on the slider...");

Style thumbStyle = new Style();
thumbStyle.setFont(Font.createSystemFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE), true);

Slider slider = new Slider();
slider.setMaxValue(1000);
slider.setMinValue(0);
slider.setProgress(20); // Set  the starting value
slider.setThumbImage(FontImage.create("|", thumbStyle));
slider.setEditable(true); // to it works as a slider instead of a progress bar
slider.addActionListener(e -> {
    Integer valueSelected = slider.getProgress();
    Integer sliderWidth = slider.getWidth();
    Double inch = sliderWidth.doubleValue() / (slider.getMaxValue() - slider.getMinValue()) * valueSelected / 100.0;
    Integer millimeters = Double.valueOf(inch * 25.4).intValue();
    value.setText("Value selected: " + millimeters.toString() + " mm");
});

非常感谢您的帮助

Codename One MultiImage Calculator

1 个答案:

答案 0 :(得分:1)

毫米测量不准确。对于convert方法,设备可以返回与为密度标志返回的值不同的值或比率。

不幸的是,Googles测试套件将设备认证为“好”并不能真正涵盖这些内容。我们无能为力。