我想在appWidget上指出简单的动画。
动画由2位图组成。
Resources r = getResources();
Bitmap ani[] = {BitmapFactory.decodeResource(r, R.drawable.anime1),BitmapFactory.decodeResource(r, R.drawable.anime2)};
有计数器
int counter = 0;
这里是TimerTask中的run方法。
@Override
public void run() {
AppWidgetManager awm = AppWidgetManager.getInstance(getApplicationContext());
ComponentName cn = new ComponentName(getApplicationContext(), sample.class);
RemoteViews rv = new RemoteViews(getApplicationContext().getPackageName(), R.layout.mainlayout);
rv.setImageViewBitmap(R.id.material, ani[counter]);
awm.updateAppWidget(cn, rv);
counter++;
}
当我与他们一起执行timer.schedule
时,
我怎么能停止这个计数器== 2?
答案 0 :(得分:2)
我不确定你需要什么。我假设如果计数器达到2,你需要取消。
int count=0;
_t = new Timer();
_tv.setText("");
_t.scheduleAtFixedRate( new TimerTask() {
@Override
public void run() {
_count++;
runOnUiThread(new Runnable() //run on ui thread
{
public void run()
{
_tv.setText(""+_count);
if(_count==2)
{
_t.cancel();
}
}
});
}
}, 1000, 1000 );
您也可以使用处理程序。使用计时器任务将创建一个新线程。更新ui应该在UI线程上完成。最好使用处理程序。
答案 1 :(得分:2)
在检查条件后,你应该在timertask运行中停止计时器。
TimerTask timerTask=new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
if(counter==2){
timer.cancel();
}
}
};
计时器应该是这样的。
Timer timer=new Timer();
timer.scheduleAtFixedRate(timerTask, when, period);
希望这会对你有所帮助。
答案 2 :(得分:0)
if(counter == 2)
{
timer.cancel();
}
答案 3 :(得分:0)
不要使用TimerTask,而是使用Handler代替此类任务