java - 如何基于时间多次显示textView
问题描述
我想在 10 秒内显示一个 TextView,然后让它每 5 分钟消失一次,但我做不到,我已经阅读了这个Android CountDownTimer - 添加时间导致多个计时器运行,以及许多其他计时器,但仍然做不到,这是我尝试过的
private void placeFingerPrint() {
authViewModel.getSession().compose(bindToLifecycle()).subscribe(session -> {
this.session = session;
TextView textView = view.findViewById(R.id.player_finger_print);
MediaItem mediaItem = getPlayingMediaItem();
new CountDownTimer(20000, 10000) {
@Override
public void onTick(long millisUntilFinished) {
if (fingerprint.getChannel() != null && fingerprint.getChannel().contains(mediaItem.getExternalId())) {
textView.setVisibility(View.VISIBLE);
textView.setText(session.getHouseHoldId());
} else {
textView.setVisibility(View.GONE);
}
}
@Override
public void onFinish() {
textView.setVisibility(View.GONE);
start();
}
}.start();
});
解决方案
我们可以在 android 中使用 Thread 来实现这一点。如果您有明确的结束时间,通常使用 CountDownTimer。
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class ThreadSample extends AppCompatActivity {
Handler uiHandler = new Handler();
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thread_sample);
textView = findViewById(R.id.textView);
NameCounter runnable = new NameCounter();
new Thread(runnable).start();
}
class NameCounter implements Runnable {
int count = 0;
boolean show = true;
@Override
public void run() {
while (true) { // add your customized condition here to exit from the loop.
uiHandler.post(new Runnable() {
@Override
public void run() {
if (show)
textView.setVisibility(View.VISIBLE);
else
textView.setVisibility(View.GONE);
}
});
try {
if (show) {
Thread.sleep(10000);
show = false;
} else {
Thread.sleep(5000);
show = true;
}
} catch (Exception e) {
Log.e("ERROR", e.getMessage());
}
}
}
}
}
推荐阅读
- javascript - Rails 将文件渲染为 HTML 而不是 JS。使用 Ransack Gem
- cmake - CMake 在自定义命令中调用 add_subdirectory
- jquery - 为什么我的点击处理程序没有应用到 Greasemonkey 脚本中?
- python - Django 应用程序无法在新的 centos 服务器上运行
- macos - 如何使用 appdmg 工具进行代码签名?
- git - 使用 npm install 跳过 GitHub 依赖项
- javascript - 实现 Hermite 插值 - 多人游戏
- c++ - 如何在 C++ 中输出 unicode 方框图?
- javascript - 开玩笑单元测试 - 如何在 setTimeout 重复函数中通过异步函数调用
- vue.js - Vue组件计算没有反应