Android ViewPager在TouchListener事件中使用按钮滑动

Android ViewPager在TouchListener事件中使用按钮滑动,android,android-layout,android-viewpager,Android,Android Layout,Android Viewpager,我有一个ViewPager,里面有两个项目,还有一个按钮,用于ViewPager动画。我想在不向上移动手指的情况下,使用按钮的触摸事件来滑动ViewPager,即从按钮上滑动手指并获得ViewPager滑动 目前,我只能在向上移动手指时进行刷卡,而不是在TouchEvent上进行刷卡 下面是我的XML代码片段 <Button android:id="@+id/slide_btn_speak" android:layout_width="wrap_content" a

我有一个
ViewPager
,里面有两个项目,还有一个
按钮,用于
ViewPager动画
。我想在不向上移动手指的情况下,使用按钮的触摸事件来滑动
ViewPager
,即从按钮上滑动手指并获得ViewPager滑动

目前,我只能在向上移动手指时进行刷卡,而不是在
TouchEvent上进行刷卡

下面是我的XML代码片段

<Button
    android:id="@+id/slide_btn_speak"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:background="@android:drawable/ic_btn_speak_now"
    android:contentDescription="@string/app_name" />

<TextView
    android:id="@+id/slide_txtView_inside"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="20dp"
    android:layout_toRightOf="@+id/slide_btn_speak"
    android:text="@string/app_name" />

<android.support.v4.view.ViewPager
    android:id="@+id/ui_pager"
    android:layout_width="wrap_content"
    android:layout_height="150dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/slide_btn_speak"
    android:layout_toRightOf="@+id/slide_btn_speak"
    android:scrollbars="horizontal" >

</android.support.v4.view.ViewPager>

<Button
    android:id="@+id/slide_btn_drag"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:background="@android:drawable/ic_btn_speak_now"
    android:contentDescription="@string/app_name" />


我的活动片段

public class SlidingActitvity extends Activity {

    ViewPager viewPager;

    Button slide_button_start ; 

    Vibrator vibrator;

    static int count ;

    int x_position, y_position;

    String hint[] ={" SWIPE TO CANCEL " , ""};
    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_sliding_actitvity);

        viewPager = (ViewPager) findViewById(R.id.ui_pager);

        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

        slide_button_start = (Button) findViewById(R.id.slide_btn_drag);



        slide_button_start.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {


                switch (event.getAction()) {

                case MotionEvent.ACTION_MOVE:

                    int viewPager_width = viewPager.getWidth();

                    x_position = (int) event.getX();
                    y_position = (int) event.getY();
                    if(x_position<= 0){

                        vibrator.cancel();
                        viewPager.bringToFront();

                        logIt("Touch..." +x_position +"..."+y_position);
                    }

                    break;

                case MotionEvent.ACTION_DOWN:

                    vibrator.vibrate(100);

                    final Animation animation = AnimationUtils.loadAnimation(SlidingActitvity.this, R.anim.left);

                    ViewPagerAdapter adapter = new ViewPagerAdapter(SlidingActitvity.this , hint);

                    viewPager.setAdapter(adapter);

                    viewPager.setVisibility(ViewPager.VISIBLE);

                    viewPager.setAnimation(animation);


                    logIt("Touch...Down");

                    break;

                case MotionEvent.ACTION_UP:

                     logIt("Touch...Up");
                     vibrator.cancel();

                     break;
                case MotionEvent.ACTION_OUTSIDE:
                    logIt("Your are out...");
                    vibrator.cancel();
                break ;
                default:
                    break;
                }

                return true;
            }
        });

    }
公共类滑动活动扩展活动{
查看页面查看页面;
按钮滑动按钮启动;
振动器;
静态整数计数;
int x_位置,y_位置;
字符串提示[]={“滑动以取消”,“”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u slide\u activity);
viewPager=(viewPager)findViewById(R.id.ui_pager);
可控震源=(可控震源)getSystemService(Context.可控震源\u服务);
滑动按钮\u开始=(按钮)findViewById(R.id.slide\u btn\u拖动);
滑动按钮启动。setOnTouchListener(新的OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
开关(event.getAction()){
case MotionEvent.ACTION\u移动:
int viewPager_width=viewPager.getWidth();
x_position=(int)event.getX();
y_position=(int)event.getY();

如果(x_位置在按钮的OnTouchListener中返回true,。具体而言,需要通知ViewPager
MotionEvent.ACTION_DOWN
,以便它在检测到正在刷卡时可以拦截触摸事件


您需要仔细考虑,在哪些情况下,触摸事件会被传递到视图层次结构中,以便查看程序可以继续执行其魔术。

使用方法ViepPosier-StCurrEngEnter()。方法单击按钮event@BirajZalavadia当我从一个按钮移动到另一个按钮时,我想在不抬起手指的情况下滑动Viewpager…但我无法在按钮上的TouchEvent上滑动如果我在TouchListener上返回false并仅在我需要处理的事件上返回true,则在我移动f时不会检测到Viewpager滑动从按钮到浏览页面