更改OnClickListener中按钮的可见性的问题

时间:2015-03-21 07:00:43

标签: java android button audio

下面是在我的项目中播放音频的代码。当我点击播放按钮时,它会变为暂停按钮,我正在通过我的Application类中的init()方法播放音频。我面临的问题是点击播放后按钮需要几秒钟(5-10秒),然后播放按钮变为暂停。但它应立即更改为暂停按钮,因为我在onClick()内的第一个语句是holder.pause.setVisibility(View.VISIBLE);。但是,如果我注释掉init方法调用行ProjectApplication.getInstance().init(mCtxt, lMoment.getProjectMediaLoc(), holder.lVisualizerView, lAudioProgressBar,holder.Image,holder.Image2);,它会立即更改为暂停按钮,但播放音频需要使用init方法。如果我使用postDelayed()方法并在2秒后调用init()方法,那么它将作为但是我无法理解为什么init()方法在更改可视性和暂停按钮的可见性时会产生问题,因为在更改可见性之后会调用init方法()。

holder.play.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    holder.pause.setVisibility(View.VISIBLE);
                    holder.play.setVisibility(View.INVISIBLE);

                    ProjectApplication.getInstance().init(mCtxt, lMoment.getProjectMediaLoc(), holder.lVisualizerView, lAudioProgressBar,holder.play,holder.pause);

                    notifyDataSetChanged();





                }

            });

ProjectApplication.java

 public void init(Context mCtxt,String aAudioUrl, final VisualizerView mVisulizerView,final ProgressBar lAudioProgressBar,final ImageView play,final ImageView pause  )
    {

        lAudioProgressBar.setVisibility(View.VISIBLE);

        mProjectPlayer= MediaPlayer.create(mCtxt, Uri.parse(aAudioUrl));
      mProjectPlayer.setLooping(false);
        mProjectPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                Log.e("msg","start");
                mProjectPlayer.start();

                mProgressbar.setVisibility(View.GONE);
                lAudioProgressBar.setVisibility(View.INVISIBLE);
                mProjectPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        play.setVisibility(View.VISIBLE);
                       pause.setVisibility(View.INVISIBLE);
                        mVisulizerView.setVisibility(View.INVISIBLE);
                        ProjectApplication.getInstance().cleanUp(mVisulizerView);
                        HomeFragment.projectListAdapter.notifyDataSetChanged();
                    }
                });
            }
        });

0 个答案:

没有答案