gpt4 book ai didi

java - Android 动态壁纸视差滚动效果

转载 作者:行者123 更新时间:2023-12-02 07:07:26 24 4
gpt4 key购买 nike

当我们滚动时,主屏幕的前景(图标、小部件等)会向左或向右移动全屏宽度,但背景图像(或动态壁纸)仅移动该宽度的一小部分。我的问题是如何获得这种效果。到目前为止已经做到了。

    SurfaceHolder holder = getSurfaceHolder();
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
if (canvas != null) {

drawCircles(canvas);
}
} finally {
if (canvas != null)
holder.unlockCanvasAndPost(canvas);
}

绘制函数是

{
private void draw(Canvas canvas) {
Paint paint = new Paint();
DisplayMetrics metdisplayMatrics = new DisplayMetrics();
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
display.getMetrics(metdisplayMatrics);

canvas.save();
canvas.drawColor(0xff000000);
mRecscreenRectangleFrame = new Rect(0, 0, (int) (metdisplayMatrics.widthPixels*2.0), metdisplayMatrics.heightPixels);
photo1= BitmapFactory.decodeResource(getResources(), R.drawable.img1);
canvas.drawBitmap(photo1, null,mRecscreenRectangleFrame, paint);
photo1.recycle();
System.gc();
}

现在如何放置动态壁纸视差滚动效果。

    @Override
public void onOffsetsChanged(float xOffset, float yOffset,
float xOffsetStep, float yOffsetStep, int xPixelOffset,
int yPixelOffset) {

super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep,
xPixelOffset, yPixelOffset);

WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext());
View view=new View(getBaseContext());

myWallpaperManager.setWallpaperOffsets(view.getWindowToken(),xOffset, 0f);

}

尚未工作......

最佳答案

调用WallpaperManager.setWallpaperOffsets来指示壁纸滚动。

Documentation

所以这应该使壁纸居中:

WallpaperManager.setWallpaperOffsets(getWindowToken(), 0.5f, 0f);

这应该将其滚动到一边:

WallpaperManager.setWallpaperOffsets(getWindowToken(), 0f, 0f);

这应该将其滚动到另一侧:

WallpaperManager.setWallpaperOffsets(getWindowToken(), 1f, 0f);

如果您要这样做,您应该确保您知道壁纸实际上可以滚动,或者用户已要求您启用滚动。许多设备都配置了与屏幕大小相同且不滚动的壁纸。

关于java - Android 动态壁纸视差滚动效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15925114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com