我正在编写一个应用程序,允许用户从图片列表中设置手机的壁纸。 默认情况下,它会滚动显示多个主屏幕。我希望主屏幕上的壁纸是静态非滚动图像。
我能以编程方式完成此任务吗?这甚至可能吗?
我正在使用wallpaperManager.setResource(...);
设置壁纸。
我也试过wallpaperManager.setWallpaperOffsetSteps(0,0);
,但这并没有解决我的问题。
答案 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)