如何解决问题更新/刷新时 - 显示动画?

时间:2011-05-16 11:25:22

标签: android animation timer

简单的问题可能但找不到解决方案。

我有刷新/更新一些内容的按钮。按钮称为“刷新”。 在这个按钮的背景 - 我有图像。我希望在更新内容时为此图像设置旋转动画。但我有一些问题:第一 - 我的内容更新,只有我能看到动画:这是我的代码:

 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);
        } 
     }

如果有人可以帮助我,请告诉我如何修复我的代码或第二个代码。 关心彼得。

1 个答案:

答案 0 :(得分:1)

如聊天中所述:使用AsyncTask进行更新处理(在doInBackground()中)并在开始实际处理之前 - 调用publishProgress() - 它将调用AsyncTask方法onProgressUpdate(您必须覆盖它) )并开始你的动画:) - 后一步是必要的,因为onProgressUpdate可以做UI线程的东西 - doInBackground不能(因为它没有在UI线程上运行)。

干杯,

Ready4Android