2011-09-15 17 views
0

所以我看到一些其他帖子相似,但没有回答我在找什么。防止使用按钮,直到它准备好

基本上onCreate正在加载的内容(正文和图像),它也打开了另一个线程准备媒体播放器,以便当按钮按下它播放特定的歌曲。如果这个活动被打开并且按钮被快速按下,它就不会播放任何东西(我假设它是没有机会准备的)。如果我打开这个活动并给它一点时间,它就可以正常工作。我意识到,运行在onCreate中加载的内容并不是最好的,但我试图让它加载到其他线程中,并且它惨败了。对我而言,我真正想要发生的事情就是这样。

我需要一些方法来防止使用按钮或让他们知道它正在加载大约3-5秒。因此,无论是让按钮淡出并不可用3-5秒,然后它变为活动或加载屏幕是什么透明的,涵盖了约3-5秒的活动。如果你提到使用其他线程,你可以请示范它,如果它不要求太多或给我看像教程(谷歌笔记除外)。我不太了解线程(对他们来说很新鲜),AsyncThread对我来说相当混乱。

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

回答

5

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

+0

嗯,这听起来像一个有趣的工作方式。我会看一看。谢谢 – steven

+0

谢谢了。这工作完美。在按钮之前进行设置并将该按钮设置为禁用,并在OnPrepared中将该按钮设置为启用。不久,它准备好了按钮工作:)谢谢,这正是我一直在寻找。 – steven

+0

很高兴工作,你发展得非常快。 – Michele

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 =(按钮)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> 

请让我知道如果这是明确的,或者如果你需要我解释如何创建点击监听器。

祝你好运!

相关问题