android动态壁纸视差滚动效果

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

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

绘制function是

 { 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指示壁纸滚动。

文档

所以这应该以壁纸为中心:

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

这应该滚动到一边:

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

这应该滚动到另一边:

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

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