summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/FadedEdgeDrawHelper.java (renamed from packages/SystemUI/src/com/android/systemui/recent/RecentsScrollViewPerformanceHelper.java)14
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java56
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java81
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java58
4 files changed, 106 insertions, 103 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsScrollViewPerformanceHelper.java b/packages/SystemUI/src/com/android/systemui/recent/FadedEdgeDrawHelper.java
index f17766b..1cfc892 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsScrollViewPerformanceHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/FadedEdgeDrawHelper.java
@@ -30,7 +30,7 @@ import android.widget.LinearLayout;
import com.android.systemui.R;
-public class RecentsScrollViewPerformanceHelper {
+public class FadedEdgeDrawHelper {
public static final boolean OPTIMIZE_SW_RENDERED_RECENTS = true;
public static final boolean USE_DARK_FADE_IN_HW_ACCELERATED_MODE = true;
private View mScrollView;
@@ -43,18 +43,18 @@ public class RecentsScrollViewPerformanceHelper {
private Matrix mFadeMatrix;
private LinearGradient mFade;
- public static RecentsScrollViewPerformanceHelper create(Context context,
+ public static FadedEdgeDrawHelper create(Context context,
AttributeSet attrs, View scrollView, boolean isVertical) {
boolean isTablet = context.getResources().
getBoolean(R.bool.config_recents_interface_for_tablets);
if (!isTablet && (OPTIMIZE_SW_RENDERED_RECENTS || USE_DARK_FADE_IN_HW_ACCELERATED_MODE)) {
- return new RecentsScrollViewPerformanceHelper(context, attrs, scrollView, isVertical);
+ return new FadedEdgeDrawHelper(context, attrs, scrollView, isVertical);
} else {
return null;
}
}
- public RecentsScrollViewPerformanceHelper(Context context,
+ public FadedEdgeDrawHelper(Context context,
AttributeSet attrs, View scrollView, boolean isVertical) {
mScrollView = scrollView;
TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.View);
@@ -64,7 +64,7 @@ public class RecentsScrollViewPerformanceHelper {
}
public void onAttachedToWindowCallback(
- RecentsCallback callback, LinearLayout layout, boolean hardwareAccelerated) {
+ LinearLayout layout, boolean hardwareAccelerated) {
mSoftwareRendered = !hardwareAccelerated;
if ((mSoftwareRendered && OPTIMIZE_SW_RENDERED_RECENTS)
|| USE_DARK_FADE_IN_HW_ACCELERATED_MODE) {
@@ -178,11 +178,11 @@ public class RecentsScrollViewPerformanceHelper {
}
}
- public int getVerticalFadingEdgeLengthCallback() {
+ public int getVerticalFadingEdgeLength() {
return mFadingEdgeLength;
}
- public int getHorizontalFadingEdgeLengthCallback() {
+ public int getHorizontalFadingEdgeLength() {
return mFadingEdgeLength;
}
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
index 217b7fd..be42bc0 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
@@ -49,16 +49,17 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
private RecentsCallback mCallback;
protected int mLastScrollPosition;
private SwipeHelper mSwipeHelper;
- private RecentsScrollViewPerformanceHelper mPerformanceHelper;
+ private FadedEdgeDrawHelper mFadedEdgeDrawHelper;
private HashSet<View> mRecycledViews;
private int mNumItemsInOneScreenful;
+ private Runnable mOnScrollListener;
public RecentsHorizontalScrollView(Context context, AttributeSet attrs) {
super(context, attrs, 0);
float densityScale = getResources().getDisplayMetrics().density;
float pagingTouchSlop = ViewConfiguration.get(mContext).getScaledPagingTouchSlop();
mSwipeHelper = new SwipeHelper(SwipeHelper.Y, this, densityScale, pagingTouchSlop);
- mPerformanceHelper = RecentsScrollViewPerformanceHelper.create(context, attrs, this, false);
+ mFadedEdgeDrawHelper = FadedEdgeDrawHelper.create(context, attrs, this, false);
mRecycledViews = new HashSet<View>();
}
@@ -108,8 +109,8 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
final View view = mAdapter.getView(i, old, mLinearLayout);
- if (mPerformanceHelper != null) {
- mPerformanceHelper.addViewCallback(view);
+ if (mFadedEdgeDrawHelper != null) {
+ mFadedEdgeDrawHelper.addViewCallback(view);
}
OnTouchListener noOpListener = new OnTouchListener() {
@@ -234,26 +235,10 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
}
@Override
- public void draw(Canvas canvas) {
- super.draw(canvas);
-
- if (mPerformanceHelper != null) {
- int paddingLeft = mPaddingLeft;
- final boolean offsetRequired = isPaddingOffsetRequired();
- if (offsetRequired) {
- paddingLeft += getLeftPaddingOffset();
- }
-
- int left = mScrollX + paddingLeft;
- int right = left + mRight - mLeft - mPaddingRight - paddingLeft;
- int top = mScrollY + getFadeTop(offsetRequired);
- int bottom = top + getFadeHeight(offsetRequired);
+ public void drawFadedEdges(Canvas canvas, int left, int right, int top, int bottom) {
+ if (mFadedEdgeDrawHelper != null) {
- if (offsetRequired) {
- right += getRightPaddingOffset();
- bottom += getBottomPaddingOffset();
- }
- mPerformanceHelper.drawCallback(canvas,
+ mFadedEdgeDrawHelper.drawCallback(canvas,
left, right, top, bottom, mScrollX, mScrollY,
0, 0,
getLeftFadingEdgeStrength(), getRightFadingEdgeStrength(), mPaddingTop);
@@ -261,9 +246,21 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
}
@Override
+ protected void onScrollChanged(int l, int t, int oldl, int oldt) {
+ super.onScrollChanged(l, t, oldl, oldt);
+ if (mOnScrollListener != null) {
+ mOnScrollListener.run();
+ }
+ }
+
+ public void setOnScrollListener(Runnable listener) {
+ mOnScrollListener = listener;
+ }
+
+ @Override
public int getVerticalFadingEdgeLength() {
- if (mPerformanceHelper != null) {
- return mPerformanceHelper.getVerticalFadingEdgeLengthCallback();
+ if (mFadedEdgeDrawHelper != null) {
+ return mFadedEdgeDrawHelper.getVerticalFadingEdgeLength();
} else {
return super.getVerticalFadingEdgeLength();
}
@@ -271,8 +268,8 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
@Override
public int getHorizontalFadingEdgeLength() {
- if (mPerformanceHelper != null) {
- return mPerformanceHelper.getHorizontalFadingEdgeLengthCallback();
+ if (mFadedEdgeDrawHelper != null) {
+ return mFadedEdgeDrawHelper.getHorizontalFadingEdgeLength();
} else {
return super.getHorizontalFadingEdgeLength();
}
@@ -290,9 +287,8 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
@Override
public void onAttachedToWindow() {
- if (mPerformanceHelper != null) {
- mPerformanceHelper.onAttachedToWindowCallback(
- mCallback, mLinearLayout, isHardwareAccelerated());
+ if (mFadedEdgeDrawHelper != null) {
+ mFadedEdgeDrawHelper.onAttachedToWindowCallback(mLinearLayout, isHardwareAccelerated());
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
index 5ebd11e..00f9f28 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
@@ -30,6 +30,7 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
+import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Shader.TileMode;
import android.graphics.drawable.BitmapDrawable;
@@ -74,7 +75,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
private PopupMenu mPopup;
private View mRecentsScrim;
private View mRecentsNoApps;
- private ViewGroup mRecentsContainer;
+ private RecentsScrollView mRecentsContainer;
private boolean mShowing;
private boolean mWaitingToShow;
@@ -98,6 +99,8 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
public void setCallback(RecentsCallback callback);
public void setMinSwipeAlpha(float minAlpha);
public View findViewForTask(int persistentTaskId);
+ public void drawFadedEdges(Canvas c, int left, int right, int top, int bottom);
+ public void setOnScrollListener(Runnable listener);
}
private final class OnLongClickDelegate implements View.OnLongClickListener {
@@ -270,13 +273,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
}
public int numItemsInOneScreenful() {
- if (mRecentsContainer instanceof RecentsScrollView){
- RecentsScrollView scrollView
- = (RecentsScrollView) mRecentsContainer;
- return scrollView.numItemsInOneScreenful();
- } else {
- throw new IllegalArgumentException("missing Recents[Horizontal]ScrollView");
- }
+ return mRecentsContainer.numItemsInOneScreenful();
}
private boolean pointInside(int x, int y, View v) {
@@ -288,7 +285,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
}
public boolean isInContentArea(int x, int y) {
- return pointInside(x, y, mRecentsContainer);
+ return pointInside(x, y, (View) mRecentsContainer);
}
public void show(boolean show) {
@@ -436,16 +433,16 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
protected void onFinishInflate() {
super.onFinishInflate();
- mRecentsContainer = (ViewGroup) findViewById(R.id.recents_container);
+ mRecentsContainer = (RecentsScrollView) findViewById(R.id.recents_container);
+ mRecentsContainer.setOnScrollListener(new Runnable() {
+ public void run() {
+ // need to redraw the faded edges
+ invalidate();
+ }
+ });
mListAdapter = new TaskDescriptionAdapter(mContext);
- if (mRecentsContainer instanceof RecentsScrollView){
- RecentsScrollView scrollView
- = (RecentsScrollView) mRecentsContainer;
- scrollView.setAdapter(mListAdapter);
- scrollView.setCallback(this);
- } else {
- throw new IllegalArgumentException("missing Recents[Horizontal]ScrollView");
- }
+ mRecentsContainer.setAdapter(mListAdapter);
+ mRecentsContainer.setCallback(this);
mRecentsScrim = findViewById(R.id.recents_bg_protect);
mRecentsNoApps = findViewById(R.id.recents_no_apps);
@@ -462,11 +459,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
}
public void setMinSwipeAlpha(float minAlpha) {
- if (mRecentsContainer instanceof RecentsScrollView){
- RecentsScrollView scrollView
- = (RecentsScrollView) mRecentsContainer;
- scrollView.setMinSwipeAlpha(minAlpha);
- }
+ mRecentsContainer.setMinSwipeAlpha(minAlpha);
}
private void createCustomAnimations(LayoutTransition transitioner) {
@@ -524,7 +517,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
void onTaskThumbnailLoaded(TaskDescription td) {
synchronized (td) {
if (mRecentsContainer != null) {
- ViewGroup container = mRecentsContainer;
+ ViewGroup container = (ViewGroup) mRecentsContainer;
if (container instanceof RecentsScrollView) {
container = (ViewGroup) container.findViewById(
R.id.recents_linear_layout);
@@ -633,7 +626,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
final int items = mRecentTaskDescriptions != null
? mRecentTaskDescriptions.size() : 0;
- mRecentsContainer.setVisibility(items > 0 ? View.VISIBLE : View.GONE);
+ ((View) mRecentsContainer).setVisibility(items > 0 ? View.VISIBLE : View.GONE);
// Set description for accessibility
int numRecentApps = mRecentTaskDescriptions != null
@@ -650,20 +643,16 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
}
public boolean simulateClick(int persistentTaskId) {
- if (mRecentsContainer instanceof RecentsScrollView){
- RecentsScrollView scrollView
- = (RecentsScrollView) mRecentsContainer;
- View v = scrollView.findViewForTask(persistentTaskId);
- if (v != null) {
- handleOnClick(v);
- return true;
- }
+ View v = mRecentsContainer.findViewForTask(persistentTaskId);
+ if (v != null) {
+ handleOnClick(v);
+ return true;
}
return false;
}
public void handleOnClick(View view) {
- ViewHolder holder = (ViewHolder)view.getTag();
+ ViewHolder holder = (ViewHolder) view.getTag();
TaskDescription ad = holder.taskDescription;
final Context context = view.getContext();
final ActivityManager am = (ActivityManager)
@@ -771,7 +760,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.recent_remove_item) {
- mRecentsContainer.removeViewInLayout(selectedView);
+ ((ViewGroup) mRecentsContainer).removeViewInLayout(selectedView);
} else if (item.getItemId() == R.id.recent_inspect_item) {
ViewHolder viewHolder = (ViewHolder) selectedView.getTag();
if (viewHolder != null) {
@@ -795,4 +784,26 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
});
popup.show();
}
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ super.dispatchDraw(canvas);
+
+ int paddingLeft = mPaddingLeft;
+ final boolean offsetRequired = isPaddingOffsetRequired();
+ if (offsetRequired) {
+ paddingLeft += getLeftPaddingOffset();
+ }
+
+ int left = mScrollX + paddingLeft;
+ int right = left + mRight - mLeft - mPaddingRight - paddingLeft;
+ int top = mScrollY + getFadeTop(offsetRequired);
+ int bottom = top + getFadeHeight(offsetRequired);
+
+ if (offsetRequired) {
+ right += getRightPaddingOffset();
+ bottom += getBottomPaddingOffset();
+ }
+ mRecentsContainer.drawFadedEdges(canvas, left, right, top, bottom);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
index ee076d9..6dddc39 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
@@ -49,9 +49,10 @@ public class RecentsVerticalScrollView extends ScrollView
private RecentsCallback mCallback;
protected int mLastScrollPosition;
private SwipeHelper mSwipeHelper;
- private RecentsScrollViewPerformanceHelper mPerformanceHelper;
+ private FadedEdgeDrawHelper mFadedEdgeDrawHelper;
private HashSet<View> mRecycledViews;
private int mNumItemsInOneScreenful;
+ private Runnable mOnScrollListener;
public RecentsVerticalScrollView(Context context, AttributeSet attrs) {
super(context, attrs, 0);
@@ -59,7 +60,7 @@ public class RecentsVerticalScrollView extends ScrollView
float pagingTouchSlop = ViewConfiguration.get(mContext).getScaledPagingTouchSlop();
mSwipeHelper = new SwipeHelper(SwipeHelper.X, this, densityScale, pagingTouchSlop);
- mPerformanceHelper = RecentsScrollViewPerformanceHelper.create(context, attrs, this, true);
+ mFadedEdgeDrawHelper = FadedEdgeDrawHelper.create(context, attrs, this, true);
mRecycledViews = new HashSet<View>();
}
@@ -112,8 +113,8 @@ public class RecentsVerticalScrollView extends ScrollView
}
final View view = mAdapter.getView(i, old, mLinearLayout);
- if (mPerformanceHelper != null) {
- mPerformanceHelper.addViewCallback(view);
+ if (mFadedEdgeDrawHelper != null) {
+ mFadedEdgeDrawHelper.addViewCallback(view);
}
OnTouchListener noOpListener = new OnTouchListener() {
@@ -243,36 +244,32 @@ public class RecentsVerticalScrollView extends ScrollView
}
@Override
- public void draw(Canvas canvas) {
- super.draw(canvas);
-
- if (mPerformanceHelper != null) {
- int paddingLeft = mPaddingLeft;
+ public void drawFadedEdges(Canvas canvas, int left, int right, int top, int bottom) {
+ if (mFadedEdgeDrawHelper != null) {
final boolean offsetRequired = isPaddingOffsetRequired();
- if (offsetRequired) {
- paddingLeft += getLeftPaddingOffset();
- }
-
- int left = mScrollX + paddingLeft;
- int right = left + mRight - mLeft - mPaddingRight - paddingLeft;
- int top = mScrollY + getFadeTop(offsetRequired);
- int bottom = top + getFadeHeight(offsetRequired);
-
- if (offsetRequired) {
- right += getRightPaddingOffset();
- bottom += getBottomPaddingOffset();
- }
- mPerformanceHelper.drawCallback(canvas,
- left, right, top, bottom, mScrollX, mScrollY,
+ mFadedEdgeDrawHelper.drawCallback(canvas,
+ left, right, top + getFadeTop(offsetRequired), bottom, mScrollX, mScrollY,
getTopFadingEdgeStrength(), getBottomFadingEdgeStrength(),
0, 0, mPaddingTop);
}
}
@Override
+ protected void onScrollChanged(int l, int t, int oldl, int oldt) {
+ super.onScrollChanged(l, t, oldl, oldt);
+ if (mOnScrollListener != null) {
+ mOnScrollListener.run();
+ }
+ }
+
+ public void setOnScrollListener(Runnable listener) {
+ mOnScrollListener = listener;
+ }
+
+ @Override
public int getVerticalFadingEdgeLength() {
- if (mPerformanceHelper != null) {
- return mPerformanceHelper.getVerticalFadingEdgeLengthCallback();
+ if (mFadedEdgeDrawHelper != null) {
+ return mFadedEdgeDrawHelper.getVerticalFadingEdgeLength();
} else {
return super.getVerticalFadingEdgeLength();
}
@@ -280,8 +277,8 @@ public class RecentsVerticalScrollView extends ScrollView
@Override
public int getHorizontalFadingEdgeLength() {
- if (mPerformanceHelper != null) {
- return mPerformanceHelper.getHorizontalFadingEdgeLengthCallback();
+ if (mFadedEdgeDrawHelper != null) {
+ return mFadedEdgeDrawHelper.getHorizontalFadingEdgeLength();
} else {
return super.getHorizontalFadingEdgeLength();
}
@@ -299,9 +296,8 @@ public class RecentsVerticalScrollView extends ScrollView
@Override
public void onAttachedToWindow() {
- if (mPerformanceHelper != null) {
- mPerformanceHelper.onAttachedToWindowCallback(
- mCallback, mLinearLayout, isHardwareAccelerated());
+ if (mFadedEdgeDrawHelper != null) {
+ mFadedEdgeDrawHelper.onAttachedToWindowCallback(mLinearLayout, isHardwareAccelerated());
}
}