我能以编程方式将壁纸设置为不滚动吗?

时间:2010-10-01 16:50:36

标签: android

我正在编写一个应用程序,允许用户从图片列表中设置手机的壁纸。 默认情况下,它会滚动显示多个主屏幕。我希望主屏幕上的壁纸是静态非滚动图像。

我能以编程方式完成此任务吗?这甚至可能吗?

我正在使用wallpaperManager.setResource(...);设置壁纸。

我也试过wallpaperManager.setWallpaperOffsetSteps(0,0);,但这并没有解决我的问题。

6 个答案:

答案 0 :(得分:8)

我通过以下方式实现了这一功能:

final WallpaperManager wpm = (WallpaperManager)getSystemService(
                Context.WALLPAPER_SERVICE);    
wpm.setWallpaperOffsetSteps(1, 1);
wpm.suggestDesiredDimensions(SCREEN_WIDTH, SCREEN_HEIGHT);

答案 1 :(得分:2)

这由Launcher应用程序控制。如果您需要非滚动壁纸,请安装不会滚动壁纸的Launcher应用程序:)

答案 2 :(得分:0)

如果您想为解决方案付出一些努力,可以创建一个动态壁纸,其中显示静态的,用户可选择的图像。然后你的壁纸可以覆盖偏移变化,如果这是所需的。但是,要停止滚动效果,还有很多工作要做。

或者,您可以在将图像设置为墙纸之前将图像裁剪为屏幕尺寸。这会停止滚动,但会破坏屏幕方向的变化。

答案 3 :(得分:0)

通常,ImageWallpaper的大小设置为比显示宽度宽两倍,因此当您向左或向右滚动时,ImageWallpaper会处理offsetchange事件。

我没试过这个,但我认为它可能有用。你可以试试这个:[suggestDesiredDimensions]:http://developer.android.com/reference/android/app/WallpaperManager.html#suggestDesiredDimensions(int,int)

设置与工作区宽度相同的尺寸。

答案 4 :(得分:0)

你可以试试吗

final WallpaperManager wpm = (WallpaperManager)getSystemService(
                Context.WALLPAPER_SERVICE);    
wpm.setWallpaperOffsetSteps(1, 1);
wpm.suggestDesiredDimensions(SCREEN_WIDTH, SCREEN_HEIGHT);

答案 5 :(得分:0)

如果您在设置壁纸时不知道屏幕宽度和屏幕高度,这可能会有所帮助(P.S 这是在 Kotlin 中)

 val manager = WallpaperManager.getInstance(context)
 val drawable = manager.builtInDrawable
 manager.setWallpaperOffsetSteps(1F, 1F)
 val height = drawable.intrinsicHeight
 val width = drawable.intrinsicWidth
 val scaledBitmap = Bitmap.createScaledBitmap(bitmap, width, height,true)