java - Android - 隐藏文本 --> 显示文本 2 秒 --> 再次隐藏文本

标签 java android multithreading thread-sleep

我正在开发一款供用户使用 Android 玩的棋盘游戏。由于 android 速度相当快,我想假装 android 正在执行一些艰难的计算,因此需要时间进行下一步操作。

我想做的事:-

  1. 用户回合 - 他移动。
  2. Android 转向 - Android 显示文本“我在思考”2 秒
  3. Android 会隐藏该文本,并且只有在此之后才会轮到他。

我尝试这样做:-

onAndroidTurn(){
    textView1.setVisibility(View.VISIBLE);
    Thread.sleep(2000);
    textView2.setVisibility(View.GONE);
}

但是发生的情况是线程 hibernate 但没有显示文本(好吧我知道为什么)。

然后在stackoverflow上搜索,我学到了一个方法:-

onAndroidTurn(){
    textView1.setVisibility(View.VISIBLE);
    new Handler().postDelayed(new Runnable(){
            void run() {
                textView1.setVisibility(View.GONE);
            }
    }, 2000);
}

现在它的作用是,它在另一个线程中运行该文本,并且 android 的回合在屏幕上更新,移动后,android 的回合显示“思考”是完全愚蠢的。

我能为此做什么?

最佳答案

尝试以下操作:

  • 显示“我在想”
  • 计算你的移动,但不实际执行移动,只是将其存储一段时间
  • 安排计时器
  • 当计时器耗尽时,删除文本并进行移动

类似这样的事情:

onAndroidTurn(){
    textView1.setVisibility(View.VISIBLE);
    saveMove(calculateNextMove());
    new Handler().postDelayed(new Runnable(){
        void run() {
            textView1.setVisibility(View.GONE);
            doNextMove(restoreMove());
        }
    }, 2000);
}

关于java - Android - 隐藏文本 --> 显示文本 2 秒 --> 再次隐藏文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17617481/

相关文章:

java - 定义一个 map 图层类java

java - Swing 工作线程不并发

java - 如何在 RxJava 上使用线程?

c# - 如果使用 System.Threading.Timer,是否需要 BackgroundWorker?

android - phonegap android 应用程序被谷歌游戏商店拒绝

asp.net - 客户端可以被视为一个线程吗?

java - 使用更窄的参数化覆盖泛型方法

java - Hibernate 不会为 @ManyToOne 创建外键约束

android - 什么是概念和规范文件,它们可以从 android studio 中的文件 -> 新建创建?

android - 重复的 "IInAppBillingService.aidl"文件 - 库 + 应用程序