魅族seek 适配bug

1.  seek 点击哪里只移动一段,而不是点那里移动到哪里的bug 
package com.sina.sinavideo.sdk.widgets;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.SeekBar;

import com.sina.sinavideo.sdk.VDVideoViewController;
import com.sina.sinavideo.sdk.VDVideoViewListeners;
import com.sina.sinavideo.sdk.data.VDPlayerInfo;
import com.sina.sinavideo.sdk.data.VDVideoInfo;
import com.sina.sinavideo.sdk.dlna.DLNAController;
import com.sina.sinavideo.sdk.utils.VDUtility;
import com.sina.video_playersdkv2.R;

/**
 * 视频进度拖动条
 * 
 * @author liuqun
 * 
 */
public final class VDVideoPlaySeekBar extends SeekBar implements VDBaseWidget,
		VDVideoViewListeners.OnProgressUpdateListener,
		SeekBar.OnSeekBarChangeListener,
		VDVideoViewListeners.OnBufferingUpdateListener {

	private final static String TAG = "VDVideoPlaySeekBar";

	private Drawable mThumb;
	private long mDuration;

	public VDVideoPlaySeekBar(Context context) {
		super(context);
		setProgressDrawable(getResources().getDrawable(
				R.drawable.play_seekbar_background));
		mThumb = getResources().getDrawable(R.drawable.play_ctrl_sound_ball);
		setThumb(mThumb);
		init();
	}

	public VDVideoPlaySeekBar(Context context, AttributeSet attrs) {
		super(context, attrs);
		TypedArray typedArr = context.obtainStyledAttributes(attrs,
				new int[] { android.R.attr.progressDrawable });

		if (typedArr != null) {
			int resouceID = typedArr.getResourceId(0, -1);
			if (resouceID == -1) {
				setProgressDrawable(getResources().getDrawable(
						R.drawable.play_seekbar_background));
				mThumb = getResources().getDrawable(R.drawable.play_ctrl_sound_ball);
				setThumb(mThumb);
			}
			typedArr.recycle();
		} else {
			setProgressDrawable(getResources().getDrawable(R.drawable.play_seekbar_background));
			mThumb = getResources().getDrawable(R.drawable.play_ctrl_sound_ball);
			setThumb(mThumb);
		}

		init();
	}

	private void init() {
		setOnSeekBarChangeListener(this);
	}

	@Override
	public void reset() {
		VDVideoViewController controller = VDVideoViewController
				.getInstance(this.getContext());
		if (null == controller)
			return;
		VDVideoInfo info = controller.getCurrentVideo();
		if (info != null) {
			onProgressUpdate(info.mVideoPosition, info.mVideoDuration);
		}
		controller.addOnProgressUpdateListener(this);
		controller.addOnBufferingUpdateListener(this);
	}

	@Override
	public void hide() {
		VDVideoViewController controller = VDVideoViewController
				.getInstance(this.getContext());
		if (null != controller)
			controller.removeOnProgressUpdateListener(this);
		if (null != controller)
			controller.removeOnBufferingUpdateListener(this);
	}

	@Override
	public void onProgressUpdate(long current, long duration) {
		if (duration > 0) {
			mDuration = duration;
			if (getMax() != duration && duration > 0) {
				setMax((int) duration);
			}
			setProgress((int) current);
		}
	}

	@Override
	public void onProgressChanged(SeekBar seekBar, int progress,
			boolean fromUser) {
		if (fromUser) {
			VDVideoViewController controller = VDVideoViewController
					.getInstance(this.getContext());
			if (controller != null)
				controller.dragProgressTo((float) progress / mDuration);
			if (controller != null)
				controller.notifyHideControllerBar(VDVideoViewController.DEFAULT_DELAY);
		}
	}

	@Override
	public void onStartTrackingTouch(SeekBar seekBar) {
		VDVideoViewController controller = VDVideoViewController
				.getInstance(this.getContext());
		if (controller == null) {
			return;
		}
		if (!DLNAController.mIsDLNA) {
			VDPlayerInfo playInfo = controller.getPlayerInfo();
			if (playInfo != null) {
			}
		}
		controller.notifyHideControllerBar(VDVideoViewController.DEFAULT_DELAY);
	}

	@Override
	public void onStopTrackingTouch(SeekBar seekBar) {
		VDVideoViewController controller = VDVideoViewController.getInstance(this.getContext());
		if (controller != null)
			controller.notifyHideControllerBar(VDVideoViewController.DEFAULT_DELAY);
		if (DLNAController.mIsDLNA) {
			DLNAController.getInstance(getContext()).seek(getProgress());
		} else {
			if (controller != null){
				if(!VDUtility.getBrand().toString().equalsIgnoreCase("Meizu")  ){
					controller.seekTo(getProgress());
				}

				Log.e("lsw","stop touch ---"+getProgress());
			}


			if (controller != null){
				controller.start();
			}
		}
	}

	@Override
	public void onDragProgess(long progress, long duration) {
		setProgress((int) progress);
	}

	@Override
	public void onBufferingUpdate(int percent) {
		setSecondaryProgress(percent * (getMax() / 100));
	}


	@Override
	public boolean onTouchEvent(MotionEvent event) {

		switch (event.getAction()){
			case MotionEvent.ACTION_DOWN:
				break;
			case MotionEvent.ACTION_UP:
				VDVideoViewController controller = VDVideoViewController.getInstance(this.getContext());
//				Logv("getx===" + event.getX()+"getWidth=="+getWidth()+"--"
//				+ event.getX() / getWidth()
//				+"---"+ VDUtility.getModel().toString() +"brand "+ VDUtility.getBrand().toString()+ "max ="+getMax());

				if(VDUtility.getBrand().toString().equalsIgnoreCase("Meizu")  ){
//					setProgress((int) (getMax() * event.getX()/getWidth()));
//					Logv((int) (getMax() * event.getX()/getWidth())+"-max");

					controller.seekTo((int) (getMax() * event.getX()/getWidth()));
				}



					break;
		}
		return super.onTouchEvent(event);

	}

	private void Logv(String s) {
		Log.e("lsw",s);
	}


}

猜你喜欢

转载自blog.csdn.net/lsw8569013/article/details/79647340