Always enable hardware layers in widgets in keyguard while dragging.
This fixes a performance issue on the 7" tablet where disabling hardware layers in landscape mode resulted in extremely bad drawing performance. The code now enables hardware layers for all the widgets while the user is dragging. Fixes bug 7274971 Change-Id: Iafd18fb317fcd3caad45791fe5a0f111d40a1ed4
This commit is contained in:
@@ -117,14 +117,7 @@ public class KeyguardWidgetFrame extends FrameLayout {
|
||||
mOverScrollAmount = r;
|
||||
mForegroundGradient = left ? mLeftToRightGradient : mRightToLeftGradient;
|
||||
mForegroundAlpha = (int) Math.round((0.85f * r * 255));
|
||||
if (getLayerType() != LAYER_TYPE_HARDWARE) {
|
||||
setLayerType(LAYER_TYPE_HARDWARE, null);
|
||||
}
|
||||
invalidate();
|
||||
} else {
|
||||
if (getLayerType() != LAYER_TYPE_NONE) {
|
||||
setLayerType(LAYER_TYPE_NONE, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,6 +76,25 @@ public class KeyguardWidgetPager extends PagedView {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPageBeginMoving() {
|
||||
// Enable hardware layers while pages are moving
|
||||
// TODO: We should only do this for the two views that are actually moving
|
||||
int children = getChildCount();
|
||||
for (int i = 0; i < children; i++) {
|
||||
getChildAt(i).setLayerType(LAYER_TYPE_HARDWARE, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPageEndMoving() {
|
||||
// Disable hardware layers while pages are moving
|
||||
int children = getChildCount();
|
||||
for (int i = 0; i < children; i++) {
|
||||
getChildAt(i).setLayerType(LAYER_TYPE_NONE, null);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This interpolator emulates the rate at which the perceived scale of an object changes
|
||||
* as its distance from a camera increases. When this interpolator is applied to a scale
|
||||
|
||||
Reference in New Issue
Block a user