summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Stout <cstout@google.com>2014-07-29 13:24:21 -0700
committerCraig Stout <cstout@google.com>2014-08-05 12:50:21 -0700
commit6c2688459d7520191d4e529036b7f6cd5707e26c (patch)
treed68957bbdefd9b52e1da73d6514c5ece1dbd63c5
parenta38b253ebbce0305f7fc65218941a9c248e54c5a (diff)
downloadandroid_development-6c2688459d7520191d4e529036b7f6cd5707e26c.tar.gz
android_development-6c2688459d7520191d4e529036b7f6cd5707e26c.tar.bz2
android_development-6c2688459d7520191d4e529036b7f6cd5707e26c.zip
Playback actions improvements
Change-Id: I7c2f477d2a04cba7b0d2910909660e906f0f8211
-rw-r--r--samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java73
1 files changed, 53 insertions, 20 deletions
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java
index db674a2c0..6c157c41b 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java
@@ -21,6 +21,11 @@ import android.support.v17.leanback.widget.Action;
import android.support.v17.leanback.widget.ArrayObjectAdapter;
import android.support.v17.leanback.widget.ClassPresenterSelector;
import android.support.v17.leanback.widget.PlaybackControlsRow;
+import android.support.v17.leanback.widget.PlaybackControlsRow.PlayPauseAction;
+import android.support.v17.leanback.widget.PlaybackControlsRow.RepeatAction;
+import android.support.v17.leanback.widget.PlaybackControlsRow.ThumbsUpAction;
+import android.support.v17.leanback.widget.PlaybackControlsRow.ThumbsDownAction;
+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.ListRow;
@@ -34,16 +39,20 @@ public class PlaybackOverlayFragment extends android.support.v17.leanback.app.Pl
private static final String TAG = "leanback.PlaybackControlsFragment";
private static final boolean SHOW_DETAIL = true;
- private static final boolean SHOW_IMAGE = true;
private static final boolean HIDE_MORE_ACTIONS = false;
- private static final int TOTAL_TIME_MS = 120 * 1000;
+ 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 NUM_ROWS = 3;
private ArrayObjectAdapter mRowsAdapter;
private ArrayObjectAdapter mPrimaryActionsAdapter;
private ArrayObjectAdapter mSecondaryActionsAdapter;
- private PlaybackControlsRow.PlayPauseAction mPlayPauseAction;
- private PlaybackControlsRow.RepeatAction mRepeatAction;
+ private PlayPauseAction mPlayPauseAction;
+ private RepeatAction mRepeatAction;
+ private ThumbsUpAction mThumbsUpAction;
+ private ThumbsDownAction mThumbsDownAction;
+ private ShuffleAction mShuffleAction;
private PlaybackControlsRow mPlaybackControlsRow;
private Handler mHandler;
private Runnable mRunnable;
@@ -58,8 +67,17 @@ public class PlaybackOverlayFragment extends android.support.v17.leanback.app.Pl
setupRows();
}
- private static void notifyChanged(ArrayObjectAdapter adapter, Action action) {
- adapter.notifyArrayItemRangeChanged(adapter.indexOf(action), 1);
+ private void notifyChanged(Action action) {
+ ArrayObjectAdapter adapter = mPrimaryActionsAdapter;
+ if (adapter.indexOf(action) >= 0) {
+ adapter.notifyArrayItemRangeChanged(adapter.indexOf(action), 1);
+ return;
+ }
+ adapter = mSecondaryActionsAdapter;
+ if (adapter.indexOf(action) >= 0) {
+ adapter.notifyArrayItemRangeChanged(adapter.indexOf(action), 1);
+ return;
+ }
}
private void setupRows() {
@@ -76,7 +94,7 @@ public class PlaybackOverlayFragment extends android.support.v17.leanback.app.Pl
public void onActionClicked(Action action) {
Toast.makeText(getActivity(), action.toString(), Toast.LENGTH_SHORT).show();
if (action.getId() == mPlayPauseAction.getId()) {
- if (mPlayPauseAction.isPlayIconShown()) {
+ if (mPlayPauseAction.getIndex() == PlayPauseAction.PLAY) {
int totalTime = mPlaybackControlsRow.getTotalTime();
if (totalTime > 0 && mPlaybackControlsRow.getCurrentTime() >= totalTime) {
mPlaybackControlsRow.setCurrentTime(0);
@@ -85,11 +103,10 @@ public class PlaybackOverlayFragment extends android.support.v17.leanback.app.Pl
} else {
stopProgressAutomation();
}
- mPlayPauseAction.toggle();
- notifyChanged(mPrimaryActionsAdapter, mPlayPauseAction);
- } else if (action.getId() == mRepeatAction.getId()) {
- mRepeatAction.next();
- notifyChanged(mSecondaryActionsAdapter, mRepeatAction);
+ }
+ if (action instanceof PlaybackControlsRow.MultiAction) {
+ ((PlaybackControlsRow.MultiAction) action).nextIndex();
+ notifyChanged(action);
}
}
});
@@ -128,19 +145,35 @@ public class PlaybackOverlayFragment extends android.support.v17.leanback.app.Pl
mRowsAdapter.add(mPlaybackControlsRow);
- mPlayPauseAction = new PlaybackControlsRow.PlayPauseAction(context);
- mRepeatAction = new PlaybackControlsRow.RepeatAction(context);
+ mPlayPauseAction = new PlayPauseAction(context);
+ mRepeatAction = new RepeatAction(context);
+ mThumbsUpAction = new ThumbsUpAction(context);
+ mThumbsDownAction = new ThumbsDownAction(context);
+ mShuffleAction = new ShuffleAction(context);
- mPrimaryActionsAdapter.add(new PlaybackControlsRow.SkipPreviousAction(context));
+ if (PRIMARY_CONTROLS > 5) {
+ mPrimaryActionsAdapter.add(mThumbsUpAction);
+ } else {
+ mSecondaryActionsAdapter.add(mThumbsUpAction);
+ }
+ if (PRIMARY_CONTROLS > 3) {
+ mPrimaryActionsAdapter.add(new PlaybackControlsRow.SkipPreviousAction(context));
+ }
mPrimaryActionsAdapter.add(new PlaybackControlsRow.RewindAction(context));
mPrimaryActionsAdapter.add(mPlayPauseAction);
mPrimaryActionsAdapter.add(new PlaybackControlsRow.FastForwardAction(context));
- mPrimaryActionsAdapter.add(new PlaybackControlsRow.SkipNextAction(context));
-
- mSecondaryActionsAdapter.add(new PlaybackControlsRow.ThumbsUpAction(context));
+ if (PRIMARY_CONTROLS > 3) {
+ mPrimaryActionsAdapter.add(new PlaybackControlsRow.SkipNextAction(context));
+ }
mSecondaryActionsAdapter.add(mRepeatAction);
- mSecondaryActionsAdapter.add(new PlaybackControlsRow.ShuffleAction(context));
- mSecondaryActionsAdapter.add(new PlaybackControlsRow.ThumbsDownAction(context));
+ mSecondaryActionsAdapter.add(mShuffleAction);
+ if (PRIMARY_CONTROLS > 5) {
+ mPrimaryActionsAdapter.add(mThumbsDownAction);
+ } else {
+ mSecondaryActionsAdapter.add(mThumbsDownAction);
+ }
+ mSecondaryActionsAdapter.add(new PlaybackControlsRow.HighQualityAction(context));
+ mSecondaryActionsAdapter.add(new PlaybackControlsRow.ClosedCaptioningAction(context));
for (int i = 0; i < NUM_ROWS; ++i) {
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter());