我现在想实现播放video时,左右滑屏实现上一个,下一个文件的切换,并且在切换过程中加入动画,请大侠们指教下啊感激
解决方案 »
- Android的联系人智能搜索
- android 自己的服务,发出通知提示,遇到错误logcat如下,求解???
- android如何实现外接键盘和鼠标??
- 关于Android中的View
- 如何通过android模拟器从android market上下载软件
- 求助:想实现手机应用程序自带数据库,不使用Android提供的SQLITE,如何实现?
- 封装对话框或Toast的疑问
- android 更改图片的大小,比方说原图片是1800*2400px,现在我需要给定宽度为600px,等比例缩小相当于重新生成一个图片为600*800px
- 最新百分百获得100QB话费活动!!!
- SVN连接不上指定的URL,说是参数错误,不知道要怎么解决。
- 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