final Thread timer = new Thread(){
public void run (){
try{
//sleep
sleep (2000);
}catch(InterruptedException e){
e.printStackTrace();
}finally{
nav2.setAnimation(alpha2);
nav2.setVisibility(View.INVISIBLE);
}
}
};
timer.start();
nav1.setOnClickListener(new LinearLayout.OnClickListener(){
@Override
public void onClick(View arg0) {
nav2.setVisibility(View.VISIBLE);
nav2.setAnimation(inleft);
timer.start();
}});
我有一个代码会让按钮或linearlayout在定时器中2秒后消失,问题是它在最终执行后崩溃了。另外一个按钮(nav1)是整个线性布局,所以一旦触摸,nav2或按钮就会出现,定时器将再次重置
答案 0 :(得分:1)
通常,您无法从后台线程触摸UI小部件。
对于您的用例,请考虑UI线程上的Handler
和Runnable
发布的postDelayed()
。
答案 1 :(得分:0)
尝试这个而不是线程,
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
nav2.setAnimation(alpha2);
nav2.setVisibility(View.INVISIBLE);
} catch (Throwable e) {
e.printStackTrace();
}
}
}, 2000);