Android初体验(三)自定义view

  1. 自定义view
    1. 一、新建一个继承view的类
    2. 二、布局文件引用自定义view
  2. 重写ondraw()方法绘画

自定义view

一、新建一个继承view的类

新建的类至少需要一个构造器,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class TopView extends View {

public TopView(Context context) {
super(context);
}

public TopView(Context context, AttributeSet attrs) {
super(context, attrs);
}//如果需要在布局中定义组件属性,需要这个构造方法

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}//这个方法一般用来绘图
}

二、布局文件引用自定义view

两种方式:

  • 1、在xml中设置组件,和使用button类似。
  • 2、activity中设置如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package cn.wangsr.helloword;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.LinearLayout;

    public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    LinearLayout linearLayout = findViewById(R.id.ll);
    TopView topView = new TopView(this);
    linearLayout.addView(topView);
    }
    }

重写ondraw()方法绘画

ondraw()方法中:

  • Paint:画笔对象

    1
    2
    Paint paint = new Paint();
    paint.setColor(0xff123456);//设置颜色,前两位为透明度
  • canvas:画布

    1
    canvas.drawRect(0,0,100,100,paint);//画矩形

重新绘制:调用invalidate()方法,需使用多线程配合handler调用
因为Android规定只有主线程才能更新UI,而且不要在主线程执行耗时操作(如sleep超过5s)


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

文章标题:Android初体验(三)自定义view

本文作者:子非鱼

发布时间:2018-11-29, 19:01:54

最后更新:2018-12-09, 11:07:04

原始链接:https://Wangsr.cn/2018/11/29/2018-2018-11-29-Android初体验-三-自定义view/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏