Merge "Improve text scaling animation for BottomNavigationView." into nyc-mr1-dev
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java
index 802c4d3..c601ca8 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java
@@ -67,7 +67,6 @@
setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title));
setTitle("Leanback Sample App");
setHeadersState(HEADERS_ENABLED);
- setupRows();
setOnSearchClickedListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -101,6 +100,7 @@
// simulates in a real world use case data being loaded two seconds later
new Handler().postDelayed(new Runnable() {
public void run() {
+ setupRows();
loadData();
startEntranceTransition();
}
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java
index 48c1462..7719b0e 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java
@@ -69,7 +69,6 @@
setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title));
setTitle("Leanback Sample App");
setHeadersState(HEADERS_ENABLED);
- setupRows();
setOnSearchClickedListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -103,6 +102,7 @@
// simulates in a real world use case data being loaded two seconds later
new Handler().postDelayed(new Runnable() {
public void run() {
+ setupRows();
loadData();
startEntranceTransition();
}
diff --git a/v17/leanback/res/values/styles.xml b/v17/leanback/res/values/styles.xml
index 491364e..59bf520 100644
--- a/v17/leanback/res/values/styles.xml
+++ b/v17/leanback/res/values/styles.xml
@@ -168,7 +168,7 @@
<item name="android:layout_toStartOf">@+id/extra_badge</item>
<item name="android:maxLines">1</item>
<item name="android:textAlignment">viewStart</item>
- <item name="android:ellipsize">none</item>
+ <item name="android:ellipsize">end</item>
<item name="android:textAppearance">@style/TextAppearance.Leanback.ImageCardView.Content</item>
</style>
diff --git a/v17/leanback/src/android/support/v17/leanback/app/BrowseFragment.java b/v17/leanback/src/android/support/v17/leanback/app/BrowseFragment.java
index e2cb22f8..fa3aae3 100644
--- a/v17/leanback/src/android/support/v17/leanback/app/BrowseFragment.java
+++ b/v17/leanback/src/android/support/v17/leanback/app/BrowseFragment.java
@@ -1187,7 +1187,9 @@
private void setupMainFragment() {
if (mMainFragmentRowsAdapter != null) {
- mMainFragmentRowsAdapter.setAdapter(new ListRowDataAdapter(mAdapter));
+ if (mAdapter != null) {
+ mMainFragmentRowsAdapter.setAdapter(new ListRowDataAdapter(mAdapter));
+ }
mMainFragmentRowsAdapter.setOnItemViewSelectedListener(
new MainFragmentItemViewSelectedListener(mMainFragmentRowsAdapter));
mMainFragmentRowsAdapter.setOnItemViewClickedListener(mOnItemViewClickedListener);
diff --git a/v17/leanback/src/android/support/v17/leanback/app/BrowseSupportFragment.java b/v17/leanback/src/android/support/v17/leanback/app/BrowseSupportFragment.java
index 5be65a7..53d53a3 100644
--- a/v17/leanback/src/android/support/v17/leanback/app/BrowseSupportFragment.java
+++ b/v17/leanback/src/android/support/v17/leanback/app/BrowseSupportFragment.java
@@ -1189,7 +1189,9 @@
private void setupMainFragment() {
if (mMainFragmentRowsAdapter != null) {
- mMainFragmentRowsAdapter.setAdapter(new ListRowDataAdapter(mAdapter));
+ if (mAdapter != null) {
+ mMainFragmentRowsAdapter.setAdapter(new ListRowDataAdapter(mAdapter));
+ }
mMainFragmentRowsAdapter.setOnItemViewSelectedListener(
new MainFragmentItemViewSelectedListener(mMainFragmentRowsAdapter));
mMainFragmentRowsAdapter.setOnItemViewClickedListener(mOnItemViewClickedListener);
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseFragmentTest.java b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseFragmentTest.java
index c9a33ff..afeb175 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseFragmentTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseFragmentTest.java
@@ -132,6 +132,26 @@
assertEquals(selectItem, row.getGridView().getSelectedPosition());
}
+ @Test
+ public void activityRecreate_notCrash() throws InterruptedException {
+ final long dataLoadingDelay = 1000;
+ Intent intent = new Intent();
+ intent.putExtra(BrowseFragmentTestActivity.EXTRA_LOAD_DATA_DELAY, dataLoadingDelay);
+ intent.putExtra(BrowseFragmentTestActivity.EXTRA_ADD_TO_BACKSTACK , false);
+ intent.putExtra(BrowseFragmentTestActivity.EXTRA_SET_ADAPTER_AFTER_DATA_LOAD, true);
+ mActivity = activityTestRule.launchActivity(intent);
+
+ Thread.sleep(dataLoadingDelay + TRANSITION_LENGTH);
+
+ InstrumentationRegistry.getInstrumentation().callActivityOnRestart(mActivity);
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ mActivity.recreate();
+ }
+ });
+ }
+
private void sendKeys(int ...keys) {
for (int i = 0; i < keys.length; i++) {
InstrumentationRegistry.getInstrumentation().sendKeyDownUpSync(keys[i]);
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseFragmentTestActivity.java b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseFragmentTestActivity.java
index d867c9d..1fe145e 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseFragmentTestActivity.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseFragmentTestActivity.java
@@ -32,6 +32,7 @@
public static final String EXTRA_REPEAT_PER_ROW = "repeatPerRow";
public static final String EXTRA_LOAD_DATA_DELAY = "loadDataDelay";
public static final String EXTRA_TEST_ENTRANCE_TRANSITION = "testEntranceTransition";
+ public final static String EXTRA_SET_ADAPTER_AFTER_DATA_LOAD = "set_adapter_after_data_load";
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -47,6 +48,9 @@
BrowseTestFragment.TEST_ENTRANCE_TRANSITION = intent.getBooleanExtra(
EXTRA_TEST_ENTRANCE_TRANSITION,
BrowseTestFragment.DEFAULT_TEST_ENTRANCE_TRANSITION);
+ BrowseTestFragment.SET_ADAPTER_AFTER_DATA_LOAD = intent.getBooleanExtra(
+ EXTRA_SET_ADAPTER_AFTER_DATA_LOAD,
+ BrowseTestFragment.DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD);
setContentView(R.layout.browse);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.main_frame, new BrowseTestFragment());
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseSupportFragmentTest.java b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseSupportFragmentTest.java
index 59040dc..bab554d 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseSupportFragmentTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseSupportFragmentTest.java
@@ -134,6 +134,26 @@
assertEquals(selectItem, row.getGridView().getSelectedPosition());
}
+ @Test
+ public void activityRecreate_notCrash() throws InterruptedException {
+ final long dataLoadingDelay = 1000;
+ Intent intent = new Intent();
+ intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_LOAD_DATA_DELAY, dataLoadingDelay);
+ intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_ADD_TO_BACKSTACK , false);
+ intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_SET_ADAPTER_AFTER_DATA_LOAD, true);
+ mActivity = activityTestRule.launchActivity(intent);
+
+ Thread.sleep(dataLoadingDelay + TRANSITION_LENGTH);
+
+ InstrumentationRegistry.getInstrumentation().callActivityOnRestart(mActivity);
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ mActivity.recreate();
+ }
+ });
+ }
+
private void sendKeys(int ...keys) {
for (int i = 0; i < keys.length; i++) {
InstrumentationRegistry.getInstrumentation().sendKeyDownUpSync(keys[i]);
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseSupportFragmentTestActivity.java b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseSupportFragmentTestActivity.java
index 349e2bde..fd3ba88 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseSupportFragmentTestActivity.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseSupportFragmentTestActivity.java
@@ -34,6 +34,7 @@
public static final String EXTRA_REPEAT_PER_ROW = "repeatPerRow";
public static final String EXTRA_LOAD_DATA_DELAY = "loadDataDelay";
public static final String EXTRA_TEST_ENTRANCE_TRANSITION = "testEntranceTransition";
+ public final static String EXTRA_SET_ADAPTER_AFTER_DATA_LOAD = "set_adapter_after_data_load";
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -49,6 +50,9 @@
BrowseTestSupportFragment.TEST_ENTRANCE_TRANSITION = intent.getBooleanExtra(
EXTRA_TEST_ENTRANCE_TRANSITION,
BrowseTestSupportFragment.DEFAULT_TEST_ENTRANCE_TRANSITION);
+ BrowseTestSupportFragment.SET_ADAPTER_AFTER_DATA_LOAD = intent.getBooleanExtra(
+ EXTRA_SET_ADAPTER_AFTER_DATA_LOAD,
+ BrowseTestSupportFragment.DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD);
setContentView(R.layout.browse);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.main_frame, new BrowseTestSupportFragment());
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseTestFragment.java b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseTestFragment.java
index c77809d..a45f51d 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseTestFragment.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseTestFragment.java
@@ -38,11 +38,13 @@
final static int DEFAULT_REPEAT_PER_ROW = 20;
final static long DEFAULT_LOAD_DATA_DELAY = 2000;
final static boolean DEFAULT_TEST_ENTRANCE_TRANSITION = true;
+ final static boolean DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD = false;
static int NUM_ROWS = DEFAULT_NUM_ROWS;
static int REPEAT_PER_ROW = DEFAULT_REPEAT_PER_ROW;
static long LOAD_DATA_DELAY = DEFAULT_LOAD_DATA_DELAY;
static boolean TEST_ENTRANCE_TRANSITION = DEFAULT_TEST_ENTRANCE_TRANSITION;
+ static boolean SET_ADAPTER_AFTER_DATA_LOAD = DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD;
private ArrayObjectAdapter mRowsAdapter;
@@ -55,6 +57,10 @@
Log.i(TAG, "onCreate");
super.onCreate(savedInstanceState);
+ if (!SET_ADAPTER_AFTER_DATA_LOAD) {
+ setupRows();
+ }
+
setTitle("BrowseTestFragment");
setHeadersState(HEADERS_ENABLED);
@@ -65,7 +71,6 @@
}
});
- setupRows();
setOnItemViewClickedListener(new ItemViewClickedListener());
setOnItemViewSelectedListener(new OnItemViewSelectedListener() {
@Override
@@ -84,6 +89,9 @@
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
+ if (SET_ADAPTER_AFTER_DATA_LOAD) {
+ setupRows();
+ }
loadData();
startEntranceTransition();
}
@@ -114,7 +122,6 @@
HeaderItem header = new HeaderItem(i, "Row " + i);
mRowsAdapter.add(new ListRow(header, listRowAdapter));
}
-
}
private final class ItemViewClickedListener implements OnItemViewClickedListener {
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseTestSupportFragment.java b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseTestSupportFragment.java
index b8f16d302c..4aa27a5 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseTestSupportFragment.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/BrowseTestSupportFragment.java
@@ -40,11 +40,13 @@
final static int DEFAULT_REPEAT_PER_ROW = 20;
final static long DEFAULT_LOAD_DATA_DELAY = 2000;
final static boolean DEFAULT_TEST_ENTRANCE_TRANSITION = true;
+ final static boolean DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD = false;
static int NUM_ROWS = DEFAULT_NUM_ROWS;
static int REPEAT_PER_ROW = DEFAULT_REPEAT_PER_ROW;
static long LOAD_DATA_DELAY = DEFAULT_LOAD_DATA_DELAY;
static boolean TEST_ENTRANCE_TRANSITION = DEFAULT_TEST_ENTRANCE_TRANSITION;
+ static boolean SET_ADAPTER_AFTER_DATA_LOAD = DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD;
private ArrayObjectAdapter mRowsAdapter;
@@ -57,6 +59,10 @@
Log.i(TAG, "onCreate");
super.onCreate(savedInstanceState);
+ if (!SET_ADAPTER_AFTER_DATA_LOAD) {
+ setupRows();
+ }
+
setTitle("BrowseTestSupportFragment");
setHeadersState(HEADERS_ENABLED);
@@ -67,7 +73,6 @@
}
});
- setupRows();
setOnItemViewClickedListener(new ItemViewClickedListener());
setOnItemViewSelectedListener(new OnItemViewSelectedListener() {
@Override
@@ -86,6 +91,9 @@
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
+ if (SET_ADAPTER_AFTER_DATA_LOAD) {
+ setupRows();
+ }
loadData();
startEntranceTransition();
}
@@ -116,7 +124,6 @@
HeaderItem header = new HeaderItem(i, "Row " + i);
mRowsAdapter.add(new ListRow(header, listRowAdapter));
}
-
}
private final class ItemViewClickedListener implements OnItemViewClickedListener {