Androidで動的背景を実装する方法

背景を動かす方法は数多くありますが、ここではその内の一つを紹介します。

  1. AndroidのViewクラスを継承したカスタムViewクラスを作成する
  2. このカスタムビューのクラスにonDrawメソッドをオーバーライドして、そのメソッドで動的背景描画のロジックを実装します。
  3. onDrawメソッドでは、Canvasオブジェクトを用いて背景を描画します。drawRect、drawCircleといったメソッドで様々な形状の背景を描画したり、drawBitmapメソッドで画像を背景として描画したりできます。
  4. ViewクラスでHandlerオブジェクトまたはタイマーを使い、Viewを再描画して動的なエフェクトを実現できます。
  5. カスタムビュークラスをActivityやFragmentで利用する。

次は、ダイナミック背景を作成する一例です。

public class DynamicBackgroundView extends View {
    private Paint paint;
    private RectF rectF;
    private float angle;

    public DynamicBackgroundView(Context context) {
        super(context);
        init();
    }

    public DynamicBackgroundView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public DynamicBackgroundView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        paint = new Paint();
        paint.setAntiAlias(true);
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.RED);

        rectF = new RectF();
        angle = 0;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        int width = getWidth();
        int height = getHeight();

        rectF.set(0, 0, width, height);

        canvas.save();
        canvas.rotate(angle, width / 2, height / 2);
        canvas.drawRoundRect(rectF, 20, 20, paint);
        canvas.restore();

        angle += 1;
        if (angle >= 360) {
            angle = 0;
        }

        invalidate(); // 触发重绘
    }
}

Activityでこのカスタムビューを利用する:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DynamicBackgroundView dynamicBackgroundView = findViewById(R.id.dynamic_background_view);
    }
}

カスタマイズしたViewクラスのレイアウトファイルにインポートします。

<com.example.myapplication.DynamicBackgroundView
    android:id="@+id/dynamic_background_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

上記のコードは、常に回転する長方形の背景を実装しており、必要に応じて変更することができます。

bannerAds