【问题标题】:Is it possible to set the wallpaper just like it's done with the app that comes with Android?是否可以像使用 Android 自带的应用程序一样设置壁纸?
【发布时间】:2011-10-15 12:45:25
【问题描述】:

Android 可以设置主屏幕壁纸。用户点击“菜单”,然后选择“壁纸”以从系统设置壁纸。生成的壁纸图像在纵向和横向模式下都可以正确缩放。

我做了一个允许更改主屏幕壁纸的小应用程序。它工作正常,但我不知道在将图像设置为壁纸后让图像大小正确的秘诀是什么。

我对 1280x1084 的 png 图像进行了此操作,并尝试使用 320x240 的图像进行相同的操作,并且在设置为主屏幕壁纸时它们都显示相同的尺寸。

我寻找有关如何像他们一样设置壁纸的教程和示例,但找不到如何设置。您能否向我展示一个代码示例,向我展示其中的秘密,以便正确缩放生成的壁纸?

我确定必须使用某种 WallpaperManager 设置,但我不知道该使用哪一个。

提前致谢。

这是我用来设置壁纸的代码:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    WallpaperManager myWallpaperManager = WallpaperManager
            .getInstance(getApplicationContext());

    try {
        myWallpaperManager.setResource(R.drawable.kabanight1);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

真的, 埃马德

【问题讨论】:

  • “显示相同尺寸”是什么意思?你的意思是两个图像的大小彼此相等,还是你的意思是它们仍然是你将它们设置为壁纸之前的大小?即分别是 1280x1024 和 320x240?
  • 当设置为墙纸时,如果图像是 320x240,图像会扩大到由 Android 确定的大小,如果是 1280x1024,图像会变小。我想让Android像用户使用“菜单”->“壁纸”方式从提供的系统壁纸设置壁纸一样缩放图像。在用户运行我的应用程序设置壁纸之前,我的图片文件可能需要与系统壁纸图片大小相同?

标签: android size scaling wallpaper homescreen


【解决方案1】:

我只是在看这个。虽然您可以在 Launcher .apk 中观察壁纸图像的实际文件大小,但更好的方法是查询 WallpaperManager 以获得所需的大小(与方向无关)。

final WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);
final int fullWidth = wallpaperManager.getDesiredMinimumWidth();
final int fullHeight = wallpaperManager.getDesiredMinimumHeight();

此时,我创建了一个 精确 所需大小的新位图,并将我自己的位图写入其中。棘手的部分是计算填充和缩放,以及状态栏。然而,一旦你把这个大小合适的图片写成壁纸,它就应该像系统壁纸一样工作了。

现在不利的一面 - 该图像(尺寸大于您的屏幕)已正确缩放,但您会注意到它的裁剪方式取决于您的方向。

如果您想根据方向调整图像大小(最大化图像大小但不裁剪),我认为您需要动态壁纸。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多