Avoid animation flashing and fix padding.

Bug: 6446203
Change-Id: Icea64d5d30d894a6438af9278bc2d10b8b921d29
This commit is contained in:
Jeff Sharkey
2012-05-04 11:47:29 -07:00
parent d86d44b745
commit 92811829b3
5 changed files with 32 additions and 33 deletions

View File

@@ -18,8 +18,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight" android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingLeft="@*android:dimen/preference_item_padding_side" android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="@*android:dimen/preference_item_padding_side" android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:paddingTop="8dip" android:paddingTop="8dip"
android:paddingBottom="8dip" android:paddingBottom="8dip"
android:columnCount="3"> android:columnCount="3">

View File

@@ -20,8 +20,8 @@
android:layout_height="40dip" android:layout_height="40dip"
android:orientation="horizontal" android:orientation="horizontal"
android:gravity="center_vertical" android:gravity="center_vertical"
android:paddingLeft="@*android:dimen/preference_item_padding_side" android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="@*android:dimen/preference_item_padding_side"> android:paddingRight="?android:attr/listPreferredItemPaddingRight">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@@ -18,20 +18,22 @@
android:id="@+id/app_detail" android:id="@+id/app_detail"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical"
android:visibility="gone">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@*android:dimen/preference_item_padding_side" android:layout_marginLeft="?android:attr/listPreferredItemPaddingLeft"
android:layout_marginRight="@*android:dimen/preference_item_padding_side" android:layout_marginRight="?android:attr/listPreferredItemPaddingRight"
android:orientation="horizontal"> android:orientation="horizontal">
<LinearLayout <LinearLayout
android:layout_width="0dip" android:layout_width="0dip"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:layout_marginRight="@*android:dimen/preference_item_padding_inner" android:layout_marginTop="8dip"
android:layout_marginRight="8dip"
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
@@ -82,8 +84,8 @@
android:id="@+id/app_settings" android:id="@+id/app_settings"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@*android:dimen/preference_item_padding_side" android:layout_marginLeft="?android:attr/listPreferredItemPaddingLeft"
android:layout_marginRight="@*android:dimen/preference_item_padding_side" android:layout_marginRight="?android:attr/listPreferredItemPaddingRight"
android:layout_marginTop="16dip" android:layout_marginTop="16dip"
android:layout_marginBottom="16dip" android:layout_marginBottom="16dip"
android:text="@string/data_usage_app_settings" /> android:text="@string/data_usage_app_settings" />

View File

@@ -41,8 +41,8 @@
android:id="@+id/usage_summary" android:id="@+id/usage_summary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingLeft="@*android:dimen/preference_item_padding_side" android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="@*android:dimen/preference_item_padding_side" android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:paddingTop="8dip" android:paddingTop="8dip"
android:paddingBottom="8dip" android:paddingBottom="8dip"
android:textAppearance="?android:attr/textAppearanceSmall" /> android:textAppearance="?android:attr/textAppearanceSmall" />
@@ -52,8 +52,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:visibility="gone" android:visibility="gone"
android:paddingLeft="@*android:dimen/preference_item_padding_side" android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="@*android:dimen/preference_item_padding_side" android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:paddingBottom="8dip" android:paddingBottom="8dip"
android:text="@string/data_usage_empty" android:text="@string/data_usage_empty"
android:textAppearance="?android:attr/textAppearanceSmall" /> android:textAppearance="?android:attr/textAppearanceSmall" />

View File

@@ -394,9 +394,6 @@ public class DataUsageSummary extends Fragment {
mUsageSummary = (TextView) mHeader.findViewById(R.id.usage_summary); mUsageSummary = (TextView) mHeader.findViewById(R.id.usage_summary);
mEmpty = (TextView) mHeader.findViewById(android.R.id.empty); mEmpty = (TextView) mHeader.findViewById(android.R.id.empty);
// only assign layout transitions once first layout is finished
mListView.getViewTreeObserver().addOnGlobalLayoutListener(mFirstLayoutListener);
mAdapter = new DataUsageAdapter(mUidDetailProvider, mInsetSide); mAdapter = new DataUsageAdapter(mUidDetailProvider, mInsetSide);
mListView.setOnItemClickListener(mListListener); mListView.setOnItemClickListener(mListListener);
mListView.setAdapter(mAdapter); mListView.setAdapter(mAdapter);
@@ -574,25 +571,22 @@ public class DataUsageSummary extends Fragment {
} }
/** /**
* Listener to setup {@link LayoutTransition} after first layout pass. * Build and assign {@link LayoutTransition} to various containers. Should
* only be assigned after initial layout is complete.
*/ */
private OnGlobalLayoutListener mFirstLayoutListener = new OnGlobalLayoutListener() { private void ensureLayoutTransitions() {
@Override // skip when already setup
public void onGlobalLayout() { if (mChart.getLayoutTransition() != null) return;
mListView.getViewTreeObserver().removeOnGlobalLayoutListener(mFirstLayoutListener);
mTabsContainer.setLayoutTransition(buildLayoutTransition()); mTabsContainer.setLayoutTransition(buildLayoutTransition());
mHeader.setLayoutTransition(buildLayoutTransition()); mHeader.setLayoutTransition(buildLayoutTransition());
mNetworkSwitchesContainer.setLayoutTransition(buildLayoutTransition()); mNetworkSwitchesContainer.setLayoutTransition(buildLayoutTransition());
final LayoutTransition chartTransition = buildLayoutTransition(); final LayoutTransition chartTransition = buildLayoutTransition();
chartTransition.setStartDelay(LayoutTransition.APPEARING, 0); chartTransition.disableTransitionType(LayoutTransition.APPEARING);
chartTransition.setStartDelay(LayoutTransition.DISAPPEARING, 0); chartTransition.disableTransitionType(LayoutTransition.DISAPPEARING);
chartTransition.setAnimator(LayoutTransition.APPEARING, null); mChart.setLayoutTransition(chartTransition);
chartTransition.setAnimator(LayoutTransition.DISAPPEARING, null); }
mChart.setLayoutTransition(chartTransition);
}
};
private static LayoutTransition buildLayoutTransition() { private static LayoutTransition buildLayoutTransition() {
final LayoutTransition transition = new LayoutTransition(); final LayoutTransition transition = new LayoutTransition();
@@ -1176,6 +1170,9 @@ public class DataUsageSummary extends Fragment {
} }
mUsageSummary.setText(getString(summaryRes, totalPhrase, rangePhrase)); mUsageSummary.setText(getString(summaryRes, totalPhrase, rangePhrase));
// initial layout is finished above, ensure we have transitions
ensureLayoutTransitions();
} }
private final LoaderCallbacks<ChartData> mChartDataCallbacks = new LoaderCallbacks< private final LoaderCallbacks<ChartData> mChartDataCallbacks = new LoaderCallbacks<