Kal*_*esh 3 android android-canvas
我创建了一个类:
public class TestCanvas extends View {
public TestCanvas(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawText("kal", 0, 100, paint);
canvas.save();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我从活动中调用该类:
public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TestCanvas tcanvas=new TestCanvas();
frameLayout=(FrameLayout)findViewById(R.id.frameLayout1);
frameLayout.addView(tcanvas);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想将canvas插入活动类并设置为ImageView.我该怎么做?
您需要继承自己的类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);
}
}
Run Code Online (Sandbox Code Playgroud)
将自定义视图添加到活动的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>
Run Code Online (Sandbox Code Playgroud)
您的活动课程没有任何内容.而已!
如果您确实需要使用ImageView:继承您的自定义视图ImageView而不是View.然后用自定义的ImageView替换您的活动的布局XML适当的ImageView的标签,如com.yourapphere.MyImageView)
参考和链接
看到类似的问题:如何在android中的imageview上绘制画布
简单的自定义视图示例代码:将我的自定义视图添加到XML布局会引发异常
阅读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/
| 归档时间: |
|
| 查看次数: |
9370 次 |
| 最近记录: |