問題を解決する方法の日を探していて、本当に答えが見つかりませんでした。すでに似たような疑問がある場合は事前にお詫びします。Android:画像リソースに書き込み、同じサイズを別のデバイスに保存する
私の問題は簡単です。私はユーザーに名前を入力させたい、そしてこの名前はある種の小さなボックスで画像に書き込まれます。 (画像は意図で共有され、すべてのものはとにかく...)
画像は私のドロウアブルフォルダ内のpngです。だから、どんな種類のデバイスでも常に同じサイズのピクセルでなければなりません。 ビットマップにpngを読み込み、そのビットマップにキャンバスを使用してペイントを作成し、myPaint.setTextSize(100)
(setTextSizeはピクセルの場合は100ピクセルです)、drawTextをペイントを使用して同じテキストサイズにしますピクセル)を使用しています。
「MyName」を1つのデバイスに書き込むことは完全には適合しますが、小さい方のデバイスでは外に出て、大きなデバイスでも出てきます。
私はレイアウトについて話しているわけではないので、何も変わらないことを知っていたとしても、固定サイズの描画可能なPNGを使用しようとしました。
私はテキストなどの位置に問題はありません。それだけの大きさ。
とにかく、私はこのテキストサイズの変更がどこから来るのか分かりません。たぶん私は何らかの細部の世話をしていないでしょう。私はあなたが私を助けてくれることを願っています。
Context context = getBaseContext();
Resources resources = context.getResources();
Bitmap card = BitmapFactory.decodeResource(resources, R.drawable.card);
android.graphics.Bitmap.Config bitmapConfig = card.getConfig();
if(bitmapConfig == null) {
bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
}
// Converting to mutable
card = card.copy(bitmapConfig, true);
Canvas canvas = new Canvas(card);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
// text color
paint.setColor(Color.WHITE);
paint.setFakeBoldText(true);
paint.setTextAlign(Paint.Align.CENTER);
// text size in pixels
paint.setTextSize(100);
// Name Position
float xName = (float) (0.744 * card.getWidth());
float yName = (float) (0.680424 * (card.getHeight() - (paint.ascent()/2)));
String name = editName.getText().toString();
canvas.drawText(name, xName, yName, paint);
http://stackoverflow.com/a/14543066/2931489 –