1

私はこれらすべてを一緒にやろうとして、良い月を過ごしました.

  • ビットマップを画面に描画
  • 作成時にビットマップを一定のレートで下に移動
  • 底に到達したら Bimap を停止します
  • 移動中にビットマップをクリックできるようにします (移動アニメーションではありません)。

事前にこれをまとめてくれてありがとう。これが私の試みです:

package com.example.animating;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;


public class FirstView extends View {

    private int screenW;
    private int screenH;

    private float drawScaleW;
    private float drawScaleH;

    int moveRate = 10, dot1y, dot1x;

    private Context myContext;

    private Bitmap dot;
    private boolean dotSinking = true, gameOver = false;

    public FirstView(Context context) {
        super(context);
        myContext = context;
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        dot = BitmapFactory.decodeResource(myContext.getResources(), R.drawable.dot);
        screenW = w;
        screenH = h;
        drawScaleW = (float) screenW / 800;
        drawScaleH = (float) screenH / 600;
        dot1y = (int) (475*drawScaleH);
        dot1x = (int) (55*drawScaleW);
    }

    public void run() {
        if (!gameOver) {
            animateDot();
        }
    }

    @SuppressLint("DrawAllocation")
    @Override
    protected void onDraw(Canvas canvas) {
        Paint redPaint = new Paint();
        redPaint.setColor(Color.RED);
        canvas.drawBitmap(dot, dot1x, dot1y, null);
    }

    private void animateDot(){
        if (dotSinking) {
            dot1y -= moveRate;
        }
    }
}
4

2 に答える 2

1

onDraw() 内で invalidate() メソッドを使用して、ビットマップの新しい位置を再描画する必要があります。そして、私が一番下に達したときに停止させるには、ビットマップに、スクリーンとの距離が0のときに停止することを伝えるif文内でビットマップのsetboundsメソッドを使用します。onclicklistener を bitmap.to.make it.clickable に設定する必要があります。これがあなたに役立つことを願っています!

于 2013-05-14T19:27:21.017 に答える