您需要从View 继承您自己的类并覆盖onDraw() 和onMeasure()。就像你开始使用TestCanvas 一样。一个例子:
package com.yourapphere;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.View;
public class TwoDee extends View {
private int mWidth;
private int mHeight;
public TwoDee(Context context) {
super(context);
}
public TwoDee(Context context, AttributeSet attribs) {
super(context, attribs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.GRAY);
paint.setStyle(Style.FILL);
canvas.drawPaint(paint);
paint.setColor(Color.BLUE);
canvas.drawLine(0, 0, mWidth, mHeight, paint);
canvas.drawLine(mWidth, 0, 0, mHeight, paint);
paint.setColor(Color.RED);
canvas.drawText("0 kal", 50, 85, paint);
canvas.save();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
mWidth = View.MeasureSpec.getSize(widthMeasureSpec);
mHeight = View.MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(mWidth, mHeight);
}
}
如下所示,将自定义视图添加到 Activity 的 xml 布局中。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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.yourapphere.TwoDee
android:layout_width="150dp"
android:layout_height="100dp"
/>
</LinearLayout>
您的活动课程中没有任何内容。就是这样!
如果您确实需要使用 ImageView:从 ImageView 继承您的自定义视图,而不是 View。然后将活动布局 xml 中的适当 ImageView 标记替换为您的自定义 ImageView,例如 com.yourapphere.MyImageView)
参考和链接
查看类似问题:How to take canvas on imageview in android
简单的自定义视图示例代码:Adding my custom View into an XML layout throws exception
了解 Android 2D 绘图:http://developer.android.com/guide/topics/graphics/2d-graphics.html
Android 2D编码教程:http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_2D.html
简单2D游戏教程:http://www.barebonescoder.com/2010/06/android-development-simple-2d-graphics-part-1/