Вы можете нарисовать изображение на холсте, используя следующий код.
Rect dst = new Rect(x, y, x + imageWidth,y + imageHeight);
//enter paint as the last arg to use bitmap filtering
canvas.drawBitmap(myBitmap, null, dst, bitmapFilterSettings);
myBitmap - это Растровое изображение , bitmapFilterSettings - это Paint .Поместите этот код в ваш метод onDraw()
.
Чтобы разместить изображение случайным образом, вы должны рандомизировать x
и y
, которые вы передаете в dst Rect
.Чтобы выбрать случайное изображение, вы можете поместить свои растровые изображения в List
или массив и использовать nextInt(listSize)
метод Случайный .Чтобы изображение появлялось и исчезало случайным образом, используйте метод nextBoolean()
, равный Random
, и рисуйте изображение, только если оно возвращает true
.Не делайте это слишком часто (один раз каждые X кадров), иначе ваше изображение будет мерцать.
РЕДАКТИРОВАТЬ: Для этого вы можете объявить счетчик в Activity
и количество кадров между решениями.Вам также понадобится поле boolean
для включения и выключения рисования.В вашем onDraw()
это может выглядеть так:
counter++;
if(counter%framesBetweenDecision == 0){
drawImageFlag = random.nextBoolean();
}
if(drawImageFlag){
//drawImage
}
Чтобы сделать интервалы между решениями менее предсказуемыми, вы также можете рандомизировать timeBetweenDecision
./ EDIT
Вы можете обработать сенсорное событие в вашем слушателе, вызывая случайный выбор изображения при каждом щелчке.Если вы хотите, чтобы только часть изображения была кликабельной, проверьте местоположение ваших MotionEvent (вы можете использовать методы getX () и getY ()), чтобы они лежали внутри одного и того же Rect Используем для рисования изображения, используя метод contains(x, y)
.
Это не единственный способ добиться этого, но довольно простой.