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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 291
#1

Генерация цветовых экранов - Программирование Android

10.02.2016, 11:07. Просмотров 512. Ответов 29
Метки нет (Все метки)

Добрый день! Необходимо реализовать мигание экрана смартфона в соответствии с определенным алгоритмом (что то на подобии милицейской сирены). Не могу найти пример программы в сети.
Собственно вопрос. Как лучше это реализовать: Задать цвета для основного Layout в файле ресурсов, а затем программно по алгоритму закрашивать экраны? Создать для каждого цвета свой Layout, а потом программно из вызывать? Как будет более оптимальнее и правильнее?
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2016, 11:07     Генерация цветовых экранов
Посмотрите здесь:

Указать цвет текста, подходящий для разных цветовых тем - Программирование Android
Есть напр. 2 темы: Theme.AppCompat - темная Theme.AppCompat.Light - светлая Вот как указать одним стилем что цвет TextView при...

Создание экранов - Программирование Android
Только начал изучать Android да и Java тоже. Хочу узнать, как сделать несколько экранов. Типа авторизация, при успешной открытие 2-ого...

Перелистывание экранов - Программирование Android
Если кто пользовался официальным приложение для ВК под андройд, то в разделе "новости" если провести пальцем по экрану,то от выползает как...

Горизонтальная прокрутка экранов - Программирование Android
Здравствуйте. Подскажите пожалуйста, как можно создать частичную горизонтальную прокрутку экранов, т.е. у меня в верхней части экрана...

Размеры экранов планшетов - Программирование Android
Всем привет. Вот какая штука. У гуглов в доках сказано что если в папочку sw600dp положить разметку, то она будет самостоятельно работать...

Про DPI экранов - Программирование Android
Как быть, я сделал текстовое приложение без графики, а на различных девайсах разный DPI и на одних слишком крупный текст где DPI 240, а где...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
10.02.2016, 12:07     Генерация цветовых экранов #2
Pir12345, да просто менять background тек. layout-а
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 291
10.02.2016, 12:10  [ТС]     Генерация цветовых экранов #3
YuraAAA, я просто думаю что если это сделать заменой background да еще и в цикле, то приложение будет зависать. Там нужно как то sleep() задержку поставить что ли?
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
10.02.2016, 12:22     Генерация цветовых экранов #4
Pir12345, почитайте про Thread.sleep.
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
10.02.2016, 12:35     Генерация цветовых экранов #5
пфф
1. делаем несложный метод
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    void startBlinking(final View v, final int[] color, final long[] duration) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < color.length; i++) {
                    final int pos = i;
                    v.post(new Runnable() {
                        @Override
                        public void run() {
                            v.setBackgroundColor(color[pos]);
                        }
                    });
                    try {
                        Thread.sleep(duration[i]);
                    } catch (InterruptedException ignore) {
                    }
                }
            }
        }).start();
    }
2. формируем пару массивов - цвета и длительности
Java
1
2
        long[] duration = {3000, 1500, 5000, 500, 1000};
        int[] color = {Color.RED, Color.MAGENTA, Color.rgb(128, 192, 255), Color.BLACK, Color.WHITE};
3. вызываем, не забыв передать в метод вьюшку, которая будет мигать и оба массива
Java
1
        startBlinking(view, color, duration);
4. PROFIT
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
10.02.2016, 12:39     Генерация цветовых экранов #6
5 раз помигает и успокоится
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
10.02.2016, 12:41     Генерация цветовых экранов #7
Я бы делал через Handler#postDelayed
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
10.02.2016, 12:44     Генерация цветовых экранов #8
Внимание!!! Это был пример, если что.

Я рассматривал вариант с postDelayed, но сам не знаю почему набросал пример вот так. По крайней мере я хоть чот-то набросал.
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 291
10.02.2016, 12:49  [ТС]     Генерация цветовых экранов #9
Да, Паблито, и за это вам большое спасибо!
Позвольте я канкртетизирую что нужно.
Есть алгоритм:
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
public class JavaApplication8 {
static int count = 0;
String s = "";
 
static int arr_matrix[][] = new int [7][5040];
static void permute(java.util.List<Integer> arr, int k){
   // ;
        for(int i = k; i < arr.size(); i++){
            java.util.Collections.swap(arr, i, k);
            permute(arr, k+1);
            java.util.Collections.swap(arr, k, i);
        }
        
        if (k == arr.size() -1){
            for(int i = 0; i < arr.size(); i++){
                arr_matrix[i][count] = arr.get(i);
            }
            count++; 
           // System.out.println(java.util.Arrays.toString(arr.toArray()));
            
        }  
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       java.util.List<Integer> arr_list =  java.util.Arrays.asList(1,2,3,4,5,6,7);
       
       JavaApplication8.permute(arr_list, 0);
       int arr_tmp[] = new int [7];
        for(int i = 0; i < 840; i++) {
            for(int j = 0; j < 7; j++){
                arr_tmp[j] = arr_matrix[j][6*i + 4];
                arr_matrix[j][6*i + 4] = arr_matrix[j][6*i + 2];
                arr_matrix[j][6*i + 2] = arr_tmp[j];
            }
            
            for(int j = 0; j < 7; j++){
                arr_tmp[j] = arr_matrix[j][6*i + 5];
                arr_matrix[j][6*i + 5] = arr_matrix[j][6*i + 3];
                arr_matrix[j][6*i + 3] = arr_tmp[j];
            }  
            for(int j = 0; j < 7; j++){
                arr_tmp[j] = arr_matrix[j][6*i + 4];
                arr_matrix[j][6*i + 4] = arr_matrix[j][6*i + 5];
                arr_matrix[j][6*i + 5] = arr_tmp[j];
            }             
             
 
         }
        String m_tmp = "";
        for(int i = 0; i < 5040; i++) {
            m_tmp = "";
            for(int j = 0; j < 7; j++){
                m_tmp = m_tmp + arr_matrix[j][i];
            }   
            System.out.println(m_tmp);
            
        }
        //System.out.println(" count = " + count);
 
    }
 
}
Он прекрасно компилируется и запускается в NetBeans

Я пытаюсь адаптировать его в Android Studio с доработкой вывода цветов.
То есть. Вводится массив чисел. Производится расчет по алгоритму.

А вот теперь нужно каждой цифре сопоставить цвет. Затем по нажатию кнопки, цвета выводятся экран (построчно).
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
10.02.2016, 12:52     Генерация цветовых экранов #10
Цитата Сообщение от Pir12345 Посмотреть сообщение
цвета выводятся экран (построчно).
щито?
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 291
10.02.2016, 12:57  [ТС]     Генерация цветовых экранов #11
Паблито, то есть в результате алгоритма формируется матрица чисел
а1,а2,а3...а7
.....

Каждому числу присваивается цвет. Вывод цветов на экран выводится а1-первый цвет, а2-второй цвет и так до конца первой строки матрицы, потом переходит на вторую строчку и т.д. пока не пройдет все строчки. То есть на экране будет генерироваться набор цветов от начала до конца матрицы.
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
10.02.2016, 13:26     Генерация цветовых экранов #12
теперь понятно, что значит "построчно" в этом контексте
ну я практически угадал с реализацией, надо просто подготавливать два массива из тех, что получены при расчетах

Юра предложил делать немного по другому, я попытался набросать не в уме, а в ide и у меня получилось строк не меньше чем в том варианте который я уже написал

может кто-то сделает короче и красивее, мне лично нравится и свой вариант
Pir12345
0 / 0 / 0
Регистрация: 05.01.2014
Сообщений: 291
10.02.2016, 13:30  [ТС]     Генерация цветовых экранов #13
Паблито, мне тоже нравиться ваш вариант, на сколько я его понял. Я раньше делал такую штуку, только на С++(тоже использовал Thread).Только вот как ваш вариант прикрутить к моему алгоритму, да еще и в рамках элементов Android studio?
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
10.02.2016, 13:45     Генерация цветовых экранов #14
ну надо создать какое-то вью которое будет менять цвет, разместитьего на экране
сделать кнопку Старт если она нужна
подготовить массив цветов и если время показа цветов на экране одинаковое то немного переделать мой метод - вместо массива длительностей передать просто число - сколько времени будет показываться каждый цвет

я не знаю как еще объяснить, но все писать с нуля я не стану )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2016, 14:00     Генерация цветовых экранов
Еще ссылки по теме:

Dimens для разных экранов - Программирование Android
Я хочу сделать для разных экранов разный размер шрифта. Как бы мне это сделать? Я создал папку values-sw480dp-hdpi для экрана HTC One V(на...

Разметка для разных экранов - Программирование Android
У меня такой вопрос как сделать разметку для разных размеров экранов наиболее оптимально. Ну если в проекте создавать кучу папок и...

Поддержка нескольких типов экранов - Программирование Android
Добрый вечер. В программировании для android я совсем недавно. Возникла проблема с поддержкой нескольких типов экранов. Вот по такому...

Как реализовать смену экранов жестами - Basic4Android
Здравствуйте! Всю голову сломал над тем как сделать смену экранов жестами. Пока реализована схема работы через Event и onFilling, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
10.02.2016, 14:00     Генерация цветовых экранов #15
А я бы сделал кастомную вьюшку, передавал ей массив объектов (цвет, длительность) и красил на канвасе)
Yandex
Объявления
10.02.2016, 14:00     Генерация цветовых экранов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru