円を描くようにアニメーションしようとしています。私のカスタムビューでは、私は間隔でAndroidで円を描いて円を描く
private final Paint mPaint = new Paint() {
{
setDither(true);
setStyle(Paint.Style.STROKE);
setStrokeCap(Paint.Cap.ROUND);
setStrokeJoin(Paint.Join.ROUND);
setColor(Color.BLUE);
setStrokeWidth(30.0f);
setAntiAlias(true);
}
};
...
protected void onDraw(Canvas canvas) {
super.onDraw();
if (mOval == null) {
mOval = new RectF(getLeft(), getTop(), getRight(), getBottom());
}
if (mPath == null) {
mPath = new Path();
mPath.moveTo(0, getHeight()/2);
}
float sweepAngle = Math.min((float) mElapsedTime/1000 * 60 * 1, 1) * 360;
if (sweepAngle == 0) {
mPath.reset();
} else if (mCurrentAngle != sweepAngle) {
mPath.arcTo(mOval, mCurrentAngle, sweepAngle);
}
mCurrentAngle = sweepAngle;
canvas.drawPath(mPath, mPaint);
}
を持って、私はmElapsedTime
を更新しinvalidate()
を呼んでいます。ただし、画面には何も描画されません。私はいくつかのバリエーションを試しましたが、無駄です。私が間違っていることはありますか?これを行う簡単な方法はありますか?円のパーセンテージを考えると、円の多くは画面上に描画されたものにすることができます。
あなたはすべてのコードを持っていますか?同じ問題のあるIm – Machete
@jmachete私はいくつかのコードで更新しました。 – karl
これをどのようにキャンバスの中心に描くことができますか? – user2095470