Я хочу сделать анимированный фон, как в приложении prey:

GIF :

Я попробовал это с помощью самодельного класса Canvas и таймера Android:

Класс холста :

  • простой класс расширяет представление
  • с android.graphics.Path (mPath)

Функции:

public void drawCircle(float x, float y, float radius){
   mPath.addCircle(x, y, radius, Path.Direction.CW);
   invalidate();
}


@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   canvas.drawPath(mPath, mPaint);
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
    mCanvas = new Canvas(mBitmap);
}

Класс активности:

final Handler handler = new Handler();

TimerTask timertask = new TimerTask() {
   @Override
      public void run() {
         handler.post(new Runnable() {
            public void run() {
                        runOnUiThread(new Runnable() {
                            public void run() {
                                if(size > displayHeight*2 && size > displayWidth*2){
                                    canvasView.clearCanvas();
                                    size = 0;
                                    timer.cancel();
                                }
                                canvasView.clearCanvas();
                                canvasView.drawCircle(0, 0, size, Color.BLACK);
                                size+=10;
                            }
                        });
                    }
                });
            }
        };
timer = new Timer();
timer.schedule(timertask, 0, 10);

И это сработало, но очень нерегулярно и с пропаданием кадров
Пожалуйста, помогите мне найти лучшее решение!

0
Freddy C. 16 Фев 2018 в 21:44

1 ответ

Лучший ответ

@pskink дал мне совет использовать ValueAnimator / ObjectAnimator

Тем самым я нашел решение:

Проблема с производительностью AnimationSet

А также

https://developer.android.com/training/basics/fragments/creating.html https://developer.android.com/samples/GridViewPager/res/drawable/shape.html

0
Freddy C. 17 Фев 2018 в 00:13