diff options
-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.java | 56 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java | 81 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java | 58 |
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()); } } |