То, что вы создали холст, не означает, что оно связано с чем-либо на дисплее, этот холст - это просто виртуальная поверхность рисования, как вы это делали.
Есть несколько способов сделать это, самый простой из них, вероятно, просто создать собственное представление, переопределить метод onDraw и затем отобразить там свое растровое изображение.
Добавьте ваш собственный вид в макет с помощью fill_parent для высоты и ширины
Когда ваша кнопка нажата, просто установите ваш x / y для изображения и сделайте вид недействительным
Обновление
Хорошо, вот пользовательский вид. Это становится вашей поверхностью рисования для вашего изображения, вставьте его в основной макет, если хотите, сделайте его полноэкранным (если вы используете RelativeLayout, вы также можете добавлять другие виды, кнопки и т. Д. В любом месте). Вы хотите)
Расширьте его, поместив код для рисования в соответствующий блок if /. Затем получите пользовательский класс, используя findviewbyid, как вы делаете это для кнопки.
Теперь, когда вы хотите нарисовать свое изображение на основе нажатия кнопки, вызовите методы в экземпляре пользовательского представления. Это один из тривиальных способов сделать это в любом случае.
Вы также можете расширить класс макета (независимо от того, что вы используете в main) и делать то же самое, не добавляя дочерний вид.
public class myView extends View {
private boolean imageShow = false;
private int x = 0;
private int y = 0;
public myView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public myView(Context context) { this(context,null,0); }
public myView(Context context, AttributeSet attrs) { this(context, attrs,0); }
public void drawImageRandom()
{
imageShow = true;
invalidate();
}
public void hideImage()
{
imageShow = false;
invalidate();
}
@Override
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
if (imageShow) {
// do your drawing code in here
}
}
}