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

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

Войти
Регистрация
Восстановить пароль
 
 
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
#1

Прозрачный диалог ожидания - Программирование Android

09.12.2014, 07:20. Просмотров 1194. Ответов 16
Метки нет (Все метки)

Привет, как сделать эту крутяшку и текст снизу? В инете толи плохо искал, толи еще что. Кастомизировать или есть уже родной? Если не трудно, то с примером бы или ссылку. Спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2014, 07:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прозрачный диалог ожидания (Программирование Android):

Диалог ожидания при запуске активности - Программирование Android
Добрый вечер! При запуске нового Intent происходит задержка. Иногда незначительная, иногда на пару секунд. На время задержки хочу...

Прозрачный showDialog - Программирование Android
Здравствуйте,как сделать прозрачным showDialog? В интернете почитал как это сделать, и нашел только про применения стиля к showDialog.Стиль...

Анимация ожидания - Программирование Android
Здравствуйте! В приложении работаю с Picasso, на загрузке стоит заглушка ,можно поменять png на gif? Если да, то как? При прямолобной...

Анимация ожидания - Программирование Android
Нужно заблокировать экран и вывести картинку ожидания, пока не выполнится некое действие

Цикл в режим ожидания - Программирование Android
Доброго. Суть проблемы такая: есть цикл (от 1-го до 9-ти), внутри которого оператор switch с 9-ю case'ами (один case на каждое...

Полностью прозрачный status bar - Программирование Android
Как сделать прозрачный статус бар как на картинке: и чтобы изображение было под статус баром.

16
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
09.12.2014, 09:47 #2
Rube, кастомный нужен. Я так делал:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MyDialog extends Dialog {
 
 
    public MyDialog(Context context) {
        super(context);
        init(context);
        this.setContentView(R.layout.dialog_layout);
        setCancelable(false);
        setCanceledOnTouchOutside(false);
    }
 
    private void init(Context context) {
        Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
        int width = display.getWidth();
        int height = display.getHeight();
        getWindow().setLayout((6 * width) / 7, (4 * height) / 5);
    }
 
}
Вот такой будет занимать 90% экрана. А вьюха диалога мб любая (см #setContentView)
3
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
09.12.2014, 09:50 #3
Rube, привет! Имеешь в виду, когда некий процесс работает через AsyncTask в фоне, а на переднем плане крутится progressbar, а рядом написан текст? Это делается через publishProgress и onProgressUpdate, но само диалоговое окно тоже надо запустить.
1
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
09.12.2014, 09:56 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
http://stackoverflow.com/questions/2...he-transparent

http://stackoverflow.com/questions/3...226233#3226233
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
09.12.2014, 14:22  [ТС] #5
YuraAAA, не удалось реализовать, что там в dialog_layout надо рисовать?
CoolMind, речь об "крутилке прогресса" в AsyncTask, только чтоб в середине экрана и только анимируемое колечко.
Armagedo, по первой ссылке получилось сделать, но в 2.3.3 все по старому отображается.
А вот по второй (как назло ответ еще самый последний ) то что надо.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- progress_layout.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ProgressBar
        android:id="@+id/progressBar1"
        STYLE="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />
</LinearLayout>
Java
1
2
ProgressDialog progressDialog = ProgressDialog.show(this, null, null, true, false);
progressDialog.setContentView(R.layout.progress_layout);
Осталось выяснить затемнение экрана как убрать.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
09.12.2014, 14:40 #6
Rube, затемнение, скорее всего, не убрать. Хотя, не знаю.
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
    private void showProgressDialog(boolean visible) {
        if (visible) {
            if (progressDialog == null || !progressDialog.isShowing()) {
                try {
                    progressDialog = new ProgressDialog(context);
                    progressDialog.setTitle("Заголовок");
                    progressDialog.setMessage("Пожалуйста, подождите...");
                    progressDialog.setCancelable(false);
                    progressDialog.show();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } else {
            try {
                if (progressDialog != null && progressDialog.isShowing())
                    progressDialog.dismiss();
                progressDialog = null;
            } catch (IllegalArgumentException e){
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
 
    public class YourClass extends AsyncTask <String, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            showProgressDialog(true);
        }
 
        @Override
        protected Void doInBackground(String... params) {
            // твои действия
            publishProgress("Ещё немного");
            return null;
        }
 
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(null);
            showProgressDialog(false);
        }
 
 
        @Override
        protected void onProgressUpdate(String... progress) {
            try {
                if (progress != null && progress.length > 0 && progressDialog != null && progressDialog.isShowing())
                    progressDialog.setMessage(progress[0]);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
Если текст не нужен, можешь убрать в соответствующих местах, останется только колечко.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
09.12.2014, 14:56  [ТС] #7
Цитата Сообщение от CoolMind Посмотреть сообщение
останется только колечко.
И черный квадрат
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
09.12.2014, 16:15 #8
Rube, если не нужно затенение и все остальное связанное с диалогом, дак тогда зачем использовать диалог? Можно же все засунуть в RelativeLayout и "колечко" повесить в центре с visibility="gone", а когда нужно - поменять видимость и все. Если нужен еще текст - можно по центру расположить не progressBar, а, к примеру, LinearLayout в котором будет текст и progressBar, и менять видимость уже этого лейаута.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
09.12.2014, 17:20  [ТС] #9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
и "колечко" повесить в центре с visibility="gone"
Можно конечно, только это дело все в AsyncTask происходит, мой то пример 2 строчки занимает, а Ваше предложение на пару методов тянет
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
09.12.2014, 17:25 #10
Каких пару методов?
Java
1
2
3
4
5
6
onPreExecute(){
progressLayuot.setVisibility(VISIBLE);
}
onPostExecute(){
progressLayout.setVisibility(GONE);
}
И все больше ничего не нужно, даже меньше кода т.к. не нужно писать кастомный диалог и его вызов\отмену.
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
09.12.2014, 17:32 #11
Spelcrawler, я так полагаю вы из тех, кто четыре точки таки тремя линиями соедините
В смысле, неожиданная альтернатива, как по мне
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
09.12.2014, 19:55 #12
Цитата Сообщение от Armagedo Посмотреть сообщение
кто четыре точки таки тремя линиями соедините
Иногда и одной получается)
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
09.12.2014, 20:02  [ТС] #13
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Каких пару методов?
Ну вон как я и сказал - пара методов
Ну допустим сделаю я визибл, а что насчет модальности?
У меня в баре кнопка Обновить, жмем - запускаем AsyncTask, делаем Visible, жмем опять Обновить и...
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
09.12.2014, 20:16 #14
Rube, нужно заблокировать нажатие кнопки при обновлении или нормально отработать второе обновление? Если второе, то с диалогом это еще сложнее сделать, даже по-моему не реально. А если первое - то просто: можно верхний лейаут сделать не только по центру а вообще на весь экран с background="00000000", тогда он закроет собой все элементы и на них уже не нажмешь, но под ним будет все видно как будто его и нет совсем т.к. прозрачный бекраунд. Или можно повесить на кнопку "Обновить" нулевой листенер (setOnClickListener(null)) на время обновления и потом обратно повесить тот что был. По поводу null в листенере не уверен, вроде делал так, если не сработает можно просто повесить пустой листенер.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
09.12.2014, 22:05  [ТС] #15
Spelcrawler, можно все конечно сделать, я вот полдня потратил на решение, в принципе с затемнением даже красивше).
0
09.12.2014, 22:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2014, 22:05
Привет! Вот еще темы с ответами:

Как задать прозрачный фон? - Программирование Android
Использую прогресс бар горизонтальный и хочу его кастамизировать. Ниже код: &lt;layer-list...

ListView и Диалог - Программирование Android
Привет. Редактирование TextView при помощи диалога. public class MainActivity extends Activity { final String LOG = &quot;myLogs&quot;; ...

R-независимый диалог - Программирование Android
После Делфи привык делать &quot;идеально отлаженые компоненты&quot; и ими пользоваться во всех своих проектах. Написал свой диалог Yes-No для...

Не работает диалог - Программирование Android
Добрый день! Подскажите как быть. Имеется код создания диалогового окна AlertDialog, с анонимным классом. Android Studio ругается на...


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

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

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