Androidスタジオでピアノアプリを作成しています:
再生ボタンのオンクリックリスナーがあります。これを押すと、録音ボタンと再生ボタンが非表示になり、録音されたサウンドの再生中に停止ボタンが表示されます。
再生ボタン
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();
メソッドが表示されるボタンを変更する前にサウンドを再生しています。メソッドがループの上にあるため、これは意味がないようです。ループが実行されてサウンドが再生される前に、ボタンの可視性が最初に変更されるように設定する方法はありますか?