/* $Id: $
*
*/
package com.oreilly.demo.android.pa.viewdemo.widget;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
import android.view.ViewGroup;
import com.oreilly.demo.android.pa.viewdemo.R;
/**
* Simple widget, demonstrating the use of Paint
*/
public class EffectsWidget extends View {
/** The effect to apply to the drawing */
public interface PaintEffect {
/** @param paint the paint effect */
void setEffect(Paint paint);
}
private final PaintEffect effect;
private final int id;
/**
* @param context
* @param n
* @param pe
*/
public EffectsWidget(Context context, int n, PaintEffect pe) {
super(context);
id = n;
effect = pe;
setMinimumWidth(160);
setMinimumHeight(135);
setBackgroundResource(R.drawable.bg0);
}
/** @see android.view.View#onMeasure(int, int) */
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(
ViewGroup.LayoutParams.MATCH_PARENT,
getSuggestedMinimumHeight());
}
/** @see android.view.View#onDraw(android.graphics.Canvas) */
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setAntiAlias(true);
effect.setEffect(paint);
paint.setColor(Color.DKGRAY);
paint.setStrokeWidth(5);
canvas.drawLine(20, 10, 140, 20, paint);
paint.setTextSize(26);
canvas.drawText("Android", 40, 50, paint);
// create a new Paint to draw the widget structure
paint = new Paint();
paint.setColor(Color.BLACK);
canvas.drawText(String.valueOf(id), 2.0F, 12.0F, paint);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
canvas.drawRect(canvas.getClipBounds(), paint);
}
}