Форум программистов, компьютерный форум CyberForum.ru

onTouchEvent в потоке - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Hello World! http://www.cyberforum.ru/android-dev/thread449938.html
Привет! Такая вот штука…попытался запустить свой первый проект HelloWorld. Всё сделал точно по инструкции…сверялся с двумя букварями..Запуск не получается…Пишет что нужно исправить ошибки проекта…Я просто в тупике….сорри. Да…где можно посмотреть лог файл или код ошибки? Вот скриншот...
Программирование Android Ошибка в eclipse помогите пожалуйсто постоянно выскакивают ошибки btnCancel (btnOk;tvOut;main) cannot be resolved or is not a field public class MainActivity extends Activity implements OnClickListener { TextView tvOut; Button btnOk; Button btnCancel; /** Called when the activity is first created. */ @Override http://www.cyberforum.ru/android-dev/thread449228.html
Странная арифметика Java Программирование Android
Здравствуйте. Кто подскажет в чем дело, выполняю обычный пример (-3.4)+3, а ответ получаю совершенно необычный -0.4000001. С чем это может быть связано? Используемые типы данных float.
Eclipse не хочет компилировать приложение Программирование Android
Решил попытаться написать приложение под Андроид, eclipse не хочет компилировать подскажите плиз, что не так.
Программирование Android Генератор кубиков http://www.cyberforum.ru/android-dev/thread448185.html
Всем привет) Помогите новичку... Познания нулевые и вот решил попробовать сделать что-то похожее на игральные кости (кубики). Кодить пытаюсь в Eclipse (настроено все под Андроид, и виртуальные машины стоят) Ну это все преамбула... А теперь так сказать "амбула" ) Наваял такой вот код, он выводит на экран две простых кнопки на которых цифрами выводятся значения кубика. Далее хотел на обе...
Программирование Android ListView + Adapter Товарищи, помогите советом. Создал очень простую прогу: public class JustTestActivity extends Activity { String s = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" }; ListView lv; @Override подробнее

Показать сообщение отдельно
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,107
27.02.2012, 20:38     onTouchEvent в потоке
Мои уроки используются))) Эт очень приятно) А если по теме то тебе нужно создать второй метод рисования который будет рисовать во втором потоке после нажатия на экран. Делаем так:

Создаем интерфейс для дальнейшего использования в потоке:
Java
1
2
3
4
private interface DrawHelper
{
    void draw(Canvas canvas);
}
Дальше нам нужно создать метод который будет повторять работу метода run но немного усовершенствованый:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void draw(DrawHelper helper)
{
    Canvas canvas = null;
    try
    {
        // подготовка Canvas-а
        canvas = mSurfaceHolder.lockCanvas();
        synchronized (mSurfaceHolder)
        {
                helper.draw(canvas);
        }
    }
    catch (Exception e) { }
    finally
    {
        if (canvas != null)
        {
            mSurfaceHolder.unlockCanvasAndPost(canvas);
        }
    }
}
Дальше нужно создать переменные которые будут юзать наш интерфейс в конструкторе или в методе онТач:
Java
1
2
3
4
5
/** Хелпер для перерисовки экрана */
private DrawHelper mDrawScreen;
 
/** Хелпер для рисования результата игры*/
private DrawHelper mDrawGameover;
И прописать нужные нам действия при нажатия на экран:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// функция для рисования экрана
    mDrawScreen = new DrawHelper()
    {
        public void draw(Canvas canvas)
        {
            onDraw(canvas);
        }
    };
 
    // функция для рисования результатов игры
    mDrawGameover = new DrawHelper()
    {
        public void draw(Canvas canvas)
        {
            // Вывели последнее состояние игры
            onDraw(canvas);
 
         //рисуем шо хотим       
        }
    };
Немного видоизменяем на run для того что бы не повторять работу метода draw():
Java
1
2
3
4
5
6
7
8
9
/** Действия, выполняемые в потоке */
public void run()
{
    while (running)
    {
            draw(mDrawScreen);
    }
    draw(mDrawGameover);
}
Метод draw() должен находится в классе потоке, потому что если разместить его в не класса потока будут проблемы с рисованием и возможно потрепает очень нервы.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru