1

底から上げるべきスタックを描きたいです。たとえば、スタックの高さは 400 で、高さ 10 から 400 に達するまで成長する必要があります。

ペイントとキャンバスを使用してこれを行いたいです。

イメージ ビュー/ビットマップとスケール アニメーションでそれを行いたくありません。

キャンバスとペイントでこれを行うことは可能ですか? もしそうなら、それを達成する方法は?

前もって感謝します。

4

2 に答える 2

2

次のようなものを試してみてください(自分でテストしていません):

Paint paint = new Paint();
paint.setColor(Color.BLACK);
for(int i = 10; i < 400; i = i + 10)
{
    try 
    {
        // To slow the for loop down, can change 100 accordingly or remove altogther
        Thread.sleep(100);
    } 
    catch (InterruptedException e) 
    {
        e.printStackTrace();
    } 
    canvas.drawRect(0, i, 10, 0, paint); // this will make 10 x 10 square starting from bottom
    invalidate();
}
于 2012-11-20T16:17:40.550 に答える
1

for ループや無効化、スリープを試みても、canvas で何をしても、結局、一度にシェイプを描画します。私は次の方法で結果を見つけました。他の人に役立つかもしれないので、ここにコードを追加してください。

import android.os.Bundle;
import android.os.CountDownTimer;
import android.app.Activity;
import android.graphics.Color;
import android.util.Log;
import android.view.Menu;

public class AndroidDraw extends Activity {

private DrawView drawView;
private int height = 300;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_android_draw);



    CountDownTimer timer = new CountDownTimer(2000, 50) {

        @Override
        public void onTick(long millisUntilFinished) {

            height = height - 10;
            drawView = new DrawView(AndroidDraw.this, height);
            drawView.setBackgroundColor(Color.WHITE);
            setContentView(drawView);
        }

        @Override
        public void onFinish() {

        }
    };
    timer.start();
}

}




import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class DrawView extends View {
Paint paint = new Paint();
private int height;

public DrawView(Context context, int height) {
    super(context); 
    this.height = height;
}

@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.RED);
    canvas.drawRect(30, height, 60, 300, paint );

}
}
于 2012-11-30T09:44:53.447 に答える