Не используйте кнопку, пока она не будет готова - PullRequest
0 голосов
/ 16 сентября 2011

Итак, я видел другие похожие посты, но не совсем отвечающие на то, что я ищу.

В основном onCreate загружает контент (текстовые просмотры и изображения), а также открывает другой поток для подготовки медиаплеера, чтобы при нажатии кнопки воспроизводилась определенная песня. Если это действие открыто и кнопка нажата быстро, она ничего не воспроизводит (что я предполагаю, потому что у нее не было возможности подготовиться). Если я открою занятие и уделю ему несколько минут, оно будет работать нормально. Я понимаю, что не лучше запускать загружаемый контент в onCreate, но я пытался заставить его загружаться в другие потоки, и он с треском провалился. Со мной все в порядке, и я действительно хочу, чтобы это произошло.

Мне нужен какой-то способ, чтобы предотвратить использование кнопки или дать им знать, что она загружается в течение 3-5 секунд. Так что либо сделайте кнопку потухшей и непригодной для использования в течение 3-5 секунд, а затем она станет активной, либо загрузочный экран, который будет прозрачным и будет отображать активность в течение 3-5 секунд. Если вы упомянули об использовании других потоков, не могли бы вы продемонстрировать это, если он не требует многого, или показать что-то вроде учебника (кроме заметок googles). Я пока не очень хорошо понимаю темы (довольно плохо знакомы с ними), и AsyncThread меня довольно смущает.

Если вам нужен код, дайте мне знать, что вы хотите опубликовать. Спасибо, и я ценю любую помощь.

Ответы [ 2 ]

5 голосов
/ 16 сентября 2011

Вы можете установить setOnPreparedListener на своем MediaPlayer, в этом слушателе вы активируете свою кнопку и сохраняете возможность воспроизведения песни. Docs

0 голосов
/ 16 сентября 2011

Я бы создал файл селектора xml, управляющий поведением кнопки.Что-то вроде:

<?xml version="1.0" encoding="utf-8"?>

<item android:state_enabled="true" android:drawable="@drawable/lbl_black_matte" />

<item android:state_enabled="false" android:drawable="@android:color/transparent">
</item>

Затем в своей деятельности:

private Button mActivate;

mActivate = (кнопка) findViewById (R.id.activate);mActivate.setOnClickListener (this);

Затем где-нибудь вы проверите, готова ли магия, и активируйте кнопку, если так:

if (mEnabled) {

            mActivate.setEnabled(true);
        }

Наконец, у вас будетчтобы сослаться на селектор поведения кнопки в документе xml, в котором создана кнопка.

android:layout_width="match_parent">
        <Button android:id="@+id/activate"
            android:background="@drawable/b_behaviour" android:layout_height="wrap_content"
            android:layout_margin="8dip" android:layout_width="match_parent"
            android:text="@string/setup_label_enable" android:textColor="@android:color/white"
            android:textStyle="bold">
        </Button>

Пожалуйста, дайте мне знать, если это ясно, или вам нужно, чтобы я объяснил, как создать прослушиватель щелчков.

Удачи!

...