在准备好之前,请禁止使用按钮

时间:2011-09-15 20:29:20

标签: android multithreading media-player

所以我看到其他一些类似的帖子,但并没有完全回答我正在寻找的内容。

基本上onCreate正在加载内容(文本视图和图像),它还会打开另一个线程来准备媒体播放器,以便在按下按钮时播放特定的歌曲。如果打开此活动并快速按下该按钮则不会播放任何内容(我假设因为它没有机会准备)。如果我打开活动并给它一些时间它就可以了。我确实意识到运行在onCreate中加载的内容并不是最好的,但是我试图让它在其他线程中加载并且它失败了。对我来说一切都很好,我真正想要的就是这个。

我需要一些方法来阻止使用按钮或让他们知道它加载大约3-5秒。因此,要么使按钮淡出并且不能使用3-5秒,然后它变为活动状态或加载屏幕,这是一个透明的覆盖活动约3-5秒。如果你提到使用其他线程,你可以演示它,如果它没有要求太多或给我一些教程(除了谷歌笔记)。我还不太了解线程(对他们来说很新)而AsyncThread对我来说非常困惑。

如果您需要代码,请告诉我您想要发布的内容。谢谢,我感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

您可以在MediaPlayer上设置setOnPreparedListener,在此监听器中启用按钮并保存可以播放歌曲。 Docs

答案 1 :(得分:0)

我会创建一个控制按钮行为的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 =(Button)findViewById(R.id.activate);         mActivate.setOnClickListener(本);

然后在某个地方,你会检查魔法是否准备就绪,然后激活按钮:

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>

如果清楚,或者您需要我解释如何创建点击监听器,请告诉我。

祝你好运!