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 回答