我正在用Android开发一个壁纸应用程序,我正在寻找一种正确的方法来为我的应用程序设置可滚动的壁纸。现在,我的代码可以从位图中设置壁纸,但是它被裁剪成与一个页面相匹配,并且只停留在一个页面上(我在主屏幕上只有5页)。这意味着每个页面中的内容可以在壁纸中滚动,但壁纸不是滚动的。
我想设置一个可滚动的壁纸。我尝试了一些来自互联网的密码,但它们没有帮助。你们知道吗?
这是我的密码
WallpaperManager wm = WallpaperManager.getInstance(mActivity.getContext());
try {
wm.setBitmap(mCropImageView.getCroppedImage());
} catch (IOException e) {
e.printStackTrace();
}发布于 2015-02-03 20:01:08
试试这个,它在api>11上对我有用
//get screen height
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
screenHeight = size.y;
wallPaperBitmap= ... //your bitmap resource
//adjust the aspect ratio of the Image
//this is the main part
int width = wallPaperBitmap.getWidth();
width = (width * screenHeight) / wallPaperBitmap.getHeight();
//set the wallpaper
//this may not be the most efficent way but it worked for me
wallpaperManager.setBitmap(Bitmap.createScaledBitmap(wallPaperBitmap, width, height, true));发布于 2019-07-09 21:04:06
我想要一个可滚动的壁纸在我的应用程序作为背景。(主屏幕替换应用程序)
而不是设置了一个壁纸(可以滚动)从的应用程序。
但这个问题是谷歌在搜索scrollable wallpaper android stackoverflow时的第一个问题。
所以我决定回答这个问题。
我用kotlin制作了一个位于这里的演示应用程序
并采用这方法对壁纸进行滚动。
它使用WallpaperManager.setWallpaperOffsets
addOnPageChangeListener(object : ViewPager.OnPageChangeListener{
override fun onPageScrollStateChanged(state: Int) {}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
val xOffset = (position + positionOffset) / (pageModels.size - 1)
val wallpaperManager = WallpaperManager.getInstance(applicationContext)
wallpaperManager.setWallpaperOffsets(viewPager.windowToken, xOffset, 0.0f)
}
}以及我制作的视频应用程序的演示
发布于 2022-10-29 06:31:59
试试这个,起作用了。
final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
wallpaperManager.setWallpaperOffsetSteps(0F, 0F);
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this, pageCount);
viewPager2.setAdapter(viewPagerAdapter);
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
float xOffset = (position + positionOffset) / (pageCount - 1);
wallpaperManager.setWallpaperOffsets(viewPager2.getWindowToken(), xOffset, 0.0f);
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});https://stackoverflow.com/questions/27340067
复制相似问题