【发布时间】:2017-12-04 13:59:01
【问题描述】:
我正在 android studio 中创建一个钢琴应用:
我的播放按钮有一个点击监听器,当按下它时应该使录制和播放按钮不可见,而在播放录制的声音时停止按钮可见。
播放按钮
mBtn_Play.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mRecordingState = "Playing";
switchButtonVisibility();
for (final int sound: mListRecordedSounds )
{
if (mRecordingState == "Ready")
{//break out of loop when stop button is pressed
break;
}
else {
mSoundPool.play(sound, 1,1,1,0,1);
try
{
Thread.sleep(500);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
});
}
按钮可见性切换方法
private void switchButtonVisibility()
{
if (mRecordingState != "Ready")
{
mBtn_Stop.setVisibility(View.VISIBLE);
mBtn_Record.setVisibility(View.GONE);
mBtn_Play.setVisibility(View.GONE);
}
else
{
mBtn_Stop.setVisibility(View.GONE);
mBtn_Record.setVisibility(View.VISIBLE);
mBtn_Play.setVisibility(View.VISIBLE);
}
}
使用录制和停止按钮,这可以正常工作
mBtn_Record.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mListRecordedSounds.clear();
mRecordingState = "Recording";
switchButtonVisibility();
}
});
mBtn_Stop.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mRecordingState = "Ready";
switchButtonVisibility();
}
});
由于某种奇怪的原因,它首先执行for 循环并在switchButtonVisibility(); 方法更改可见按钮之前播放声音。这似乎没有任何意义,因为该方法位于循环之上。有什么方法可以设置它,以便在按钮可见性之前先更改
循环执行并播放声音?
【问题讨论】:
标签: java android android-layout android-view android-thread