首先,建立一个Android工程,命名MyView。
然后,自定义一个类myView,继承View类。代码如下
package com.android.randy.viewDemo; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Paint.Style; import android.util.AttributeSet; import android.view.View; public class myView extends View{ Paint mPaint; Context context; public static final String mString = "My first View."; public myView(Context context) { super(context); // TODO Auto-generated constructor stub //接收构造参数 this.context=context; //创建Paint对象 mPaint = new Paint(); } public myView(Context context,AttributeSet attrs){ super(context,attrs); //接收构造参数 this.context=context; //创建Paint对象 mPaint = new Paint(); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); //设置画笔颜色 mPaint.setColor(Color.GREEN); //设置mPaint属性为实心填充 mPaint.setStyle(Style.FILL); //绘制一个矩形,第一个参数是矩形的范围Rect(左,上,右,下),第二个参数为画刷 canvas.drawRect(new Rect(10, 10, 100, 100), mPaint); //设置画刷颜色 mPaint.setColor(Color.BLUE); //绘制文字,第一个参数为String类型字符串, //第二个和第三个参数为文字显示位置的左上坐标, //第四个参数为画刷 canvas.drawText(mString, 10, 120, mPaint); } }
最后将我们自定义的View加入到main.xml布局文件中验证。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:viewDemo="http://schemas.android.com/apk/res/com.android.randy.viewDemo" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <com.android.randy.viewDemo.myView android:id="@+id/myView" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
最后,一定要记得在LinearLayout标签中加入(如上面代码第三行):
xmlns:viewDemo="http://schemas.android.com/apk/res/com.android.randy.viewDemo"
不然找不到你自己定义的View。
贴图:
时间: 2024-10-14 20:49:03