viewpager 在滑动的过程中是如何触发view身上的事件的,换句话说,viewpager在滑动的过程中到底是滑动的它里面的view,还是滑动的viewpager本身?
一、示例代码:
1、自定义ViewPager:MyViewPager,重新dispatchTouchEvent方法,添加一些事件处理的log信息。
package com.example.viewpagerdemo;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
public class MyViewPager extends ViewPager {
private String TAG = "viewpagertest";
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.i(TAG , "===MyViewPager MotionEvent.ACTION_DOWN===");
break;
case MotionEvent.ACTION_MOVE:
Log.i(TAG , "===MyViewPager MotionEvent.ACTION_MOVE===");
break;
case MotionEvent.ACTION_UP:
Log.i(TAG , "===MyViewPager MotionEvent.ACTION_UP===");
break;
case MotionEvent.ACTION_CANCEL:
Log.i(TAG , "===MyViewPager MotionEvent.ACTION_CANCEL===");
break;
}
return super.dispatchTouchEvent(ev);
}
}
2、在activity中设置viewpager的数据适配器,给view添加touch事件监听器,添加事件处理的log信息。
package com.example.viewpagerdemo;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
public class MainActivity extends Activity {
private String TAG = "viewpagertest";
private Integer[] imgList = {R.drawable.first,R.drawable.second,R.drawable.third,R.drawable.four};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
MyViewPager viewPager = (MyViewPager) findViewById(R.id.myviewpager);
viewPager.setAdapter(new MyAdapter());
}
class MyAdapter extends PagerAdapter {
@Override
public int