简单的问题可能但找不到解决方案。
我有刷新/更新一些内容的按钮。按钮称为“刷新”。 在这个按钮的背景 - 我有图像。我希望在更新内容时为此图像设置旋转动画。但我有一些问题:第一 - 我的内容更新,只有我能看到动画:这是我的代码:
Timer myTimer;
public void timerS()
{
myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
TimerMethod();
}
}, 0, 100);
}
private void TimerMethod()
{
this.runOnUiThread(Timer_Tick);
}
private Runnable Timer_Tick = new Runnable() {
public void run() {
// drawMatrix();
animation();
seconds++;
}
};
int degree =60;
int oneClick=1;
public int nowUpdated = 0;
public void animation()
{
int currentRotation = 0;
RotateAnimation anim = new RotateAnimation(currentRotation, (360*4),
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
currentRotation = (currentRotation + 45) % 360;
anim.setInterpolator(new LinearInterpolator());
anim.setDuration(10000);
anim.setFillEnabled(true);
anim.setFillAfter(true);
refresh.startAnimation(anim);
}
我试图使用计时器。首先我的例子是drawMatrix - 但是我无法修复图像大小的问题。当我的图像旋转时 - 动画非常大。图像大小32x32 ..但点击更新时 - 我认为图像的大小是64x64。而且无法解决这个问题 这里是绘制矩阵的代码:
public void drawMatrix()
{
if(nowUpdated==1)
{
Matrix mat = new Matrix();
degree=degree+45;
mat.postRotate(degree);
Bitmap source = BitmapFactory.decodeResource(getResources(),R.drawable.refresh);
Bitmap a = Bitmap.createBitmap(source, 0, 0, 32 , 32, mat, true);
Drawable d =new BitmapDrawable(a);
refresh.setBackgroundDrawable(d);
}
}
如果有人可以帮助我,请告诉我如何修复我的代码或第二个代码。 关心彼得。
答案 0 :(得分:1)
如聊天中所述:使用AsyncTask进行更新处理(在doInBackground()中)并在开始实际处理之前 - 调用publishProgress() - 它将调用AsyncTask方法onProgressUpdate(您必须覆盖它) )并开始你的动画:) - 后一步是必要的,因为onProgressUpdate可以做UI线程的东西 - doInBackground不能(因为它没有在UI线程上运行)。
干杯,
Ready4Android