Update to scroll the wallpaper.

This commit is contained in:
Dianne Hackborn 2009-08-10 23:21:09 -07:00
parent b1b69f53a8
commit 8f573952b8
1 changed files with 14 additions and 0 deletions

View File

@ -16,6 +16,7 @@
package com.android.launcher2; package com.android.launcher2;
import android.app.WallpaperManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.ComponentName; import android.content.ComponentName;
@ -52,6 +53,8 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
*/ */
private static final int SNAP_VELOCITY = 1000; private static final int SNAP_VELOCITY = 1000;
private final WallpaperManager mWallpaperManager;
private int mDefaultScreen; private int mDefaultScreen;
private boolean mFirstLayout = true; private boolean mFirstLayout = true;
@ -126,6 +129,8 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
public Workspace(Context context, AttributeSet attrs, int defStyle) { public Workspace(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle); super(context, attrs, defStyle);
mWallpaperManager = WallpaperManager.getInstance(context);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Workspace, defStyle, 0); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Workspace, defStyle, 0);
mDefaultScreen = a.getInt(R.styleable.Workspace_defaultScreen, 1); mDefaultScreen = a.getInt(R.styleable.Workspace_defaultScreen, 1);
a.recycle(); a.recycle();
@ -450,11 +455,18 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
} }
} }
private void updateWallpaperOffset() {
int scrollRange = getChildAt(getChildCount()-1).getRight()-getWidth();
mWallpaperManager.setWallpaperOffsets(getWindowToken(),
mScrollX/(float)scrollRange, 0);
}
@Override @Override
public void computeScroll() { public void computeScroll() {
if (mScroller.computeScrollOffset()) { if (mScroller.computeScrollOffset()) {
mScrollX = mScroller.getCurrX(); mScrollX = mScroller.getCurrX();
mScrollY = mScroller.getCurrY(); mScrollY = mScroller.getCurrY();
updateWallpaperOffset();
postInvalidate(); postInvalidate();
} else if (mNextScreen != INVALID_SCREEN) { } else if (mNextScreen != INVALID_SCREEN) {
mCurrentScreen = Math.max(0, Math.min(mNextScreen, getChildCount() - 1)); mCurrentScreen = Math.max(0, Math.min(mNextScreen, getChildCount() - 1));
@ -769,12 +781,14 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
if (deltaX < 0) { if (deltaX < 0) {
if (mScrollX > 0) { if (mScrollX > 0) {
scrollBy(Math.max(-mScrollX, deltaX), 0); scrollBy(Math.max(-mScrollX, deltaX), 0);
updateWallpaperOffset();
} }
} else if (deltaX > 0) { } else if (deltaX > 0) {
final int availableToScroll = getChildAt(getChildCount() - 1).getRight() - final int availableToScroll = getChildAt(getChildCount() - 1).getRight() -
mScrollX - getWidth(); mScrollX - getWidth();
if (availableToScroll > 0) { if (availableToScroll > 0) {
scrollBy(Math.min(availableToScroll, deltaX), 0); scrollBy(Math.min(availableToScroll, deltaX), 0);
updateWallpaperOffset();
} }
} }
} }