1

現時点では、いくつかのボタンを備えた相対的なレイアウトがあり、設定しましたandroid:background="#FFFFFF"

代わりに使用する背景画像を作成したいのですが、どのサイズの画像を作成すればよいかわかりません。

メニューアイコン/ランチャーアイコンの場合、ldpi、mdpi、hdpiの3セットを作成する必要があることを理解しています。

ただし、背景の場合、これらのピクセルサイズはどのようにする必要がありますか?

次のような背景を作成します。

ここに画像の説明を入力してください

4

3 に答える 3

2

心配する画面密度が異なるだけでなく、画面サイズも異なります。構成ごとに背景画像を用意するのは実用的ではありません。代わりに、Javaコードを使用して画像を取得し、画面サイズや解像度に関係なく、画面サイズに合わせて拡大縮小することをお勧めします。

この例では、私が持っているゲームからプルしました。ビットマップbgがあり、画面解像度がmaxwidthとmaxheightに保存されています。ビットマップを背景と比較してから、いくつかのスケール値を設定します。oldx / oldyは、最後にチェックしたときから画面解像度が変更されたかどうかを判別します。マトリックスを作成してビットマップのサイズを変更し、それをbgresizedに保存してから、oldx / oldyを設定して、必要に応じて次の更新を再スケーリングできるようにします。次に、新しい背景を描きます

このコードでは、ビューのonDraw(Canvas canvas)メソッドで使用できるキャンバスを使用しました。または、キャンバスが気に入らない場合は、onCreateや向きの変更などで使用するように変更できます。

checkbackgroundsize();
bgwidth = bg.getWidth();
    bgheight = bg.getHeight();
    scalex = (float)maxwidth / (float)bgwidth;
    scaley = (float)maxheight / (float)bgheight;
    if ((oldx != scalex) || (oldy != scaley)){//if the screen changed sizes
        Matrix matrix = new Matrix();
        matrix.postScale(scalex, scaley);
        bgresized = Bitmap.createBitmap(bg, 0, 0, bgwidth, bgheight, matrix, true);
        oldx = scalex;
        oldy = scaley;
    }

    canvas.drawBitmap(bgresized, 0, 0, null);//draw resized background
于 2011-04-16T02:35:00.530 に答える
1

Android開発者ガイドのベストプラクティスで複数画面のサポートを読む必要があります。

于 2011-04-15T23:20:27.303 に答える
0

また、Androidの9つのパッチドローアブルを調べることをお勧めします(ただし、グラフィックは複雑すぎる可能性があります)

于 2011-04-16T03:02:36.980 に答える