ldpiのテストアセットをxxxhdpiまで作成し、それぞれのドロウアブルフォルダに配置しました。画面の隅に物を描くと、位置が 0,0 or 0+canvas.getWidth()-bitmap.getWidth()
キャンバスにアンドロイドを描画してdpiを設定する
などのように表示されたり、すべてのデバイス画面に正しく配置されているように見えます。
ビットマップを画面のどこにでも描画し、すべてのデバイスサイズで適切にスケール調整することができるようにしたいと考えていますが、それだけではわかりません。
2つのエミュレータで同じコードが実行されたスクリーンショットです。
描画コードは同じです。スケールを追加することで、ペイントにラインを適切に拡大させることができました。ビットマップも画面サイズに合わせて縮尺されますが、コードで50単位で描画する方法と、すべてのデバイスで50単位にする方法はありますか?
init関数
Paint p = new Paint();
p.setColor(Color.RED);
p.setStyle(Paint.Style.FILL_AND_STROKE);
float scale = context.getResources().getDisplayMetrics().density;
p.setStrokeWidth(40*scale);
Bitmap ball = BitmapFactory.decodeResource(context.getResources(), R.drawable.ball);
次の2つの物事がうまく見ることができます上のスクリーンショットから機能
canvas.drawLine(0, 0, 400, 400, p);
canvas.drawBitmap(ball, 50, 50, null);
canvas.drawBitmap(ball2, 150, 150, null);
をレンダリングします。ラインの長さは400pxです。今はそれがちょうど私が選んだ番号ですが、それはあまりにも小さい電話では遠すぎます。
また、1つのデバイスで本当にどのように離れているのか、文字通り2番目のデバイスでは互いの上に表示されています。
この問題を回避するにはどうすればよいですか?