diff options
author | Romain Guy <romainguy@google.com> | 2011-02-01 22:06:55 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-02-01 22:06:55 -0800 |
commit | 4e96efe2edb73a8fbe4b89e85e03327da9796d80 (patch) | |
tree | 67c199389a905d505ef3eb2a0badfebd1bb50f10 /core | |
parent | 12bf1133bd45039e8498d188731c546829faa1a2 (diff) | |
parent | a42ee6994b59c02a745cb5d0f8ec257d01424753 (diff) | |
download | frameworks_base-4e96efe2edb73a8fbe4b89e85e03327da9796d80.zip frameworks_base-4e96efe2edb73a8fbe4b89e85e03327da9796d80.tar.gz frameworks_base-4e96efe2edb73a8fbe4b89e85e03327da9796d80.tar.bz2 |
am a42ee699: am 518813ec: Merge "New API to let apps draw without layers. Bug #3413433" into honeycomb
* commit 'a42ee6994b59c02a745cb5d0f8ec257d01424753':
New API to let apps draw without layers. Bug #3413433
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/view/View.java | 2 | ||||
-rw-r--r-- | core/java/android/view/ViewGroup.java | 37 |
2 files changed, 26 insertions, 13 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 1208b23..258a19c 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -6953,7 +6953,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility * well. This is usually true for a full invalidate, but may be set to false if the * View's contents or dimensions have not changed. */ - private void invalidate(boolean invalidateCache) { + void invalidate(boolean invalidateCache) { if (ViewDebug.TRACE_HIERARCHY) { ViewDebug.trace(this, ViewDebug.HierarchyTraceType.INVALIDATE); } diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 5508bbd..9ac955b 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -347,6 +347,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager // views during a transition when they otherwise would have become gone/invisible private ArrayList<View> mVisibilityChangingChildren; + // Indicates whether this container will use its children layers to draw + @ViewDebug.ExportedProperty(category = "drawing") + private boolean mDrawLayers = true; + public ViewGroup(Context context) { super(context); initViewGroup(); @@ -2160,7 +2164,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager flags = mGroupFlags; if ((flags & FLAG_INVALIDATE_REQUIRED) == FLAG_INVALIDATE_REQUIRED) { - invalidate(); + invalidate(true); } if ((flags & FLAG_ANIMATION_DONE) == 0 && (flags & FLAG_NOTIFY_ANIMATION_LISTENER) == 0 && @@ -2216,7 +2220,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } - invalidate(); + invalidate(true); } /** @@ -2275,7 +2279,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager boolean scalingRequired = false; boolean caching; - int layerType = child.getLayerType(); + int layerType = mDrawLayers ? child.getLayerType() : LAYER_TYPE_NONE; final boolean hardwareAccelerated = canvas.isHardwareAccelerated(); if ((flags & FLAG_CHILDREN_DRAWN_WITH_CACHE) == FLAG_CHILDREN_DRAWN_WITH_CACHE || @@ -2552,10 +2556,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager // invalidation is the trigger to recreate display lists, so if we're using // display lists to render, force an invalidate to allow the animation to // continue drawing another frame - invalidate(); + invalidate(true); if (a instanceof AlphaAnimation) { // alpha animations should cause the child to recreate its display list - child.invalidate(); + child.invalidate(true); } } @@ -2565,6 +2569,17 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } /** + * + * @param enabled True if children should be drawn with layers, false otherwise. + * + * @hide + */ + public void setChildrenLayersEnabled(boolean enabled) { + mDrawLayers = enabled; + invalidate(true); + } + + /** * By default, children are clipped to their bounds before drawing. This * allows view groups to override this behavior for animations, etc. * @@ -2596,7 +2611,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final View[] children = mChildren; final int count = mChildrenCount; for (int i = 0; i < count; i++) { - children[i].setSelected(selected); } } @@ -2609,7 +2623,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final View[] children = mChildren; final int count = mChildrenCount; for (int i = 0; i < count; i++) { - children[i].setActivated(activated); } } @@ -2802,7 +2815,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager // therefore, we call requestLayout() on ourselves before, so that the child's request // will be blocked at our level requestLayout(); - invalidate(); + invalidate(true); addViewInner(child, index, params, false); } @@ -3084,7 +3097,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager public void removeView(View view) { removeViewInternal(view); requestLayout(); - invalidate(); + invalidate(true); } /** @@ -3116,7 +3129,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager public void removeViewAt(int index) { removeViewInternal(index, getChildAt(index)); requestLayout(); - invalidate(); + invalidate(true); } /** @@ -3128,7 +3141,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager public void removeViews(int start, int count) { removeViewsInternal(start, count); requestLayout(); - invalidate(); + invalidate(true); } private void removeViewInternal(View view) { @@ -3253,7 +3266,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager public void removeAllViews() { removeAllViewsInLayout(); requestLayout(); - invalidate(); + invalidate(true); } /** |