Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
SMTNKR
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 30
1

Смена бекграунда на андроиде

11.03.2015, 13:51. Просмотров 373. Ответов 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
Ответы с готовыми решениями:

Смена бекграунда на андроиде
Всем доброго времени суток. У меня появилась небольшая проблема. Опишу ее...

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

Кликер на андроиде
Собираюсь написать обычный кликер на андроиде. Сразу хочу уточнить. 1)...

Debug на андроиде
Здравствуйте. Как вы думаете, с помощью debug можно узнать как будет...

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

5
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 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
344 / 304 / 68
Регистрация: 17.10.2014
Сообщений: 903
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
12.03.2015, 16:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2015, 16:36

Базы данных в андроиде
Структура данных примерно такова public class Stat { int id, key_id;...

Файловые диалоги в андроиде
Открыть/сохранить файл, выбрать каталог и т.д. Насколько я понял готовых как в...

Questions новичка в андроиде
Недавно начал изучать андроид и возникли следующие вопросы: 1) В чем...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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