Можете ли вы уточнить, что вы пытаетесь достичь здесь? Вы пытаетесь нарисовать линию на самом действии или каком-либо другом виде?
Как сказал Майк М., вы только создаете растровое изображение и холст и выполняете с ними операции. На самом деле вы не используете растровое изображение или холст для правильного рисования.
Я собираюсь ответить, предполагая, что вы пытаетесь нарисовать линию на представлении, которое находится внутри действия. Таким образом, вам понадобится класс, который расширяет класс View
(это может быть либо внутренний класс вашей деятельности, либо отдельный файл). В этом классе вам нужно переопределить метод onDraw(Canvas)
и выполнить операции с параметром Canvas
. Вы по-прежнему сможете рисовать растровые изображения с помощью функции Canvas drawBitmap()
(см. Документы по Android Canvas ). Ниже я приведу небольшой пример кода (он будет на языке Java, но его легко будет перевести на Kotlin).
class MyView extends View {
public MyView(Context context){
super(context);
// other initialization stuff
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawLine(...);
canvas.drawBitmap(...);
...
// your other code
...
}
}
Если у вас есть этот класс представления, вы сможете вручную его раздувать в XML-файле макета задания или программно раздувать его, если это лучше подходит для вашего варианта использования. Пример сохранения его в вашем xml приведен ниже.
<your.package.name.MyView
android:id="@+id/my_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
...
other properties
... />
Кажется, у вас есть ImageButton
в вашем xml и коде. Если этот элемент представления является тем, что вы пытаетесь нарисовать, вы можете более или менее сделать то же самое. Вам просто нужно расширить ImageButton
вместо View
(так как ImageButton
is-a View
).