android 自定义view之继承(四)

来源:互联网 发布:伴知旅行网 编辑:程序博客网 时间:2024/05/19 00:54

继承控件,顾名思义就是继承现有的控件来满足自己的需求与扩展。一般除了控件自身的属性外,我们会在onDraw()里进行扩展。

1.继承TextView控件,定义属性。

  public class TvView extends TextView {    public TvView(Context context) {        super(context);    }    public TvView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public TvView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void onDraw(Canvas canvas) {        Paint paint = new Paint();        paint.setColor(getResources().getColor(android.R.color.holo_green_light));        paint.setStyle(Paint.Style.FILL);        Paint mPaint = new Paint();        mPaint.setColor(Color.GREEN );        mPaint.setStyle(Paint.Style.FILL);        //绘制外层矩形        canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), paint);        //绘制内层矩形        canvas.drawRect(5, 5, getMeasuredWidth() - 5, getMeasuredHeight() - 5, mPaint);        canvas.save();        //绘制文字前平移10像素        canvas.translate(5, 0);        super.onDraw(canvas);        canvas.restore();    }}

2.在xml中使用

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <demo.view.cn.viewtest.TvView        android:text="继承"        android:layout_gravity="center"        android:gravity="center"        android:layout_width="100dp"        android:layout_height="100dp" /></LinearLayout>

3.运行效果

这里写图片描述

以上只是一个简单的继承控件。大家还可以根据不同的方法实现不同的效果。自动手试试吧。

欢迎点赞,评论~~

0 0
原创粉丝点击