Skip to content

Commit a38b253

Browse files
cdotstoutAndroid (Google) Code Review
authored andcommitted
Merge "Add playback progress." into lmp-dev
2 parents afb9296 + 085f437 commit a38b253

File tree

1 file changed

+52
-6
lines changed

1 file changed

+52
-6
lines changed

samples/SupportLeanbackDemos/src/com/example/android/leanback/PlaybackOverlayFragment.java

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import android.content.Context;
1717
import android.content.res.Resources;
1818
import android.os.Bundle;
19+
import android.os.Handler;
1920
import android.support.v17.leanback.widget.Action;
2021
import android.support.v17.leanback.widget.ArrayObjectAdapter;
2122
import android.support.v17.leanback.widget.ClassPresenterSelector;
@@ -32,22 +33,28 @@
3233
public class PlaybackOverlayFragment extends android.support.v17.leanback.app.PlaybackOverlayFragment {
3334
private static final String TAG = "leanback.PlaybackControlsFragment";
3435

35-
private static final int NUM_ROWS = 3;
36-
private static final boolean SHOW_ITEM_DETAIL = true;
36+
private static final boolean SHOW_DETAIL = true;
37+
private static final boolean SHOW_IMAGE = true;
3738
private static final boolean HIDE_MORE_ACTIONS = false;
39+
private static final int TOTAL_TIME_MS = 120 * 1000;
40+
private static final int NUM_ROWS = 3;
3841

3942
private ArrayObjectAdapter mRowsAdapter;
4043
private ArrayObjectAdapter mPrimaryActionsAdapter;
4144
private ArrayObjectAdapter mSecondaryActionsAdapter;
4245
private PlaybackControlsRow.PlayPauseAction mPlayPauseAction;
4346
private PlaybackControlsRow.RepeatAction mRepeatAction;
4447
private PlaybackControlsRow mPlaybackControlsRow;
48+
private Handler mHandler;
49+
private Runnable mRunnable;
4550

4651
@Override
4752
public void onCreate(Bundle savedInstanceState) {
4853
Log.i(TAG, "onCreate");
4954
super.onCreate(savedInstanceState);
5055

56+
mHandler = new Handler();
57+
5158
setupRows();
5259
}
5360

@@ -59,7 +66,7 @@ private void setupRows() {
5966
ClassPresenterSelector ps = new ClassPresenterSelector();
6067

6168
PlaybackControlsRowPresenter playbackControlsRowPresenter;
62-
if (SHOW_ITEM_DETAIL) {
69+
if (SHOW_DETAIL) {
6370
playbackControlsRowPresenter = new PlaybackControlsRowPresenter(
6471
new DetailsDescriptionPresenter());
6572
} else {
@@ -69,6 +76,15 @@ private void setupRows() {
6976
public void onActionClicked(Action action) {
7077
Toast.makeText(getActivity(), action.toString(), Toast.LENGTH_SHORT).show();
7178
if (action.getId() == mPlayPauseAction.getId()) {
79+
if (mPlayPauseAction.isPlayIconShown()) {
80+
int totalTime = mPlaybackControlsRow.getTotalTime();
81+
if (totalTime > 0 && mPlaybackControlsRow.getCurrentTime() >= totalTime) {
82+
mPlaybackControlsRow.setCurrentTime(0);
83+
}
84+
startProgressAutomation();
85+
} else {
86+
stopProgressAutomation();
87+
}
7288
mPlayPauseAction.toggle();
7389
notifyChanged(mPrimaryActionsAdapter, mPlayPauseAction);
7490
} else if (action.getId() == mRepeatAction.getId()) {
@@ -95,15 +111,21 @@ private void addPlaybackControlsRow() {
95111
mPrimaryActionsAdapter = new ArrayObjectAdapter(presenterSelector);
96112
mSecondaryActionsAdapter = new ArrayObjectAdapter(presenterSelector);
97113

98-
if (SHOW_ITEM_DETAIL) {
114+
if (SHOW_DETAIL) {
99115
mPlaybackControlsRow = new PlaybackControlsRow("Playback Controls Title");
100-
mPlaybackControlsRow.setImageDrawable(context.getResources().getDrawable(
101-
R.drawable.details_img));
102116
} else {
103117
mPlaybackControlsRow = new PlaybackControlsRow();
104118
}
119+
if (SHOW_IMAGE) {
120+
mPlaybackControlsRow.setImageDrawable(context.getResources().getDrawable(
121+
R.drawable.details_img));
122+
}
105123
mPlaybackControlsRow.setPrimaryActionsAdapter(mPrimaryActionsAdapter);
106124
mPlaybackControlsRow.setSecondaryActionsAdapter(mSecondaryActionsAdapter);
125+
mPlaybackControlsRow.setTotalTime(TOTAL_TIME_MS);
126+
mPlaybackControlsRow.setCurrentTime(10 * 1000);
127+
mPlaybackControlsRow.setBufferedProgress(75 * 1000);
128+
107129
mRowsAdapter.add(mPlaybackControlsRow);
108130

109131
mPlayPauseAction = new PlaybackControlsRow.PlayPauseAction(context);
@@ -128,4 +150,28 @@ private void addPlaybackControlsRow() {
128150
mRowsAdapter.add(new ListRow(header, listRowAdapter));
129151
}
130152
}
153+
154+
private void startProgressAutomation() {
155+
int width = getView().getWidth();
156+
final int totalTime = mPlaybackControlsRow.getTotalTime();
157+
final int updateFreq = totalTime <= 0 ? 1000 :
158+
Math.max(16, totalTime / width);
159+
mRunnable = new Runnable() {
160+
@Override
161+
public void run() {
162+
int currentTime = mPlaybackControlsRow.getCurrentTime() + updateFreq;
163+
mPlaybackControlsRow.setCurrentTime(currentTime);
164+
if (totalTime <= 0 || totalTime > currentTime) {
165+
mHandler.postDelayed(this, updateFreq);
166+
}
167+
}
168+
};
169+
mHandler.postDelayed(mRunnable, updateFreq);
170+
}
171+
172+
private void stopProgressAutomation() {
173+
if (mHandler != null && mRunnable != null) {
174+
mHandler.removeCallbacks(mRunnable);
175+
}
176+
}
131177
}

0 commit comments

Comments
 (0)