Merge "Optimize RTL properties resolution" into jb-mr2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8c2e3a412a
@ -11749,10 +11749,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
/**
|
||||
* Resolve all RTL related properties.
|
||||
*
|
||||
* @return true if resolution of RTL properties has been done
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void resolveRtlPropertiesIfNeeded() {
|
||||
if (!needRtlPropertiesResolution()) return;
|
||||
public boolean resolveRtlPropertiesIfNeeded() {
|
||||
if (!needRtlPropertiesResolution()) return false;
|
||||
|
||||
// Order is important here: LayoutDirection MUST be resolved first
|
||||
if (!isLayoutDirectionResolved()) {
|
||||
@ -11773,6 +11775,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
resolveDrawables();
|
||||
}
|
||||
onRtlPropertiesChanged(getLayoutDirection());
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -11825,6 +11828,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
|
||||
/**
|
||||
* @return true if RTL properties need resolution.
|
||||
*
|
||||
*/
|
||||
private boolean needRtlPropertiesResolution() {
|
||||
return (mPrivateFlags2 & ALL_RTL_PROPERTIES_RESOLVED) != ALL_RTL_PROPERTIES_RESOLVED;
|
||||
|
@ -5453,15 +5453,19 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
||||
* @hide
|
||||
*/
|
||||
@Override
|
||||
public void resolveRtlPropertiesIfNeeded() {
|
||||
super.resolveRtlPropertiesIfNeeded();
|
||||
int count = getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
final View child = getChildAt(i);
|
||||
if (child.isLayoutDirectionInherited()) {
|
||||
child.resolveRtlPropertiesIfNeeded();
|
||||
public boolean resolveRtlPropertiesIfNeeded() {
|
||||
final boolean result = super.resolveRtlPropertiesIfNeeded();
|
||||
// We dont need to resolve the children RTL properties if nothing has changed for the parent
|
||||
if (result) {
|
||||
int count = getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
final View child = getChildAt(i);
|
||||
if (child.isLayoutDirectionInherited()) {
|
||||
child.resolveRtlPropertiesIfNeeded();
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user