为什么我的主屏幕壁纸会损坏?

9

你好,我正在编写代码来设置主屏幕壁纸。它运行正常。但我的图片像素完全损坏,然后我的壁纸与主屏幕的实际大小不匹配。我尝试使用不同大小的图像进行调整,但遗憾的是这对我没有效果。如何解决这个问题。

以下是我的代码:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable drawable = getResources().getDrawable(R.drawable.newimage);
Bitmap wallpaper = ((BitmapDrawable) drawable).getBitmap();           
try 
{
    wallpaperManager.setBitmap(wallpaper);
} 
catch (IOException e) 
{
    e.printStackTrace();
}

我的原始截图
enter image description here

我的 Android 模拟器主屏幕
enter image description here

为什么我的原始图像在这里受损。
如何根据模拟器大小显示我的原始图像


2
你说的"My image pixel is totally damaged"是什么意思?你写了什么代码,尝试了什么? - bouteillebleu
为什么不添加一张截图,这样我们就能更好地了解问题所在。 - mariomario
@mariomario,现在我已经添加了我的屏幕截图。 - Sekar
给我任何想法,如何固定壁纸的宽度和高度。 - Sekar
2
你能否添加另一张图片或模拟图,展示你想要的图片在模拟器上的效果? - Joe
2个回答

7
您可以尝试以下方法:
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable drawable = getResources().getDrawable(R.drawable.newimage);
Bitmap wallpaper_source = ((BitmapDrawable) drawable).getBitmap();           
try {
    int w = wallpaperManager.getDesiredMinimumWidth();
    int h = wallpaperManager.getDesiredMinimumHeight();
    int x = (w-wallpaper_source.getWidth())/2;
    int y = (h-wallpaper_source.getHeight())/2;
    Bitmap wallpaper = Bitmap.createBitmap(w, h, Config.ARGB_8888);
    Canvas c = new Canvas(wallpaper);
    c.drawBitmap(wallpaper_source, x,y, null);
    wallpaperManager.setBitmap(wallpaper);
} 
catch (IOException e) 
{
    e.printStackTrace();
}

这段代码运行得非常好。我期望的结果是,例如如果图像大小为72*721200*1200,那么模拟器大小为480*480。因此,我需要将图像大小更改为480*480而不损坏像素,然后设置为壁纸。谢谢。 - Sekar
如果这是您接受的答案,请给这位用户发放他的奖励! - bkbeachlabs

0
WallpaperManager wallpaperManager = WallpaperManager.getInstance(activity);
    BitmapFactory.Options myOptions = new BitmapFactory.Options();
    myOptions.inDither = true;
    myOptions.inScaled = false;
    myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
    myOptions.inDither = false;
    myOptions.inPurgeable = true;
    Bitmap preparedBitmap = BitmapFactory.decodeResource(activity
            .getApplication().getResources(), R.drawable.newimage, myOptions);
    try 
    {
        wallpaperManager.setBitmap(preparedBitmap);
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }

这是我用来使我的图像缩放得很好而没有疯狂的线条穿过的方法 - 你可以尝试将其用于壁纸 - 不确定是否有效,请告诉我。


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