如题,在ViewFlipper中添加Button和ListView后,如何在触摸Button,LitView的item后,实现左右滑动呢?
Textview和ImageView是可以左右滑动的,但Button和ListView就不知道如何滑动,现在是在ListView上手势滑动变成了单击,要么就没反应。
Textview和ImageView是可以左右滑动的,但Button和ListView就不知道如何滑动,现在是在ListView上手势滑动变成了单击,要么就没反应。
解决方案 »
- 我想做一本电子书,安卓端的,该如何出手?
- 给RelativeLayout添加onclicklistener的问题
- 用sqlite在真机上创建的db怎么导出来
- SimpleCursorAdapter 是设计模式?名字叫什么?
- 高分求助:如何获得package的name???
- 将下载的东西放在系统自带的空间里
- Openfire 多人聊天室 消息记录的问题
- android ndk编译的C++可执行程序已经能够运行了,但如何实现在android系统上自启动呢?
- 安卓怎么取出xml中的注释部分 和怎么把注释部分写进xml文件中
- adb forward tcp:9222为什么只能通过http://localhost:9222访问
- android自定义软键盘如何让它在获取焦点的文本输出
- 用eclipse开发android应用时候卡死问题。请求解决!!
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上滑动,那该如何实现滑动翻页呢?
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
this.detector.onTouchEvent(ev);//在这里先处理下你的手势左右滑动事件
return super.dispatchTouchEvent(ev);
}
你试试,我的是这样解决的
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
this.detector.onTouchEvent(ev);//在这里先处理下你的手势左右滑动事件
return super.dispatchTouchEvent(ev);
}
你试试,我的是这样解决的
Button but = new Button(this);
but.setOnTouchListener(new Button.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
//处理Button的滑动事件
return m_GestureDetector.onTouchEvent(event);
}
});