【问题标题】:Why my home screen wallpaper is damaged?为什么我的主屏幕壁纸损坏了?
【发布时间】:2012-09-25 22:38:12
【问题描述】:

您好,我正在编写代码以设置主屏幕壁纸。它工作正常。但是我的图像像素完全损坏,然后我的壁纸不适合主屏幕的实际尺寸。我正在尝试锻炼不同大小的图像。不幸的是,它对我不起作用。如何解决。

我的代码在这里

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();
}

我的截图原图

我的屏幕截图 Android 模拟器主屏幕

为什么我的原始图像在这里损坏。
如何根据Emulator Size显示My Original Image

【问题讨论】:

  • “我的图像像素完全损坏”是什么意思?你写了什么代码,你尝试了什么?
  • 为什么不添加截图,我们会更好地了解问题所在。
  • @mariomario 现在我添加了我的截图。
  • 给我任何想法,如何固定壁纸的宽度和高度。
  • 您能否添加另一个图像或模拟您希望图像在模拟器上显示的方式?

标签: android


【解决方案1】:

你可以试试这个:

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,然后设置为墙纸。谢谢。
  • 如果这是你接受的答案,那就给这个人他的赏金吧!
【解决方案2】:
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();
    }

这是我用来使我的图像很好地缩放而不会出现疯狂线条的方法 - 你可以试试这个作为壁纸 - 不确定它是否有效,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多