View种和自定义控件与实例

View类和自定义控件与实例

View是所有UI的超类,如果系统自带的布局控件不能满足我们的需求,那么我们可以继承View类来写自己的UI

继承View类后还需要重写OnDraw方法,下面通过一个实例来了解:

步骤:

  1. 新建一个Activity
  2. 继承View类
  3. 实现onDraw方法
  4. 在onDraw方法中设置画笔和画布控件、
  5. 在xml文件中加入创建的视图

 

图像:

View种和自定义控件与实例

 

XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <com.example.itab.tab
      android:layout_width="fill_parent"
      android:layout_height="49dp"
      android:layout_alignParentBottom="true"
      />
</RelativeLayout>

 

Java文件:

package com.example.itab;
public class tab extends View {
    private Paint mp;            //声明一个画笔控件

    public tab(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        mp = new Paint();               // 新建画笔
        mp.setStyle(Paint.Style.FILL);       // 设置画笔为实心
        Rect r = new Rect();             // 新建一个矩形框
        this.getDrawingRect(r);           // 填充矩形的各个位置属性
        canvas.drawColor(0XFF000000);       // 设置画布颜色
        mp.setColor(0X00FF00);           // 设置画笔颜色
        /* 绘制一条直线,参数依次为:开始的横坐标,开始的纵坐标,结束的横坐标,结束的纵坐标,坐标由矩形来决定,用mp画笔来绘制 */
        canvas.drawLine(r.left, r.centerY(), r.right, r.centerY(), mp);
        super.onDraw(canvas);
    }
}