安卓 - 将壁纸设置为适合手机屏幕大小

4

我正在使用最简单的代码来设置wallpaper:

Bitmap bmap2 = BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.a));

getApplicationContext().setWallpaper(bmap2);

当图片尺寸大于屏幕尺寸时会出现问题。我只能看到输入图片的一部分。
我尝试了像createScaledBitmap这样的调整大小方法,它是有效的,但不是我想要的。 createScaledBitmap是调整位图的大小,而不是图片的大小,仅影响分辨率(只会破坏图片的质量,而不是将图片的大小加载到手机上作为壁纸)。
有人知道如何缩小图片的大小而不是分辨率吗?
编辑:
几个屏幕:
菜单中的图片,缩放前后的对比: http://zapodaj.net/14097596e4251.png.html 因此,你可以看到只有缩放的分辨率,没有图片的大小。
有什么想法吗?

1
作为一条注释,setWallpaper自API级别5起已被弃用。您可能需要查看WallpaperManager,它具有许多实用工具。 - adrianp
我也尝试过: WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); wallpaperManager.setBitmap(bmap2); 但结果是一样的。 - Tomi89
1
问题已经解决。那段代码帮了我:DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int height = metrics.heightPixels; int width = metrics.widthPixels; Bitmap bitmap = Bitmap .createScaledBitmap(whatever, width, height, true); - Tomi89
1个回答

16

作者在评论中回答了问题,但是由于没有人看评论,所以我在这里复制一下:

Bitmap bmap2 = BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.paper));

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels; 
int width = metrics.widthPixels;
Bitmap bitmap = Bitmap.createScaledBitmap(bmap2, width, height, true); 

WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this); 
 try {
  wallpaperManager.setBitmap(bitmap);
 } catch (IOException e) {
  e.printStackTrace();
 }

我的图片尺寸为600x800,我希望它能适应任何设备。你的代码在平板电脑上无法工作。 - Pratik Butani
@PratikButani,你有没有找到如何在屏幕上适配图像的解决方案?请帮帮我。 - John R
@JohnR 我还没明白。 - Pratik Butani
@PratikButani 我也想将图片设置为壁纸,并且希望这张图片适合每个屏幕尺寸。但是这个解决方案不太好用。你有什么解决方案吗? - John R
@PratikButani https://dev59.com/_WEh5IYBdhLWcg3wIgfN - John R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接