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

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

Восстановить пароль Регистрация
 
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
09.12.2014, 07:20     Прозрачный диалог ожидания #1
Привет, как сделать эту крутяшку и текст снизу? В инете толи плохо искал, толи еще что. Кастомизировать или есть уже родной? Если не трудно, то с примером бы или ссылку. Спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2014, 07:20     Прозрачный диалог ожидания
Посмотрите здесь:

Как задать прозрачный фон? Android
Анимация ожидания Android
R-независимый диалог Android
Android ListView и Диалог
Полностью прозрачный status bar Android
Цикл в режим ожидания Android
Android Диалог с флажками
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 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)
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
09.12.2014, 09:50     Прозрачный диалог ожидания #3
Rube, привет! Имеешь в виду, когда некий процесс работает через AsyncTask в фоне, а на переднем плане крутится progressbar, а рядом написан текст? Это делается через publishProgress и onProgressUpdate, но само диалоговое окно тоже надо запустить.
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
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
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);
Осталось выяснить затемнение экрана как убрать.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
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();
            }
        }
    }
Если текст не нужен, можешь убрать в соответствующих местах, останется только колечко.
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
09.12.2014, 14:56  [ТС]     Прозрачный диалог ожидания #7
Цитата Сообщение от CoolMind Посмотреть сообщение
останется только колечко.
И черный квадрат
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
09.12.2014, 16:15     Прозрачный диалог ожидания #8
Rube, если не нужно затенение и все остальное связанное с диалогом, дак тогда зачем использовать диалог? Можно же все засунуть в RelativeLayout и "колечко" повесить в центре с visibility="gone", а когда нужно - поменять видимость и все. Если нужен еще текст - можно по центру расположить не progressBar, а, к примеру, LinearLayout в котором будет текст и progressBar, и менять видимость уже этого лейаута.
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
09.12.2014, 17:20  [ТС]     Прозрачный диалог ожидания #9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
и "колечко" повесить в центре с visibility="gone"
Можно конечно, только это дело все в AsyncTask происходит, мой то пример 2 строчки занимает, а Ваше предложение на пару методов тянет
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
09.12.2014, 17:25     Прозрачный диалог ожидания #10
Каких пару методов?
Java
1
2
3
4
5
6
onPreExecute(){
progressLayuot.setVisibility(VISIBLE);
}
onPostExecute(){
progressLayout.setVisibility(GONE);
}
И все больше ничего не нужно, даже меньше кода т.к. не нужно писать кастомный диалог и его вызов\отмену.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
09.12.2014, 17:32     Прозрачный диалог ожидания #11
Spelcrawler, я так полагаю вы из тех, кто четыре точки таки тремя линиями соедините
В смысле, неожиданная альтернатива, как по мне
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
09.12.2014, 19:55     Прозрачный диалог ожидания #12
Цитата Сообщение от Armagedo Посмотреть сообщение
кто четыре точки таки тремя линиями соедините
Иногда и одной получается)
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
09.12.2014, 20:02  [ТС]     Прозрачный диалог ожидания #13
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Каких пару методов?
Ну вон как я и сказал - пара методов
Ну допустим сделаю я визибл, а что насчет модальности?
У меня в баре кнопка Обновить, жмем - запускаем AsyncTask, делаем Visible, жмем опять Обновить и...
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
09.12.2014, 20:16     Прозрачный диалог ожидания #14
Rube, нужно заблокировать нажатие кнопки при обновлении или нормально отработать второе обновление? Если второе, то с диалогом это еще сложнее сделать, даже по-моему не реально. А если первое - то просто: можно верхний лейаут сделать не только по центру а вообще на весь экран с background="00000000", тогда он закроет собой все элементы и на них уже не нажмешь, но под ним будет все видно как будто его и нет совсем т.к. прозрачный бекраунд. Или можно повесить на кнопку "Обновить" нулевой листенер (setOnClickListener(null)) на время обновления и потом обратно повесить тот что был. По поводу null в листенере не уверен, вроде делал так, если не сработает можно просто повесить пустой листенер.
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
09.12.2014, 22:05  [ТС]     Прозрачный диалог ожидания #15
Spelcrawler, можно все конечно сделать, я вот полдня потратил на решение, в принципе с затемнением даже красивше).
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
11.12.2014, 00:22     Прозрачный диалог ожидания #16
Rube, у вас какой-то странный выбор лучшего решения. К тому же, если бы вы использовали просто progressBar, то это было бы даже хуже, потому что на элементы формы можно было нажимать во время работы процесса. Так что вариант с AsyncTask и ProgressDialog - один из лучших.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2014, 09:03     Прозрачный диалог ожидания
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
11.12.2014, 09:03  [ТС]     Прозрачный диалог ожидания #17
CoolMind, ну в сообщении №5 я и использую ProgressDialog в AsyncTask.
Yandex
Объявления
11.12.2014, 09:03     Прозрачный диалог ожидания
Ответ Создать тему
Опции темы

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