我现在想实现播放video时,左右滑屏实现上一个,下一个文件的切换,并且在切换过程中加入动画,请大侠们指教下啊感激
解决方案 »
- 如何发送HTTP PUT方式的请求
- 我们公司要做把网站做个 android客户端
- Android访问网络的怪问题!!
- 如何向Android系统自带的邮件程序中自动添加邮箱?
- 怎么让Notification添加的状态图标栏上加上数字,像安卓市场提示有几个应用要升级一样
- JNI:封装Android中Canvas类下的drawBitmap()函数问题请教!
- 重复调用MapView出现问题 理论和代码都很简单 就是不知道为什么一直错 急请大家指点迷津
- Android模拟器中如何实现Ad hoc连接呢?谢谢。。。
- 有个框架结构,不知道怎么设计?大家看看。
- ListView的每一行有一个Button,点击Button后如何得到所在行的position?
- emulator.exe遇到问题需要关闭-----新手需要帮忙
- 用videoview播放3gp文件,总提示 sorry,this video cannot be played.
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;
import android.widget.ViewFlipper;public class MusicViewFlipperActivity extends Activity{
/** Called when the activity is first created. */
private GestureDetector detector;
private ViewFlipper flipper;
private int n=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
flipper=(ViewFlipper)this.findViewById(R.id.viewflipper);
flipper.addView(addTextViewByText(2),new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
//flipper.startFlipping();
flipper.setLongClickable(true);
flipper.setOnTouchListener(new myTouchListener());
detector=new GestureDetector(new myGestureListener());
} private View addTextViewByText(int r) {
// TODO Auto-generated method stub
if(r==0)++n;
else if(r==1)--n;
Log.i("flipper", "this is n: "+n);
String txt="This is the "+n+" text.";
TextView t=new TextView(this);
t.setTextSize(20);
t.setText(txt);
t.setGravity(1);
return t;
}
class myTouchListener implements OnTouchListener{ @Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return detector.onTouchEvent(event);
}
}
class myGestureListener extends GestureDetector.SimpleOnGestureListener{ @Override
public boolean onDoubleTapEvent(MotionEvent e) {
// TODO Auto-generated method stub
return super.onDoubleTapEvent(e);
//return true;
} @Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
super.onLongPress(e);
} @Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
super.onShowPress(e);
} @Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// TODO Auto-generated method stub
return super.onSingleTapConfirmed(e);
//return true;
} @Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return super.onSingleTapUp(e);
//return true;
} @Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
// TODO Auto-generated method stub
return super.onScroll(e1, e2, distanceX, distanceY);
} @Override
public boolean onDoubleTap(MotionEvent e) {
// TODO Auto-generated method stub
return super.onDoubleTap(e);
} @Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
//return super.onDown(e);
return true;
} @Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
Log.i("Fling", "Flinging.");
if(e1.getX()-e2.getX()>120){
flipper.setInAnimation(getApplicationContext(),R.anim.push_left_in);
flipper.setOutAnimation(getApplicationContext(),R.anim.push_left_out);
flipper.addView(addTextViewByText(0),new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
flipper.showNext();
return true;
}
else if(e1.getX()-e2.getX()<-120){
flipper.setInAnimation(getApplicationContext(),R.anim.push_right_in);
flipper.setOutAnimation(getApplicationContext(),R.anim.push_right_out);
flipper.addView(addTextViewByText(1),new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
flipper.showPrevious();
return true;
}
return super.onFling(e1, e2, velocityX, velocityY);
//return true;
}
}
/
}上面这段代码可以实现你说的滑动效果,你只要把里面的textview改成videoview就可以了,还可以每个videoview做一个handle,这样就可以控制其播放了。如果还有什么问题可以留言给我。
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
函数。判断是否有左右滑动的动作,并根据动作做相应的操作。
我猜测是因为你的GestureDetector, 把对gallery做的 gesture , 消耗掉了。
对gallery的滑动应该交给系统去处理,但是你的GestureDetector 先捕获到了这个动作,然后对这个gesture进行的操作。而没有返回给系统,让android去处理这个gesture @Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
//return super.onDown(e);
return true;
}这个函数不能一直返回true ,如果检查到gallery 出现了,就应该返回false, 让android 去处理这个MotionEvent