私はカスタムビューの使い方について少し混乱していると思います。私はスクエアからのエリック・バーク(今年のアンドディヴォンのスライド、ここではスライド:http://www.andevcon.com/AndevCon_II/downloadpresentation.aspx?aid=Taming_Android__User_Experience_Lessons_from_Square_pdf.zip&sid=2)からの講演のスライドに続きます。カスタムビューの使用方法(例: drawableを設定する
彼のコード、または少なくとも彼は、スライドで示した部分は、このような何かを行ってきました:私は何を得ることはありませんが、実際にこのビューを使用する方法である
public class EditablePhoto extends View {
private Bitmap framedPhoto;
private Bitmap image;
private Drawable placeholder;
public EditablePhoto(Context context) {
super(context);
}
@Override protected void onMeasure(int widthMeasureSpec,
int heightMeasureSpec) {
int measuredWidth = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
int measuredHeight = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
//ensure view always square
int min = Math.min(measuredHeight, measuredWidth);
setMeasuredDimension(min, min);
}
@Override
protected void onDraw(Canvas canvas) {
if(placeholder == null && image==null) return;
if(framedPhoto == null) {
createFramedPhoto(Math.min(getWidth(), getHeight()));
}
canvas.drawBitmap(framedPhoto, 0, 0, null);
}
private void createFramedPhoto(int size) {
Drawable imageDrawable = (image!=null)
? new BitmapDrawable(image) : placeholder;
Bitmap output = Bitmap.createBitmap(size, size,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
RectF outerRect = new RectF(0, 0, size, size);
float outerRadius = size/18f;
//Red rectangle
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.RED);
canvas.drawRoundRect(outerRect, outerRadius, outerRadius, paint);
paint.setXfermode(new PorterDuffXfermode(
PorterDuff.Mode.SRC_IN));
imageDrawable.setBounds(0, 0, size, size);
canvas.saveLayer(outerRect, paint, Canvas.ALL_SAVE_FLAG);
imageDrawable.draw(canvas);
canvas.restore();
}
}
今....どこで、いつこのクラスのプライベートフィールドであるビットマップを設定しますか?
一般的に混乱していて、いくつかの啓発が大好きです。
お試しいただきありがとうございますが、これは本当に質問に答えません。あなたがしたことは、onDrawが一般的に行うことを説明することでした。実際にビットマップ/ドロウアブルを設定する方法には答えませんでした。 – LuxuryMode
constuctorでビットマップを渡します。 EditablePhoto(コンテキストコンテキスト、属性セットの属性セット、ビットマップビットマップ)とクラス内にそれを保存し、それを使用するには、 –
クエリ「私は何を得ることはありませんが、実際に今、このビューを使用する方法ですが....」間違った方法で私を指示しました。 –