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

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

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

Смена бекграунда на андроиде - Программирование Android

11.03.2015, 13:51. Просмотров 336. Ответов 5
Метки нет (Все метки)

Всем доброго времени суток.
У меня появилась небольшая проблема. Опишу ее через "что я хочу", "что я пробовал" и "что выходит".

Что я хочу:
Я пишу программку на андроиде и хочу сделать, чтоб при включении программы на экран телефона был выведен чистый бекграунд или картинка, эта картинка провисела на экране 10000 мс, а далее она пропала и на ее месте дорисовались кнопки и прочая лабуда. Все это я хочу сделать в одной активити.

Что я пробовал:
1. Пробовал создавать два лейаута. В первом был нарисован только бекграунд. Я его вызывал, потом делал паузу в 10000мс, далее вызывал второй лейаут, который рисовал мне все остальное.
2. Пробовал сделать через один лейаут, создав в нем FrameLayout, который выводил бекграунд и LinearLayout, в котором были прорисованы кнопочки. LinearLayout изначально делал инвизиблом. В коде вызывал лейаут, далее ставил 10000мс, далее делал LinearLayout видимым.
3. Пробовал создавать многопоточность.

Что выходит:
А выходит следующее- при запуске программы показывает серый экран, бекграунд не прорисовывает, далее программа спит\ждет эти самые 10000мс, а далее рисует все вместе, а то есть бекграунд, а поверх него кнопочки. Как я понял, андроид пропускает первую прорисовку бекграунда, а сразу отдает приоритет выполнению 10000мс. Далее же прорисовывает все вместе.

Так вот, как сделать, чтоб рисовало мне картинку\бекграунд, потом с этой картинкой, показанной на экране ждало 10000мс, а далее уже выводило поверх новые кнопочки?

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

Буду очень благодарен за помощь. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2015, 13:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Смена бекграунда на андроиде (Программирование Android):

Смена бекграунда на андроиде - Программирование Android
Всем доброго времени суток. У меня появилась небольшая проблема. Опишу ее через "что я хочу", "что я пробовал" и "что выходит". Что...

GridView. Изменение бекграунда по нажатию - Программирование Android
Есть элемент GridView, который я вызываю через Spinner. По нажатию на один из элементов GridView, его background должен меняться на...

Debug на андроиде - Программирование Android
Здравствуйте. Как вы думаете, с помощью debug можно узнать как будет загружаться процессор (и ОП) в разные моменты выполнения программы или...

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

LED индикаторы на андроиде - Программирование Android
Подскажите как ими можно программно управлять?

Файловые диалоги в андроиде - Программирование Android
Открыть/сохранить файл, выбрать каталог и т.д. Насколько я понял готовых как в windows нету. Может есть какие то сторонние либы ???

5
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
11.03.2015, 15:04 #2
Цитата Сообщение от SMTNKR Посмотреть сообщение
3. Пробовал создавать многопоточность.
С этого места поподробнее, что не получилось?
0
rouze
0 / 0 / 0
Регистрация: 02.03.2015
Сообщений: 7
11.03.2015, 16:01 #3
Делаешь 2 Активити и 2 лайоута. Для того активити, которое будет заставкой в манифесте прописываешь -

XML
1
2
3
4
<intent-filter>
<action android:name="имя_твоего_пакета.SPLASH"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
В классе главного Активити в методе onCreate прописываешь типа:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
setContentView(R.layout.main);
Thread spTimer = new Thread(){
public void run(){
try{
sleep(10000);
Intent spIntent = new Intent("имя_твоего_пакета.SPLASH");
startActivity(spIntent);
} catch (InterruptedException e){
e.printStackTrace();
}
finally{
finish();
}
}
};
spTimer.start();
Я думаю понятно, что надо рисовать 2 лайоута с одинаковым бэкграундом (один без виджетов - заставка, второй с виджетами - основной).
0
SMTNKR
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 30
12.03.2015, 13:11  [ТС] #4
Эмм. Сделал так как ты посоветовал, заработало, но не так как нужно.
Сделал два активити. Первый- MainActivity, в который вставил твой кусок кода, второй- LoadScreenActivity, который должен нарисовать картинку при включении на 10 секунд.

То, что ты посоветовал делает следующее: Запускает MainActivity, ждет 10 секунд, а потом запускает LoadScreenActivity. Но мне ведь нужно сделать все наоборот, ибо мне нужно дальше продолжать работу в мейне.

Попробовал вставить твой кусок кода в LoadScreenActivity.

Мейн выглядел вот так:

Java
1
2
3
4
5
6
 super.onCreate(savedInstanceState);
        //this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);
        
        Intent spIntent = new Intent("ua.AIDA64.Bash_im.SPLASH");
        startActivity(spIntent);
LoadScreenActivity вот так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 setContentView(R.layout.view_loadscreen);
 
        Thread spTimer = new Thread(){
            public void run(){
                try{
                    sleep(10000);
                    Intent spIntent = new Intent("android.intent.action.MAIN");
                    startActivity(spIntent);
                } catch (InterruptedException e){
                    e.printStackTrace();
                }
                finally{
                    finish();
                }
            }
        };
        spTimer.start();
Вроде бы теперь работает как надо- изначально выводит лейаут от LoadScreenActivity, далее с ним ждет 10 секунд. Но потом случается проблема. После 10 секунд ожидания Андроид выводит непонятное мне окно. (я никогда не использовал андроид до начала написания программы.) Скрин окна выложил во вложении. Подозреваю, что это ошибка.
Как исправить? Может другим способом решить данный вопрос?
0
Миниатюры
Смена бекграунда на андроиде  
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 846
12.03.2015, 15:09 #5
SMTNKR,
Java
1
Intent spIntent = new Intent("android.intent.action.MAIN");
неявный интент.
Если хотите открыть другое активити используйте другой конструктор:
Java
1
Intent intent = new Intent(ТекущееАктивити.this, ЗапускаемоеАктивити.class);
0
rouze
0 / 0 / 0
Регистрация: 02.03.2015
Сообщений: 7
12.03.2015, 16:36 #6
Манифест выложи, возможно там придется кое-что поправить, чтобы не вылазило окно. Ну или можно сделать как androbro предложил.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2015, 16:36
Привет! Вот еще темы с ответами:

Защита приложения на Андроиде - Программирование Android
Ребят, доброго времени суток всем! Есть программа. Нужно: защитить, выпустить собранное apk с защитой, чтобы не смогли вскрыть,...

Масштабирование компонентов на андроиде - Программирование Android
Сейчас пытаюсь освоить андроид 2.3.3 (но если окажется, что там все плохо, то может повышу версию). Суть проблемы: нужно расставить 6...

Простенькая программа на андроиде - Программирование Android
Требуется написать несложную программу на андроиде, вращение одного предмета в трехмерном пространстве. Кто возьмется и какая цена вопроса?

Базы данных в андроиде - Программирование Android
Структура данных примерно такова public class Stat { int id, key_id; List&lt;String&gt; date; List&lt;String&gt; rub_1; ...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
12.03.2015, 16:36
Ответ Создать тему
Опции темы

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