自定义控件之手势识别器的使用

来源:互联网 发布:域名转让协议 编辑:程序博客网 时间:2024/06/06 10:02

自定义控件的显示

1、构造方法

2.测量(有时系统帮我们画)

3.指定位置大小(onlayout指定位置)

4.绘制(有时系统帮我们绘制)(依赖测量的数据)


手势识别器的使用
* 1.定义
* 2.初始化
* 3.在onTouchEvent把事件传递给手势识别器


public class MyViewPager extends ViewGroup {//控件从创建到显示构造 测量  指定位置大小 绘制    /**     * 手势识别器的使用     * 1.定义     * 2.初始化     * 3.在onTouchEvent把事件传递给手势识别器     */    private GestureDetector gestureDetector;//1.定义    public MyViewPager(Context context, AttributeSet attrs) {        super(context, attrs);        initView(context);    }    private void initView(Context context) {        //2.实例化手势识别器-拿到手势识别器        gestureDetector=new GestureDetector(context,new GestureDetector.SimpleOnGestureListener()        {            @Override            public void onLongPress(MotionEvent e) {                super.onLongPress(e);            }            @Override            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {                //e1是初始的事件,e2是结束的事件                scrollBy((int)distanceX,getScrollY());//相对于当前位置移动                //scrollTo();//                return true;            }            @Override            public boolean onDoubleTap(MotionEvent e) {                return super.onDoubleTap(e);            }        });        //2.    }    //l是左侧的X轴坐标位置,t是左侧的Y轴坐标,r是右下角的X轴坐标getwidth(),b是右下角的轴的坐标getHeight()    //画上ImageView才能移动。    @Override    protected void onLayout(boolean changed, int l, int t, int r, int b) {        for (int i=0;i<getChildCount();i++)        {            View view=getChildAt(i);            view.layout(i*getWidth(),0,(i+1)*getWidth(),0);//规定位置        }    }    @Override    public boolean onTouchEvent(MotionEvent event) {        //3.将事件传递给手势识别器        gestureDetector.onTouchEvent(event);        return true;    }}

阅读全文
0 0
原创粉丝点击