В андроиде как сделать, чтобы изображение появлялось случайным образом ?? - PullRequest
0 голосов
/ 05 декабря 2011

Я хочу, чтобы три изображения случайно появлялись на экране в определенной позиции в Android. И я хочу сделать эти изображения кликабельными. Если вы нажмете на одно изображение, которое появилось, счетчик будет увеличен на единицу. Как мне это сделать ??

1 Ответ

0 голосов
/ 05 декабря 2011

Вы можете нарисовать изображение на холсте, используя следующий код.

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).

Это не единственный способ добиться этого, но довольно простой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...