- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个具有录制按钮和切换按钮的应用程序。录音按钮开始录音,切换按钮声明是否必须按住录音按钮才能录音或仅按一次。这就是我试图实现它的方式:
touchToRecord.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
saveCheckedState("touchToRecord", isChecked);
if (isChecked)
{
recBtn.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
chTimer.setBase(SystemClock.elapsedRealtime());
chTimer.setText("00:00:00");
chTimer.start();
chTimer.setTextColor(Color.GREEN);
startRecording();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
chTimer.stop();
chTimer.setBase(SystemClock.elapsedRealtime());
chTimer.setText("00:00:00");
chTimer.setTextColor(Color.GRAY);
stopRecording();
nameAlert();
}
return true;
}
});
}
else if (isChecked == false)
{
}
如您所见,如果切换按钮处于“打开”或“选中”状态,则必须按住录制按钮才能录制,当您松开该按钮时,它会停止录制。现在这可行了,但只有一个缺陷。我将 isChecked 状态保存到共享首选项,因此,如果我将切换按钮“打开”,然后重新启动应用程序,切换按钮将保持“打开”状态,但我必须将其关闭然后再次打开才能正常工作。因此,如果我重新启动该应用程序,它仍然处于“开启”状态,但无法工作。
此外,如您所见,我还没有编写关于切换按钮为 false 时会发生什么情况的代码。
我现在的代码:
if (touchToRecord.isChecked() == true)
{
recBtn.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
startTimer();
startRecording();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
stopTimer();
stopRecording();
nameAlert();
}
return true;
}
});
}
if (touchToRecord.isChecked() == false)
{
recBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
if (recorder == null)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
startTimer();
startRecording();
}
else if (recorder != null)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
stopTimer();
stopRecording();
nameAlert();
}
}
});
}
OnCheckedChangeListener:
touchToRecord.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
saveCheckedState("touchToRecord", isChecked);
}
});
从共享首选项获取切换按钮状态:
touchToRecord.setChecked(getCheckedState("touchToRecord"));
最佳答案
这与你的逻辑有关。您有onCheckedChangeListener
,这意味着当用户更改切换按钮
时,您将检查它是On还是Off。因此,当您终止应用程序并重新启动时,由于 Toggle Button
上没有任何更改,因此它将不起作用。
将 onTouchListener
放在 onCheckedChangeListener
之外。在您的 onCheckedChangeListener
中设置您的状态(On 或 Off),并在 onTouchListener
中检查它是否为 打开或关闭并执行您的操作。
关于java - 切换按钮 onCheckChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18239804/
我正在制作一个具有录制按钮和切换按钮的应用程序。录音按钮开始录音,切换按钮声明是否必须按住录音按钮才能录音或仅按一次。这就是我试图实现它的方式: touchToRecord.setOnCheckedC
我对 Android 编程比较陌生,并且创建了一个包含 TextViews 和 CheckBox 的 ListView。我已设法阻止在滚动列表时随机检查复选框。 但是,如果选中/取消选中该复选框,我想
1)我在 Recycler View Adapter 中使用 Switch 按钮。 2)问题是“上下文”,我想在选中或取消选中切换按钮时显示 toast 。 3) 我应该在 Toast 中使用哪个 C
我是一名优秀的程序员,十分优秀!