1.在res中new一个class继承view.View,重写ondraw方法,写出自己的view
1 package com.zzw.myView; 2 3 import android.content.Context; 4 import android.graphics.Canvas; 5 import android.graphics.Color; 6 import android.graphics.Paint; 7 import android.util.AttributeSet; 8 import android.view.View; 9 10 public class MyView extends View { 11 private Paint paint; 12 13 // 如果以后这个自定义的view需要被java代码操作就用这个构造方法 14 public MyView(Context context) { 15 super(context); 16 } 17 18 // 如果以后这个自定义的view仅仅是在xml中静态摆放就用这个构造方法 19 // 如果两者都需要,可以同时建立这两个构造方法 20 public MyView(Context context, AttributeSet attrs) { 21 super(context, attrs); 22 // 初始化画笔 23 paint = new Paint(); 24 } 25 26 @Override 27 protected void onDraw(Canvas canvas) { 28 super.onDraw(canvas); 29 30 paint.setColor(Color.RED);// 设置画笔颜色 31 canvas.drawRect(5, 5, 200, 200, paint);// 绘制左上角为(5,5),长宽为200的矩形 32 33 paint.setColor(Color.GREEN); 34 paint.setTextSize(30); 35 canvas.drawText("hello,world", 5, 250, paint); 36 } 37 38 }
2.在要显示的xml文件中
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 tools:context="com.zzw.myView.MainActivity" > 6 <!-- 用包名.类名(自定义的view类) --> 7 <com.zzw.myView.MyView 8 android:layout_width="wrap_content" 9 android:layout_height="match_parent" /> 10 11 </RelativeLayout>
3.调用该xml
1 package com.zzw.myView; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 6 7 public class MainActivity extends Activity { 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 } 14 15 }
结果如图: