2017-08-04 7 views
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"); 
}); 

Codename One MultiImage Calculator

答えて

1

ミリ対策が正確ではありません任意の助けをありがとうございました。デバイスは、密度フラグに対して返す値とは異なる値または比率を変換メソッドに返すことができます。

残念ながら、Googleのテストスイートでは、デバイスを「良好」と認証するために実際にはこれらの問題をカバーしていません。それについて私たちができることはあまりありません。

+0

"整数sliderWidth = slider.getWidth();" (上のコードのように)不正確です(APIは戻り値で使用されるmisureの単位を報告しないため、私の意見では十分に文書化されていません)。私は "Display.getInstance()。getDeviceDensity()"がより正確かどうかを知ることはできませんでした。希望するサイズのマルチイメージを生成する最良の方法は何ですか? –

+0

'getWidth'はピクセルで動作するので100%正確です。密度はコイン投げのビットです。 getDeviceDensityを使用して正しいイメージサイズを選択します。デザイナーツールのgithubコードから見ることができるマルチイメージをインポートするデザイナーツールコードには、いくつかのハードコーディングされたベストプラクティスがあります。 –

+0

密度と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) この承認は正しいですか? –

関連する問題