summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-02-01 22:06:55 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-02-01 22:06:55 -0800
commit4e96efe2edb73a8fbe4b89e85e03327da9796d80 (patch)
tree67c199389a905d505ef3eb2a0badfebd1bb50f10 /core
parent12bf1133bd45039e8498d188731c546829faa1a2 (diff)
parenta42ee6994b59c02a745cb5d0f8ec257d01424753 (diff)
downloadframeworks_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.java2
-rw-r--r--core/java/android/view/ViewGroup.java37
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);
}
/**