Вам необходимо унаследовать свой собственный класс от 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: наследуйте свой пользовательский вид от ImageView
вместо View
.Затем замените соответствующие теги ImageView в XML-макете вашей деятельности на свой собственный ImageView, например com.yourapphere.MyImageView
)
Ссылки и ссылки Смотрите похожий вопрос: Как сделать холст на изображении в Android Пример кода простого пользовательского представления: Добавление моего пользовательского представления в макет XML вызывает исключение
Прочитайте об Android 2D-рисовании: http://developer.android.com/guide/topics/graphics/2d-graphics.html
Учебник по 2D-кодированию Android: 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/