More features.

Add background.
Add fading enable/disable.
Add track switching.

Change-Id: Ia3495a6ce98498c734cb225bec93403ac734c89c
diff --git a/samples/SupportLeanbackDemos/res/drawable-xhdpi/grid_bg.png b/samples/SupportLeanbackDemos/res/drawable-xhdpi/bg.png
similarity index 100%
rename from samples/SupportLeanbackDemos/res/drawable-xhdpi/grid_bg.png
rename to samples/SupportLeanbackDemos/res/drawable-xhdpi/bg.png
Binary files differ
diff --git a/samples/SupportLeanbackDemos/res/layout/playback_controls.xml b/samples/SupportLeanbackDemos/res/layout/playback_controls.xml
index 357184c..0c9f43c 100644
--- a/samples/SupportLeanbackDemos/res/layout/playback_controls.xml
+++ b/samples/SupportLeanbackDemos/res/layout/playback_controls.xml
@@ -15,9 +15,20 @@
      limitations under the License.
 -->
 
-<fragment xmlns:android="http://schemas.android.com/apk/res/android"
-    android:name="com.example.android.leanback.PlaybackOverlayFragment"
-    android:id="@+id/playback_controls_fragment"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-/>
+    android:layout_height="match_parent" >
+
+    <ImageView
+        android:id="@+id/media_content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:src="@drawable/bg" />
+
+    <fragment
+        android:id="@+id/playback_controls_fragment"
+        android:name="com.example.android.leanback.PlaybackOverlayFragment"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</FrameLayout>
\ No newline at end of file
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java
index 6c157c4..74ab02cb 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java
@@ -15,6 +15,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.v17.leanback.widget.Action;
@@ -28,6 +29,7 @@
 import android.support.v17.leanback.widget.PlaybackControlsRow.ShuffleAction;
 import android.support.v17.leanback.widget.PlaybackControlsRowPresenter;
 import android.support.v17.leanback.widget.HeaderItem;
+import android.support.v17.leanback.widget.VerticalGridView;
 import android.support.v17.leanback.widget.ListRow;
 import android.support.v17.leanback.widget.ListRowPresenter;
 import android.support.v17.leanback.widget.OnActionClickedListener;
@@ -43,6 +45,7 @@
     private static final int PRIMARY_CONTROLS = 7;
     private static final boolean SHOW_IMAGE = PRIMARY_CONTROLS <= 5;
     private static final int TOTAL_TIME_MS = 15 * 1000;
+    private static final int BACKGROUND_TYPE = PlaybackOverlayFragment.BG_LIGHT;
     private static final int NUM_ROWS = 3;
 
     private ArrayObjectAdapter mRowsAdapter;
@@ -54,6 +57,8 @@
     private ThumbsDownAction mThumbsDownAction;
     private ShuffleAction mShuffleAction;
     private PlaybackControlsRow mPlaybackControlsRow;
+    private Drawable mDetailsDrawable;
+    private Drawable mOtherDrawable;
     private Handler mHandler;
     private Runnable mRunnable;
 
@@ -64,6 +69,9 @@
 
         mHandler = new Handler();
 
+        setBackgroundType(BACKGROUND_TYPE);
+        setFadingEnabled(false);
+
         setupRows();
     }
 
@@ -100,8 +108,10 @@
                             mPlaybackControlsRow.setCurrentTime(0);
                         }
                         startProgressAutomation();
+                        setFadingEnabled(true);
                     } else {
                         stopProgressAutomation();
+                        setFadingEnabled(false);
                     }
                 }
                 if (action instanceof PlaybackControlsRow.MultiAction) {
@@ -134,8 +144,9 @@
             mPlaybackControlsRow = new PlaybackControlsRow();
         }
         if (SHOW_IMAGE) {
-            mPlaybackControlsRow.setImageDrawable(context.getResources().getDrawable(
-                    R.drawable.details_img));
+            mDetailsDrawable = context.getResources().getDrawable(R.drawable.details_img);
+            mOtherDrawable = context.getResources().getDrawable(R.drawable.img16x9);
+            mPlaybackControlsRow.setImageDrawable(mDetailsDrawable);
         }
         mPlaybackControlsRow.setPrimaryActionsAdapter(mPrimaryActionsAdapter);
         mPlaybackControlsRow.setSecondaryActionsAdapter(mSecondaryActionsAdapter);
@@ -193,10 +204,16 @@
             @Override
             public void run() {
                 int currentTime = mPlaybackControlsRow.getCurrentTime() + updateFreq;
-                mPlaybackControlsRow.setCurrentTime(currentTime);
-                if (totalTime <= 0 || totalTime > currentTime) {
-                    mHandler.postDelayed(this, updateFreq);
+                if (totalTime > 0 && totalTime <= currentTime) {
+                    currentTime = 0;
+                    mPlaybackControlsRow.setCurrentTime(0);
+                    mPlaybackControlsRow.setImageDrawable(
+                            mPlaybackControlsRow.getImageDrawable() == mDetailsDrawable ?
+                                    mOtherDrawable : mDetailsDrawable);
+                    mRowsAdapter.notifyArrayItemRangeChanged(0, 1);
                 }
+                mPlaybackControlsRow.setCurrentTime(currentTime);
+                mHandler.postDelayed(this, updateFreq);
             }
         };
         mHandler.postDelayed(mRunnable, updateFreq);
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/VerticalGridActivity.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/VerticalGridActivity.java
index c5262b9..5107be5f 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/VerticalGridActivity.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/VerticalGridActivity.java
@@ -24,6 +24,7 @@
     {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.vertical_grid);
-        getWindow().setBackgroundDrawableResource(R.drawable.grid_bg);
+        // TODO: use BackgroundManager here
+        getWindow().setBackgroundDrawableResource(R.drawable.bg);
     }
 }