当我们滚动时,主屏幕的前景(图标,小部件等)向左或向右移动全屏宽度,但背景图像(或动态壁纸)仅移动该宽度的一小部分。 我的问题是如何得到这种效果。 到现在为止已经做到了。
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);
}
尚未使用.................
答案 0 :(得分:2)
致电WallpaperManager.setWallpaperOffsets
以指示壁纸滚动。
所以这应该以壁纸为中心:
WallpaperManager.setWallpaperOffsets(getWindowToken(), 0.5f, 0f);
这应该滚动到一边:
WallpaperManager.setWallpaperOffsets(getWindowToken(), 0f, 0f);
这应该滚动到另一边:
WallpaperManager.setWallpaperOffsets(getWindowToken(), 1f, 0f);
如果你要这样做,你应该确保你知道壁纸实际上可以滚动,或者用户要求你启用滚动。许多设备都配置了与屏幕大小相同但不会滚动的壁纸。