我正在尝试制作一个简单的应用程序,每秒可以多次更改背景颜色。例如,在这里我尝试每 12.5 毫秒执行一次(如何输入 .5 部分?)
我对编程非常陌生,不知道如何调用这个方法/计时器来开始运行。
我运行应用程序,它打开带有白色背景的 Activity ,但没有任何反应。 由于我很新,当我查看 Timer() 文档时,我不太确定我在这里看到的是什么......如果有人可以提供帮助,那就太棒了。
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import java.util.Timer;
import java.util.TimerTask;
import static android.support.v7.appcompat.R.attr.background;
/**
* Created by Spader on 3/17/2017.
*/
public class FlashingScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//set content view AFTER ABOVE sequence (to avoid crash)
this.setContentView(R.layout.flashing_screen);
new Timer().scheduleAtFixedRate(new TimerTask(){
@Override
public void run(){
runOnUiThread(new Runnable() {
@Override
public void run() {
//stuff that updates ui
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
getWindow().getDecorView().setBackgroundColor(Color.BLACK);
}
;
});
}
},0,12);
}
}
最佳答案
1. getWindow().getDecorView().setBackgroundColor(Color.WHITE); getWindow().getDecorView().setBackgroundColor(Color.BLACK); 这始终设置黑色,因为它不是有条件的。您可能希望在每次执行可运行时使用 boolean 值来切换颜色。
您不应该使用 getDecorView()。相反,从布局 xml 中找到 Root View 并更改颜色。
在 Java 中,时间没有浮点值。所以你不能有 12.5 毫秒。
关于java - 尝试将背景从白色更改为黑色,但无法运行此 timer() 方法,屏幕只有白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869601/