0

Android で壁紙を設定しても、何の役にも立たないようです。

  • 携帯電話から画像を取得して壁紙として設定すると、画面に対して大きすぎます
  • サイズを変更すると (サイズを指定できる createBitmap() 関数を使用するか、途方もなく役に立たない createScaledBitmap() を使用して)、すべてギザギザになり、焦点が合わなくなります。
  • 画像の品質を修正するためにいくつかの気紛れなハックを使用すると、より良くなりますが、それでも完全にクリアにはなりません.
  • 現在の壁紙を取得して設定しようとすると、それでも大きすぎるように見えます。元の画像ファイルが表示され、サイズを変更する必要がありますが、機能しません。

現在、電話の内部ソフトウェアは、品質を低下させることなく画像のサイズを小さくすることが完全に可能です。この機能を共有しないのはなぜですか?

WallpaperManager wallpaperManager = WallpaperManager.getInstance(Spinnerz.this);

// gets the image from file, inexplicably upside down.
Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "DCIM/Camera/Zedz.jpg");

// use some rotation to get it on an angle that matches the screen.
Matrix bitmapTransforms = new Matrix();
bitmapTransforms.setRotate(90); // flip back upright
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(),bitmapTransforms, false); // create bitmap from bitmap from file, using the rotate matrix

// lets set it exactly to the resolution of my Samsung Galaxy S2: 480x800 pixels.
// This function appears to exist specifically to scale a bitmap object - should do a good job of it!
bitmap = Bitmap.createScaledBitmap(bitmap, 480, 800, false);
wallpaperManager.setBitmap(bitmap);

// result is quite a jaggy image - not suitable as a wallpaper.

写真:

4

1 に答える 1

0

これを試して 、

  Display d = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
                        int width = d.getWidth();
                        int height = d.getHeight();
于 2012-08-24T13:34:39.980 に答える