Я пытаюсь научиться создавать пользовательские виды и компоненты и уже попал в дорожный блок. Я не могу получить возможность рисования на холсте с помощью метода drawable.draw (canvas). Но он работает, если я получаю растровое изображение и рисую его с помощью метода canvas.drawBitmap().Пользовательский компонент не чертеж drawable
Существует нет ничего фантазии в коде либо:
@Override
protected void onDraw(Canvas canvas) {
// drawing bitmap directly works
/*
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
canvas.drawBitmap(bitmap, 10, 10, paint);
*/
// this doesn't work but mThumb is not null in log
if(mThumb != null) {
canvas.save();
mThumb.draw(canvas);
Log.d("Custom component - ", "mThumb : " + mThumb);
canvas.restore();
}
}
В журнале переменной mThumb содержит вытяжку. Я получаю это стандартный способ:
if(attrs != null) {
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomView);
color = a.getColor(R.styleable.CustomView_cv_color, color);
thumb = a.getDrawable(R.styleable.CustomView_cv_thumb);
setThumb(thumb);
a.recycle();
}
setColor(color);
XML-для пользовательского вида является:
<me.mycustomview.MyCustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cv_color="@android:color/holo_red_light"
app:cv_thumb="@drawable/ic_launcher" />
И в attrs.xml:
<declare-styleable name="CustomView">
<attr name="cv_color" format="color" />
<attr name="cv_thumb" format="reference" />
</declare-styleable>
Я действительно ценю это если кто-то может указать мне в правильном направлении. Благодаря!
«... это означает, что вы хотите сделать ваш' MyCustomView' внутри этого вытяжке объекта»- это не правильно. –
@MikeM .: не стесняйтесь исправить меня –
Метод 'Drawable # draw()' рисует Drawable на Canvas, переданный ему. OP использует его правильно. –