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);
}
}
は、以下のように、あなたの活動の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を使用する必要がある場合:View
の代わりにImageView
からカスタムビューを継承します。 How to take canvas on imageview in android
シンプルなカスタムビューのサンプルコード:Adding my custom View into an XML layout throws exception
読む続い
は、同様の質問を参照してくださいリンク& com.yourapphere.MyImageView
のようなカスタムImageViewの)
参照して、あなたの活動のレイアウトXMLで適切なImageViewのタグを置き換えます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/
を持つ人のためのソリューションであるあなたは、いくつかの 'ImageView'要素にキャンバスを設定しますか?または、キャンバスを 'R.id.frameLayout1'に表示したいだけですか? –
キャンバスを1つのImageviewに設定したいのですが... – Kalpesh
特定のビュー内で画面に描画したいだけですか? ImageViewである必要はないため、任意のカスタムビューを使用できます。なぜそれがImageViewになる必要がありますか?そのための特別な要件はありますか? –