Android: Progress Bar в качестве заполнителя - PullRequest
1 голос
/ 25 июня 2011

Я надеялся выяснить, как использовать счетчик индикатора выполнения, чтобы заполнить поле, пока идет загрузка моего изображения. Я вставил анимированный .gif, но вскоре после того, как узнал, что .gif не подходит для Android. Вот мой код сейчас:

public void displayImage(String url, CarActivity activity, ImageView imageView) {
        if(imageMap.containsKey(url))
            imageView.setImageBitmap(imageMap.get(url));
        else {
            queueImage(url, activity, imageView);
            imageView.setImageResource(R.drawable.loading);

        }
    }

Вместо того, чтобы устанавливать изображение в свой loading.gif, как я могу использовать встроенный счетчик в качестве заполнителя и, возможно, наложить его на другое изображение.

спасибо!

Ответы [ 2 ]

5 голосов
/ 25 июня 2011

Ваш реальный вопрос: «Как я могу разместить один вид поверх другого вида». В вашем случае кажется, что вы хотите ImageView сзади и ProgressBar спереди. (Имя ProgressBar немного неинтуитивно, потому что по умолчанию это не бар, а небольшая вращающаяся анимация).

В макете, где у вас есть ImageView, создайте RelativeLayout. В RelativeLayout сначала разместите ImageView, а затем поместите ProgressBar. Установите атрибут android: visibility атрибут ProgressBar = "invisible", и, когда вы хотите, чтобы он был виден, установите его видимым в вашем коде: view.setVisibility (View.VISIBLE); (или. НЕВИДИМ).

Установите размер RelativeLayout равным wrap_content и сделайте то же самое для ImageView. Для ProgressBar вы можете захотеть жестко запрограммировать небольшой размер, скажем, ширину 40 dip и высоту. Установите параметры макета ProgressBar на «centerInParent», если вы хотите, чтобы он был центрирован по середине изображения.

2 голосов
/ 25 июня 2011

Я хотел бы изучить использование ViewAnimator для переключения между вашим ImageView и виджетом ProgressBar.

Добавьте ViewAnimator к вашему XML-макету, а затем сделайте что-то подобное в своей деятельности:

ViewAnimator switch = (ViewAnimator) findViewById(R.id.your_id);
ImageView image = new ImageView(this);
ProgressBar loading = new ProgressBar(this);

switch.addView(loading, 0, myLayoutParams);
switch.addView(image, 1, myLayoutParams);

Где первое поле addView () - это дочернее представление, которое вы добавляете, второе - это его индекс в Animator, а третье - это объект LayoutParams, который вы определили (что я не сделал)t show).

Я не тестировал код, но, надеюсь, должен отображаться виджет Android ProgressBar.

Затем, когда ваше изображение загрузится, вызовите:

switch.showNext();

Кроме того, пример здесь похоже на то, что вам нужно, если вы хотите проверить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...