/** * @description: * @author chenshiqiang E-mail:csqwyyx@163.com * @date 2014年5月11日 下午4:55:14 * @version 1.0 */ package com.csq.thesceneryalong.ui.views.scenery; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.RelativeLayout; import com.csq.thesceneryalong.R; import com.csq.thesceneryalong.db.Scenery; import com.csq.thesceneryalong.utils.apiadapter.ApiUtil; import com.csq.thesceneryalong.utils.apiadapter.video.IVideoView; import com.csq.thesceneryalong.utils.apiadapter.video.VideoPlayerListener; import com.csq.thesceneryalong.utils.dbmodel.SceneryUtil; public class ScenenryVideoItemView extends RelativeLayout implements ScenenryItemView{ // ------------------------ Constants ------------------------ // ------------------------- Fields -------------------------- protected IVideoView vvMedia; protected ImageView ivVideoPlay; protected ProgressBar pbProgress; //private Scenery scenery; private VideoPlayerListener listener = new VideoPlayerListener() { @Override public void onVideoStoped() { // TODO Auto-generated method stub ivVideoPlay.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub ivVideoPlay.setVisibility(View.VISIBLE); } }); } @Override public void onVideoPrepared() { // TODO Auto-generated method stub } @Override public void onVideoPlayed() { // TODO Auto-generated method stub ivVideoPlay.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub ivVideoPlay.setVisibility(View.INVISIBLE); pbProgress.setVisibility(View.VISIBLE); } }); } @Override public void onVideoPaused() { // TODO Auto-generated method stub ivVideoPlay.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub ivVideoPlay.setVisibility(View.VISIBLE); } }); } @Override public void onVideoEnd() { // TODO Auto-generated method stub ivVideoPlay.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub ivVideoPlay.setVisibility(View.VISIBLE); pbProgress.setProgress(100); } }); } @Override public void onProgressChanged(int progress) { // TODO Auto-generated method stub pbProgress.setProgress(progress); } @Override public void onSizeChanged(final int w, final int h) { // TODO Auto-generated method stub /*pbProgress.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub if(w > 0 && h > 0){ pbProgress.setVisibility(View.VISIBLE); }else{ pbProgress.setVisibility(View.INVISIBLE); } } });*/ } }; // ----------------------- Constructors ---------------------- public ScenenryVideoItemView(Context context) { super(context); // TODO Auto-generated constructor stub initView(context); } private void initView(Context context){ View v = LayoutInflater.from(context).inflate(R.layout.itemview_scenery_video, this, true); vvMedia = ApiUtil.getVideoView(this, R.id.vvMedia); ivVideoPlay = (ImageView) v.findViewById(R.id.ivPlay); pbProgress = (ProgressBar) v.findViewById(R.id.pbProgress); vvMedia._setVideoListener(listener); } // -------- Methods for/from SuperClass/Interfaces ----------- @Override protected void onDetachedFromWindow() { // TODO Auto-generated method stub super.onDetachedFromWindow(); onHide(); } @Override public void setData(Scenery scenery) { // TODO Auto-generated method stub //this.scenery = scenery; String path = SceneryUtil.getSceneryFilePath(scenery); vvMedia._setVideoPath(path); } @Override public void releaseResources() { // TODO Auto-generated method stub vvMedia._release(); } @Override public void onShow() { // TODO Auto-generated method stub vvMedia._start(); ivVideoPlay.setVisibility(View.INVISIBLE); } @Override public void onHide() { // TODO Auto-generated method stub if(vvMedia._isPlaying()){ vvMedia._stop(); } ivVideoPlay.setVisibility(View.VISIBLE); pbProgress.setVisibility(View.INVISIBLE); } // --------------------- Methods public ---------------------- // --------------------- Methods private --------------------- // --------------------- Getter & Setter --------------------- // --------------- Inner and Anonymous Classes --------------- }