Я пытаюсь вывести изображение на экран и менять его каждые пять секунд.Это не в классе деятельности.Извините, если это глупый вопрос.Это огромная кривая обучения для меня.
public class Panel extends SurfaceView implements SurfaceHolder.Callback {
private Handler mHandler = new Handler();
//stuff
public void doDraw(Canvas canvas) {
int counter = 0;
canvas.drawColor(Color.BLACK);
dot1.doDraw(getResources(), canvas, counter);
mHandler.removeCallbacks(panelDraw);
mHandler.postDelayed(panelDraw, 5000);
}
private Runnable panelDraw = new Runnable() {
public void run() {
}
};
(Panel ->) mPanel.doDraw (canvas) в другом классе вызывает doDraw, указанный в Panel.Это в цикле.
Насколько я могу судить, первое изображение не останавливается в течение пяти секунд, и из-за другого кода картинка кота мигает по всему экрану.Могу ли я сойти с рук, не ставя ничего в run ()?Я хотел поместить туда dot1.doDraw (getResources (), canvas, counter), но я не мог / не думал, что смогу дать void параметры run () или ресурсы Runnable panelDraw, canvas, параметры счетчика.
Любая помощь приветствуется.Дайте мне знать, если мне нужно дать больше кода.
Еще немного о моей игре: фотографии котят должны появляться в случайных местах на экране.Если кто-то не нажимает на текущее изображение котенка в течение выделенного времени, игра заканчивается.Эти снимки длятся менее 1 секунды (сейчас это больше для целей тестирования).Если вы не нажмете на котенка за это время, игра закончится.
Я слышал, что если вам нужно много рисовать, вам лучше использовать SurfaceView, как в учебном пособии, которому я очень внимательно следил: http://www.droidnova.com/2d-tutorial-series-part-v,848.html Мой класс Activity (Scene1) имеет setContentView (новая панель (это)), поэтому я не знаю, как поместить материал в класс Activity, когда все идет в классе Panel.Например, куда я могу поместить код ImageView, если поток Activity на самом деле мало что делает и передает все это Panel?Также, если у меня есть ViewThread (открытый класс ViewThread расширяет Thread), который обрабатывает выполнение:
public void run() {
Canvas canvas = null;
while (mRun1) {
do {
canvas = mHolder.lockCanvas();
if (canvas != null) {
mPanel.doDraw(canvas);
mRun1 = true;
mRun1 = mPanel.get_run();
mHolder.unlockCanvasAndPost(canvas);
}
} while (mRun1 == true);
Точечный класс имеет что-то вроде:
public void firstRing(Resources res, Canvas canvas, int counter){
Random rand = new Random();
switch(counter) {
case 0: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat1_m);
break;
case 1: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat2_m);
break;
case 2: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat2_m);
break;
case 3: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat2_m);
break;
case 4: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat2_m);
break;
case 5: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat1_m);
break;
}
mX = rand.nextInt((int)(Panel.mWidth - mBitmap.getWidth()));
mY = rand.nextInt((int)(Panel.mHeight - mBitmap.getHeight()));
canvas.drawBitmap(mBitmap, mX, mY, null);
и
public void doDraw(Resources res, Canvas canvas, int counter) {
firstRing(res, canvas, counter);
}
Спасибо за информацию, Барри, хотя я немного растерялся.Я пытаюсь использовать ImageView или придерживаюсь Handler (), хотя я не знаю, как его использовать, и он сейчас не работает?Нужно ли что-нибудь публично void run ()?