1
マルチ画像のサイズを計算して、コードネームデザイナーで使用するアプリを作成しました。コードネーム1:コンポーネントの幅をミリメートル単位で取得する方法は?
下のスクリーンショットでわかるように、私のアプリにはスライダがあり、その幅(ミリメートル)がわかります。問題は、選択した幅の値が正しくないことです。私は2つの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");
});
が
"整数sliderWidth = slider.getWidth();" (上のコードのように)不正確です(APIは戻り値で使用されるmisureの単位を報告しないため、私の意見では十分に文書化されていません)。私は "Display.getInstance()。getDeviceDensity()"がより正確かどうかを知ることはできませんでした。希望するサイズのマルチイメージを生成する最良の方法は何ですか? –
'getWidth'はピクセルで動作するので100%正確です。密度はコイン投げのビットです。 getDeviceDensityを使用して正しいイメージサイズを選択します。デザイナーツールのgithubコードから見ることができるマルチイメージをインポートするデザイナーツールコードには、いくつかのハードコーディングされたベストプラクティスがあります。 –
密度とDPIは同じですか? /* Double inch = sliderWidth.doubleValue()/(slider.getMaxValue() - slider.getMinValue())getWidth()がピクセルの代わりに複数の値を返すと仮定したので、上記のコードは間違っています。 * valueSelected/100.0; */ 私はそれを修正しようとした: [sliderActionListener.java(https://gist.github.com/jsfan3/6ee8358a71a4e79fd7360814f0a78c8c) IはMultiImageCalculator.getDeviceDPIを(実装しようとした)が: [getDeviceDPI。 java](https://gist.github.com/jsfan3/80c915f752a92d4f2f860b717197d6fc) この承認は正しいですか? –