package com.letv.watchball.ui; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import com.letv.watchball.R; import com.letv.watchball.bean.AlbumNew; import com.letv.watchball.bean.Video; import com.letv.watchball.db.PreferencesManager; import com.letv.watchball.utils.UIs; public class PlayAlbumHalfController extends BasePlayController { private PlayAlbumController playAlbumController; /** * 半屏进度布局 * */ private View halfPlayProgressLayout; /** * 半屏控制条 * */ private View halfPlayControllerLayout; /** * 半屏进度跳(可操作) * */ private SeekBar halfPlaySeekBer; /** * 半屏进度跳(不可操作) * */ private ProgressBar halfPlayProgressBar; /** * 半屏进度跳(可操作)布局 * */ private View halfPlaySeekBerLayout; /** * 半屏进度跳(不可操作)布局 * */ private View halfPlayProgressBarLayout; /** * 半屏顶起进度条的view * */ private View halfPlaySupport; /** * 半屏控制 返回 * */ private View halfPlayControllerBack; /** * 半屏控制 播放 * */ public ImageView halfPlayControllerPlay; /** * 半屏控制 全屏 * */ private ImageView halfPlayControllerFull; /** * 片头打点 SeekBer上的 * */ private View halfPlaySeekBerBegin; /** * 片尾打点 SeekBer上的 * */ private View halfPlaySeekBerEnd; /** * 片头打点 Progress上的 * */ private View halfPlayProgressBarEnd; /** * 片尾打点 Progress上的 * */ private View halfPlayProgressBarBegin; /** * 播放布局 * */ private View halfPlayLayout; /** * 倒计时关闭控制条 * */ private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { clickShowAndHide() ; return false; } }); public PlayAlbumHalfController(PlayAlbumController playAlbumController, View root) { findView(root); this.playAlbumController = playAlbumController; } private void findView(View root) { halfPlayProgressLayout = root.findViewById(R.id.detailplay_half_progress); halfPlayControllerLayout = root.findViewById(R.id.detailplay_half_controller); halfPlayLayout = root.findViewById(R.id.detailplay_half_controller_play); halfPlaySeekBer = (SeekBar) root.findViewById(R.id.play_seekbar); halfPlayProgressBar = (ProgressBar) root.findViewById(R.id.play_progressbar); halfPlaySeekBerLayout = root.findViewById(R.id.play_seekbar_layout); halfPlayProgressBarLayout = root.findViewById(R.id.play_progressbar_layout); halfPlaySupport = root.findViewById(R.id.play_support); halfPlayControllerBack = root.findViewById(R.id.controller_back); halfPlayControllerPlay = (ImageView) root.findViewById(R.id.controller_play); halfPlayControllerFull = (ImageView) root.findViewById(R.id.controller_full); halfPlayProgressLayout = root.findViewById(R.id.detailplay_half_progress); halfPlaySeekBerBegin = root.findViewById(R.id.play_seekbar_skip_begin); halfPlaySeekBerEnd = root.findViewById(R.id.play_seekbar_skip_end); halfPlayProgressBarEnd = root.findViewById(R.id.play_progressbar_skip_begin); halfPlayProgressBarBegin = root.findViewById(R.id.play_progressbar_skip_end); halfPlayControllerBack.setOnClickListener(backClick); halfPlayControllerFull.setOnClickListener(fullClick); halfPlayLayout.setVisibility(View.VISIBLE); halfPlaySeekBer.setEnabled(false); halfPlayProgressBar.setEnabled(false); } /** * 进度条变化的监听 * */ private OnSeekBarChangeListener playSeekBarChangeListener = new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { startHandlerHide(); if (callBack != null) callBack.seekFinish(seekBar.getProgress()); } @Override public void onStartTrackingTouch(SeekBar seekBar) { stopHandlerHide(); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { halfPlayProgressBar.setProgress(progress); } }; /** * 点击暂停的监听 * */ private OnClickListener pauseClick = new OnClickListener() { @Override public void onClick(View v) { if (callBack != null) callBack.pause(); } }; /** * 点击播放的监听 * */ private OnClickListener playClick = new OnClickListener() { @Override public void onClick(View v) { if (callBack != null) callBack.star(); } }; /** * 点击全屏的监听 * */ private OnClickListener fullClick = new OnClickListener() { @Override public void onClick(View v) { if (callBack != null) callBack.full(); } }; /** * 点击下载的监听 * */ private OnClickListener backClick = new OnClickListener() { @Override public void onClick(View v) { if (callBack != null) callBack.back(); } }; @Override public void show() { setShow(true); halfPlayControllerLayout.setVisibility(View.VISIBLE); halfPlayProgressLayout.setVisibility(View.VISIBLE); } @Override public void hide() { setShow(false); halfPlayControllerLayout.setVisibility(View.GONE); halfPlayProgressLayout.setVisibility(View.GONE); } @Override public boolean clickShowAndHide() { if(halfPlayControllerLayout.getVisibility() == View.VISIBLE){ if(halfPlaySupport.getVisibility() == View.VISIBLE){ halfPlaySupport.setVisibility(View.GONE); halfPlaySeekBerLayout.setVisibility(View.GONE); halfPlayProgressBarLayout.setVisibility(View.VISIBLE); stopHandlerHide(); } else { halfPlaySupport.setVisibility(View.VISIBLE); halfPlaySeekBerLayout.setVisibility(View.VISIBLE); halfPlayProgressBarLayout.setVisibility(View.GONE); startHandlerHide(); return true ; } } return false ; } @Override public void clickShowAndHide(boolean isShow) { if(isShow()){ if(isShow){ halfPlaySupport.setVisibility(View.VISIBLE); halfPlaySeekBerLayout.setVisibility(View.VISIBLE); halfPlayProgressBarLayout.setVisibility(View.GONE); startHandlerHide(); } else { halfPlaySupport.setVisibility(View.GONE); halfPlaySeekBerLayout.setVisibility(View.GONE); halfPlayProgressBarLayout.setVisibility(View.VISIBLE); stopHandlerHide(); } } } @Override public void initProgress(int max, int progress, int buffer) { halfPlayProgressBar.setMax(max); halfPlayProgressBar.setProgress(progress); halfPlayProgressBar.setSecondaryProgress(buffer); halfPlaySeekBer.setMax(max); halfPlaySeekBer.setProgress(progress); halfPlaySeekBer.setSecondaryProgress(buffer); halfPlaySeekBerLayout.setVisibility(View.GONE); halfPlayProgressBarLayout.setVisibility(View.VISIBLE); updateSkipState(); halfPlaySeekBer.setOnSeekBarChangeListener(playSeekBarChangeListener); halfPlaySeekBer.setEnabled(true); } @Override public void updateProgress(int progress, int buffer) { halfPlaySeekBer.setProgress(progress); halfPlaySeekBer.setSecondaryProgress(buffer); } @Override public void star() { halfPlayControllerPlay.setImageResource(R.drawable.pause_selecter); halfPlayControllerPlay.setOnClickListener(pauseClick); } @Override public void pause() { halfPlayControllerPlay.setImageResource(R.drawable.play_selecter); halfPlayControllerPlay.setOnClickListener(playClick); } @Override public void Inoperable() { halfPlayControllerPlay.setImageResource(R.drawable.play_inoperable); halfPlayControllerPlay.setOnClickListener(null); halfPlaySeekBer.setOnSeekBarChangeListener(null); halfPlaySeekBer.setProgress(0); halfPlaySeekBer.setSecondaryProgress(0); halfPlayProgressBar.setProgress(0); halfPlaySeekBer.setEnabled(false); halfPlayProgressBarBegin.setVisibility(View.GONE); halfPlaySeekBerBegin.setVisibility(View.GONE); halfPlaySeekBerEnd.setVisibility(View.GONE); halfPlayProgressBarEnd.setVisibility(View.GONE); } @Override public void format() { Inoperable(); } @Override public void initIntroduction() { } /** * 打上片头和片尾的点 * */ private void updateSkipState() { if (halfPlaySeekBerBegin != null && halfPlaySeekBerEnd != null && halfPlayProgressBarBegin != null && halfPlayProgressBarEnd != null) { if (PreferencesManager.getInstance().isSkip()) { long btime = playAlbumController.bTime ; long etime = playAlbumController.eTime ; if (btime > 0) { int totalWidth = UIs.getScreenWidth(); int position = (int) (btime * totalWidth * 1.0 / playAlbumController.playRecord.getTotalDuration()); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) halfPlaySeekBerBegin.getLayoutParams(); params.leftMargin = position; halfPlaySeekBerBegin.setLayoutParams(params); halfPlaySeekBerBegin.setVisibility(View.VISIBLE); params = (RelativeLayout.LayoutParams) halfPlayProgressBarBegin.getLayoutParams(); params.leftMargin = position; halfPlayProgressBarBegin.setLayoutParams(params); halfPlayProgressBarBegin.setVisibility(View.VISIBLE); } else { halfPlayProgressBarBegin.setVisibility(View.GONE); halfPlaySeekBerBegin.setVisibility(View.GONE); } if (etime > 0) { int totalWidth = UIs.getScreenWidth(); int position = (int) (etime * totalWidth * 1.0 / playAlbumController.playRecord.getTotalDuration()); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) halfPlaySeekBerEnd.getLayoutParams(); params.leftMargin = position; halfPlaySeekBerEnd.setLayoutParams(params); halfPlaySeekBerEnd.setVisibility(View.VISIBLE); params = (RelativeLayout.LayoutParams) halfPlayProgressBarEnd.getLayoutParams(); params.leftMargin = position; halfPlayProgressBarEnd.setLayoutParams(params); halfPlayProgressBarEnd.setVisibility(View.VISIBLE); } else { halfPlaySeekBerEnd.setVisibility(View.GONE); halfPlayProgressBarEnd.setVisibility(View.GONE); } } else { halfPlayProgressBarBegin.setVisibility(View.GONE); halfPlaySeekBerBegin.setVisibility(View.GONE); halfPlaySeekBerEnd.setVisibility(View.GONE); halfPlayProgressBarEnd.setVisibility(View.GONE); } } } @Override public void onTimeChange() { } @Override public void onNetChange() { } @Override public void onBatteryChange(int curStatus, int curPower) { } @Override public void onVolumeChange(int mar, int progress) { } @Override public void videoChange(AlbumNew album, Video video) { } private void startHandlerHide(){ if(isShow()){ handler.removeMessages(1); handler.sendEmptyMessageDelayed(1, 3000); } } /** * 移除自动隐藏 * */ private void stopHandlerHide(){ handler.removeMessages(1); } @Override public void setTitle(String title) { } }