简单的自定义view制作

来源:互联网 发布:ai矢量图软件 编辑:程序博客网 时间:2024/05/21 09:57

    Android的所有视图控件都是View的子类,制作自定义视图则一样需要继承自这个类。View本身是空白一片的,需要通过重写onDraw(Canvas)方法来画制。

    继承自View后,就是一个可以用的视图了,那么就必须具备视图能被创建和引用的基本功能吧。视图可以在代码里被创建和引用,也可以在布局文件里被创建和引用,所以2个不同的构造函数是少不了的。

    

        public ExampleView(Context context){this(context,null);}public ExamplieView(Context context,AttributeSet attrs){super(context,attrs);   //AttributeSet是在创建xml时要指定的属性集}

    画制自定义View要使用到2个工具类,Canvas和Paint,类似于纸和笔一样,只是不同于真实世界,最后执行动作是让纸来做(调用Canvas里的方法)。Canvas的一些方法,比如drawPaint,drawRect等,Paint的配置方法,比如setColor等,具体的可以查询相关文档。

    当视图被启动时,会触发一次onDraw(Canvas canvas)方法,画制里面定义的视图,当我们需要在经过一些操作后,改变视图,则调用invalidate()方法让画布失效,然后重新调用onDraw方法。


    *对于任何一个继承自View的视图控件,可以重写里面的一个方法来监听触摸事件,onTouchEvent(MotionEvent),当视图被触摸时,这个方法就会被调用一次,对于用户不同的触摸方式,可以在里面监听到就做出相应的操作。

    当用户点击视图时就会产生一个MotionEvent给onTouchEvent,可以通过MotionEvent的实例.getAction()获得具体的触摸事件。触摸事件里比较常用的有3个,点击ACTION_DOWN,拖动ACTION_MOVE,释放ACTION_UP。

    其中,对于用户点击的地方,可以用PoinfF对象来记录那个位置。当用户产生触摸事件时,会产生一个MotionEvent类实例,可以用这个实例产生时的坐标来创建PointF对象,也就是用motionEvent.getX()/getY()来创建PointF实例。

原创粉丝点击