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

Обновление элементов интерфейса через промежутки времени - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как перевести строковое значение ресурса проекта в применямое? http://www.cyberforum.ru/android-dev/thread1797382.html
Простите сразу за столь неуместное слово "применяемое", но я не знаю, что лучше тут подобрать... Я хотел перевести строковое значение ресурса в int int a = Integer.valueOf("R.drawable.image"); Но проограмма вылетела со следующей ошибкой: 08-22 19:09:59.430 31686-31686/spsoft.myapplication E/AndroidRuntime: FATAL EXCEPTION: main ...
Программирование Android Растет задержка между отправкой и получением сообщения Handler Привет! Товарищи, кто-то сталкивался со следующей проблемой? Есть два устройства которые общаются по блютуз. Одно шлет постоянные пакеты данных, а второе их постоянно получает. Отправка пакета идет по средствам Handler.sendEmptyMessageDelayed(Data, 100);. Я отправляю значение которое постоянно инкрементируется. Отправил 1 и получить должен 1. Но современен увеличивается задержка получения,... http://www.cyberforum.ru/android-dev/thread1797363.html
Программирование Android Не работает textAlignment на HTC Desire X
Всем привет, для текстовой вьюшки стоит выравнивание по центру, но на HTC Desire X 4.1.1 почему-то текст во вьюшке съезжает к левому краю. Тестили на нескольких девайсах, всё норм, а на этом такая байда. В чем может быть причина?
Программирование Android Как изучать андроид?
I know, that is one of the most oftently asked question, but I', really perplexed. THere are so much information about android and I don't know what to start with...or rather how to move on... I read "Head forst android development" and created sunshine app on udacity. Now I started reading "Professional android 4 application development". It's greate, but I need some practice as well,not only...
Программирование Android Как заставить работать ViewPager + TabLayout в ScrollView? http://www.cyberforum.ru/android-dev/thread1797247.html
Здравствуйте. Столкнулся с проблемой - ViewPager напрочь отказывается отображаться в ScrollView. При этом вне ScrollView всё работает как надо. Ошибок система никаких не выдаёт. В попытка решить эту проблему я использовал решения с этих сайтов: stackoverflow.com/questions/7381360/is-it-possible... muratonnet.blogspot.ru/2014/01/android-viewpager-i... и ещё нескольких не относящих на прямую к...
Программирование Android Потоки. Canvas Добрый день. Подскажите, как реализовать обработку изменения цвета с помощью потоков? Не могу разобраться как обратиться package niki.myapplication; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.CountDownTimer; подробнее

Показать сообщение отдельно
Biostasis
0 / 0 / 0
Регистрация: 23.08.2016
Сообщений: 1

Обновление элементов интерфейса через промежутки времени - Программирование Android

23.08.2016, 10:53. Просмотров 172. Ответов 0
Метки (Все метки)

Итак, решил я написать свою игру по типу шариков (просто для самообразования). Есть поле 9х9, каждая клетка кнопка (знаю, не продуктивно, может подскажете как умнее реализовать?), есть методы для генерирования математической модели поля и метод для применения математической модели на кнопочках (обновление Drawable). Сейчас я воюю с A* алгоритмом. Решил в нем сразу запилить обновление кнопок, чтобы путь показывался в реальном времени. Использовал компонент Timer, но он работает совсем не так как задумано изначально. Я понимаю в чем проблема, но совсем не понимаю как можно её решить... Никаких идей.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
private void assignPathfinder(Logic logic, final CellType startCell, CellType endCell) {
        class PathCell extends CellType {
            private CellType parent;
            private CellType end;
            private int g;
            private int h;
            private int f;
 
            public PathCell(int x, int y, int type, CellType p, CellType e, int c) {
                super(x, y, type);
                parent = p;
                end = e;
 
                switch (c) {
                    case 1:
                        g = 10;
                        break;
                    case 2:
                        g = 14;
                        break;
                }
                h = (Math.abs(this.x - e.getX()) + Math.abs(this.y - e.getY())) * 10;
                f = g + h;
            }
 
            public void setByParent(CellType parent) {
                x = parent.getX();
                y = parent.getY();
            }
 
            public int getF() {
                return f;
            }
 
            public void setParent(CellType parent) {
                this.parent = parent;
                h = (Math.abs(this.x - end.getX()) + Math.abs(this.y - end.getY())) * 10;
                f = g + h;
            }
 
            public CellType getParent() {
                return parent;
            }
 
            public CellType getEnd() {
                return end;
            }
        }
        int price = 1000;
        int back = -1;
        gameLogics.setCell(startCell.getX(), startCell.getY(), startCell.getType());
        x = startCell.getX();
        y = startCell.getY();
        type = startCell.getType();
 
        gameTime.schedule(new TimerTask() {
            @Override
            public void run() {
                TimerMethod();
                System.out.println("I'm done");
            }
        }, 5000); //Задолбался. Фурычить не изволит...
 
        ArrayList<PathCell> open = new ArrayList<PathCell>();
        final PathCell critical = new PathCell(startCell.getX(), startCell.getY(), startCell.getType(), startCell, endCell, 0);
        open.add(critical);
        Cell backup = new Cell();
        boolean r = true;
        while(r) {
            for(int i = critical.getX()-1; i < critical.getX()+2; i++) {
                for(int j = critical.getY()-1; j < critical.getY()+2; j++) {
                    if(logic.getCell(i, j) == 0) {
                        PathCell c = new PathCell(i, j, logic.getCell(i, j), critical.getParent(), critical.getEnd(), 1);
                        if((i == critical.getX()-1 && (j == critical.getY()-1 || j == critical.getY()+1)) || (i == critical.getX()+1 && (j == critical.getY()-1 || j == critical.getY()+1))) {
                            c = new PathCell(i, j, logic.getCell(i, j), critical.getParent(), critical.getEnd(), 2);
                        }
                        open.add(c);
                    }
                }
            }
            for (int i = 0; i < open.size(); i++) {
                if (open.get(i).getF() < price) {
                    price = open.get(i).getF();
                    back = i;
                }
            }
            time.schedule(new TimerTask() {
                @Override
                public void run() {
                    TimerMethod();
                    System.out.println("I'm done");
                }
            }, 5100); //Ну и чего тебе надо, удотище?
 
            backup.setX(critical.getX());
            backup.setY(critical.getY());
 
            critical.setParent(open.get(back));
            critical.setByParent(open.get(back));
            gameLogics.setCell(backup.getX(), backup.getY(), 0);
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    TimerMethod();
                    System.out.println("I'm done");
                }
            }, 5200); //Сжечь в костре святой Инквизиции!
 
            price = 1000;
            back = -1;
            open.clear();
            gameLogics.setCell(critical.getX(), critical.getY(), critical.getType());
 
            x = critical.getX();
            y = critical.getY();
            type = critical.getType();
            gtime.schedule(new TimerTask() {
                @Override
                public void run() {
                    TimerMethod();
                    System.out.println("I'm done");
                }
            }, 5300); //Не изволит запускаться-с
 
            if(critical.getX() == critical.getEnd().getX() && (critical.getY() == critical.getEnd().getY() || critical.getY() == critical.getEnd().getY()+1)) {
                r = false;
            }
        }
    }
Мне нужно, чтобы цикл while словно "приостанавливался" и терпеливо ждал пока приложение не применит метод assignLogics(). Но по мере загугливания проблемы, я понял, что это скорее всего невозможно. А как реализовать это по умному - пока не знаю...
Заранее благодарю за помощь!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru