您的位置:首页 > 其它

简单的自定义view制作

2017-07-26 22:19 162 查看
    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实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: