Android 编辑文本框计时器:只有创建视图层次结构的原始线程才能接触其视图
如果输入了错误的密码,我试图使edittext框振动并瞬间改变颜色Android 编辑文本框计时器:只有创建视图层次结构的原始线程才能接触其视图,android,timer,timertask,Android,Timer,Timertask,如果输入了错误的密码,我试图使edittext框振动并瞬间改变颜色 final Drawable oldBackground = findViewById(R.id.email).getBackground(); TimerTask timerTask = new TimerTask() { @Override public void run() { MainActivty.this.findViewById(R.id.password).setBackgroun
final Drawable oldBackground = findViewById(R.id.email).getBackground();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
MainActivty.this.findViewById(R.id.password).setBackground(oldBackground);
MainActivty.this.findViewById(R.id.email).setBackground(oldBackground);
}
};
Toast.makeText(MainActivty.this , valArray.get(0).toString(), Toast.LENGTH_SHORT).show();
findViewById(R.id.password).setBackgroundColor(Color.RED);
findViewById(R.id.email).setBackgroundColor(Color.RED);
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(500);Timer timer = new Timer();
timer.schedule(timerTask, 1000);
计时器任务在不同的线程上运行。Ui应该在Ui线程上更新 使用
runOnUiThread
或使用处理程序
runOnUiThread(new Runnable(){
@Override
public void run(){
// update ui here
}
});
处理者
Handler m_handler;
Runnable m_handlerTask ;
m_handler = new Handler();
m_handlerTask = new Runnable()
{
@Override
public void run() {
// do something
m_handler.postDelayed(m_handlerTask, 1000);
}
};
m_handlerTask.run();
你也可以使用倒计时
您必须使用计时器通过runOnUiThread这样的方法:
final TextView lblSSID = (TextView)findViewById(R.id.lblWifiSSID);
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new TimerTask() {
@Override
public void run() {
lblSSID.setText(networkConnection.getWifiName());
}
});
}
}, 0, 5000);
我如何调用它将
rununuithread
部分放入计时器任务中。或者使用处理程序或倒计时。