0

現在、次のコード スニペットを使用して壁紙の背景を設定しています。私の問題は、完全な画像が壁紙に表示されないことです。壁紙の底面と側面のビューからは、常にクリップされ、オブジェクトが欠落しています。写真をトリミングして画像のサイズを変更しようとしました。また、エミュレータの解像度に合わせて解像度を変更しようとしました。これはどれも機能しません。以下のコードを使用して画像全体を表示する方法を知っている人はいますか?

Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.testimg2);
try {
      wpm.setBitmap(background);
}catch(...){
....
}

更新されたコード(まだ画像をトリミングしています):

int width = display.getWidth();
 int height = display.getHeight();
 Log.v("WALLPAPER", "width and height are " + width + " " + height);
 Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.testimg2);
 Bitmap scaled = Bitmap.createScaledBitmap(background, width, height, true);
4

1 に答える 1

2

問題はおそらく、壁紙管理者が望む解像度です。おそらく画面の幅が 2 倍になり、目的のパラメータに合わせて壁紙のサイズが変更されます。を使用して、これを試して、目的の壁紙の解像度が何であるかを調べてください。

int minH, minW;
WallpaperManager myWallpaperManager  = WallpaperManager.getInstance(getApplicationContext());
minH = myWallpaperManager.getDesiredMinimumHeight();
minW = myWallpaperManager.getDesiredMinimumWidth();
Log.d("TAG", "The desired wallpaper height is: " + minH + "; and the desired width is:" + minW);

その後、minH と minW で Bitmap.createScaledBitmap を作成します。そして、ビットマップを作成するときは、これを忘れないでください:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
于 2012-12-17T21:31:41.263 に答える