ViewFlipper如何实现Button,ListView的手势滑动?

ameyume
博客专家认证
2010-12-29 10:05:28
如题,在ViewFlipper中添加Button和ListView后,如何在触摸Button,LitView的item后,实现左右滑动呢?
Textview和ImageView是可以左右滑动的,但Button和ListView就不知道如何滑动,现在是在ListView上手势滑动变成了单击,要么就没反应。
...全文
3443 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
yahier 2012-11-14
  • 打赏
  • 举报
回复
this.mGestureDetector.onTouchEvent(ev); 就一句 神
yxmyouxiaoming 2012-10-16
  • 打赏
  • 举报
回复
很好很强大啊,谢谢分享
逛街的猫 2012-10-11
  • 打赏
  • 举报
回复
你好!我想问下,你的Textview怎么实现左右滑动呢??能给我说下嘛?
pipi199112 2012-08-14
  • 打赏
  • 举报
回复
感谢 我的问题也解决了
hncdcsm1 2012-02-02
  • 打赏
  • 举报
回复
真的可以,太感谢了,这问题我纠结了很久
yfijwan135 2011-12-06
  • 打赏
  • 举报
回复
如果读取SD卡上图片,数量是未知的,这方法好用吗?该怎么用,望赐教!
ch847808805 2011-10-26
  • 打赏
  • 举报
回复
謝謝了,很好用
akwoodd 2011-10-23
  • 打赏
  • 举报
回复
谢谢分享
Somnus2012 2011-08-15
  • 打赏
  • 举报
回复
这里面的确很有技巧!
-麦田守望者- 2011-08-08
  • 打赏
  • 举报
回复
路过,看到,试下,很好,谢谢,有用!!!!!!!!!!!!!!1
qinxiaowei137 2011-07-15
  • 打赏
  • 举报
回复
你只要重写Button的onTouch事件就行了。
Button but = new Button(this);
but.setOnTouchListener(new Button.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
//处理Button的滑动事件
return m_GestureDetector.onTouchEvent(event);
}
});
huidian200803 2011-05-04
  • 打赏
  • 举报
回复
太需要这个了 我现在就遇见这个问题!!!
goghong 2011-04-28
  • 打赏
  • 举报
回复
感谢上面的分享,这个问题困扰我几天了,今天总算解决了。中午能好好享用午餐了。
makegame 2011-03-25
  • 打赏
  • 举报
回复
不错。所言不虚。
tomato 2011-03-24
  • 打赏
  • 举报
回复
受教......
sky123123 2011-02-21
  • 打赏
  • 举报
回复
受教···
ameyume 2010-12-29
  • 打赏
  • 举报
回复
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.OnGestureListener;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ViewFlipper;

public class ViewFlipperTest extends Activity implements OnGestureListener {
private Button previous, next;
private ViewFlipper flipper;
private GestureDetector detector;
private Animation slideLeftIn;
private Animation slideLeftOut;
private Animation slideRightIn;
private Animation slideRightOut;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

initiaView();

Button btn = (Button)addButtonByText("Start");
btn.setLongClickable(true);
flipper.addView(btn, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
flipper.addView(addTextByText("Start..."));
flipper.addView(addImageById(R.drawable.food_gutouwang));
flipper.addView(addImageById(R.drawable.food_foshanliaoli));
flipper.addView(addTextByText(">>>End"));
flipper.addView(addButtonByText("End"),
new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

}

/**
* Initialize view
*/
private void initiaView(){
detector = new GestureDetector(this);

previous = (Button) findViewById(R.id.btnPrevious);
next = (Button) findViewById(R.id.btnNext);

flipper = (ViewFlipper) findViewById(R.id.flipper);
slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);
slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);
slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);
flipper.setInAnimation(slideLeftIn);
flipper.setOutAnimation(slideLeftOut);

previous.setOnClickListener(listener);
next.setOnClickListener(listener);
}

private OnClickListener listener = new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.btnPrevious:
flipper.setInAnimation(slideRightIn);
flipper.setOutAnimation(slideRightOut);
flipper.showPrevious();
break;

case R.id.btnNext:
flipper.setInAnimation(slideLeftIn);
flipper.setOutAnimation(slideLeftOut);
flipper.showNext();
break;
}
}
};

public View addTextByText(String text){
TextView tv = new TextView(this);
tv.setText(text);
tv.setGravity(1);
return tv;
}

public View addImageById(int id){
ImageView iv = new ImageView(this);
iv.setImageResource(id);

return iv;
}

public View addButtonByText(String text){
Button btn = new Button(this);
btn.setText(text);
return btn;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
return this.detector.onTouchEvent(event);
}

@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > 120) { // flip from right to left
flipper.setInAnimation(slideLeftIn);
flipper.setOutAnimation(slideLeftOut);
this.flipper.showNext();
return true;
} else if (e1.getX() - e2.getX() < -120) { // flip from left to right
flipper.setInAnimation(slideRightIn);
flipper.setOutAnimation(slideRightOut);
this.flipper.showPrevious();
return true;
}
return false;
}

@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub

}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}

@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub

}

@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
}

以上代码中,如果不直接在button上滑动,是可以实现View滑动翻页的。但是如果这节在Button上滑动,那该如何实现滑动翻页呢?
stoneson 2010-12-29
  • 打赏
  • 举报
回复
有XML文件吗,我正好要做这个效果
stoneson 2010-12-29
  • 打赏
  • 举报
回复
有XML文件吗,我正好要做空上效果
ameyume 2010-12-29
  • 打赏
  • 举报
回复
多谢,试了下,这样处理button已经可以滑动了。再试试listview,非常感谢!
加载更多回复(4)

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧