Canvans类代表画布,通过该类提供的方法,可以绘制各种图形(如矩形、圆形和线条等)。通常情况下,要在Android中绘图,需要先创建一个继承自View类的视图,并且在该类中重写onDraw(Canvas canvas)方法,然后在显示绘图的Activity中添加该视图。
下面通过一个具体的实例来说明如何创建用于绘图的画布。
1.创建一个名称为DrawView的类,继承android.view.View类,并添加构造方法和重写onDraw(Canvas canvas)方法,关键代码如下:
设置布局文件main.xml
res/layout/main.xml:
创建线性布局管理器,然后在里面添加上面创建的自定义视图DrawView:
在上面创建的自定义视图DrawView的onDraw()方法中,添加以下代码,用于绘制一个带阴影的红色矩形
即是:
下面通过一个具体的实例来说明如何创建用于绘图的画布。
1.创建一个名称为DrawView的类,继承android.view.View类,并添加构造方法和重写onDraw(Canvas canvas)方法,关键代码如下:
package com.example.test; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; public class DrawView extends View{ /* * 功能:构造方法 * */ public DrawView(Context context, AttributeSet attrs) { super(context, attrs); } /* * 功能:重写onDraw方法 * */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } }
设置布局文件main.xml
res/layout/main.xml:
创建线性布局管理器,然后在里面添加上面创建的自定义视图DrawView:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/tableLayout1" android:orientation="vertical" > <com.example.test.DrawView android:id="@+id/drawView1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
在上面创建的自定义视图DrawView的onDraw()方法中,添加以下代码,用于绘制一个带阴影的红色矩形
Paint paint=new Paint(); paint.setColor(Color.RED); paint.setShadowLayer(2, 3, 3, Color.rgb(180, 180, 180)); canvas.drawRect(40, 40,200,100,paint);
即是:
package com.example.test; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; public class DrawView extends View{ /* * 功能:构造方法 * */ public DrawView(Context context, AttributeSet attrs) { super(context, attrs); } /* * 功能:重写onDraw方法 * */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint=new Paint(); paint.setColor(Color.RED); paint.setShadowLayer(2, 3, 3, Color.rgb(180, 180, 180)); canvas.drawRect(40, 40,200,100,paint); } }
效果如图所示
转载请注明出处:http://blog.csdn.net/acmman/article/details/45156381