如何在功能期间更改 android 屏幕
How to change android screen during function
我正在尝试在 运行 期间更改应用程序的屏幕。
public void StartRecording(View view)
{
start_button.setEnabled(false);
stop_button.setEnabled(true);
recording = true;
while(recording==true)
{
// Here is a code that changes many views on the screen
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
通过单击 xml 文件中的 start_button 调用函数 StartRecording()。
单击 stop_button 时录制设置为 false。
屏幕上的视图应该改变,等一下,再改变一下,等一下等等。
但实际情况是,函数会一直等到循环结束,然后只显示最后的屏幕变化。我做错了什么?
提前致谢:)
编辑:
我尝试使用 Handler,结果相同..
private final Handler mHandler = new Handler(Looper.getMainLooper())
{
public void handleMessage(Message msg)
{
tv.setText((String) msg.obj);
}
};
tv 是一个文本视图。我没有在上面代码中的 try{} 上方使用 tv.setText,而是向 mHandler 发送了一条消息来更改文本,它仍然仅在整个 startRecording 函数结束后才更改它。
现在,我做错了什么? :/
What am I doing wrong
您正在调用 sleep
等待 UI 线程,它负责绘制您的视图和处理事件。如果你想安排 10 次不同的视图重绘,你可以使用 Handler and its postDelayed 方法
我正在尝试在 运行 期间更改应用程序的屏幕。
public void StartRecording(View view)
{
start_button.setEnabled(false);
stop_button.setEnabled(true);
recording = true;
while(recording==true)
{
// Here is a code that changes many views on the screen
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
通过单击 xml 文件中的 start_button 调用函数 StartRecording()。
单击 stop_button 时录制设置为 false。
屏幕上的视图应该改变,等一下,再改变一下,等一下等等。 但实际情况是,函数会一直等到循环结束,然后只显示最后的屏幕变化。我做错了什么?
提前致谢:)
编辑:
我尝试使用 Handler,结果相同..
private final Handler mHandler = new Handler(Looper.getMainLooper())
{
public void handleMessage(Message msg)
{
tv.setText((String) msg.obj);
}
};
tv 是一个文本视图。我没有在上面代码中的 try{} 上方使用 tv.setText,而是向 mHandler 发送了一条消息来更改文本,它仍然仅在整个 startRecording 函数结束后才更改它。
现在,我做错了什么? :/
What am I doing wrong
您正在调用 sleep
等待 UI 线程,它负责绘制您的视图和处理事件。如果你想安排 10 次不同的视图重绘,你可以使用 Handler and its postDelayed 方法