Android 在屏幕上绘制后不完全圆的圆弧或圆
我想通过填充一个圆弧来显示文件上传的进度,直到它达到100%(一个圆圈)。这很容易做到。我只需要它旋转动画以及。当我这样做的时候,我得出结论,这个圆不是完全圆的,因为它有点反弹 下面,您将看到100%时的圆弧。 这是一个用Photoshop添加的绿色覆盖图,它显示了圆的缺陷。 为什么圆弧/圆不是圆的?这是反走样吗?除此之外,当我以帧速率在不同位置重新绘制圆弧时,它仍然显示反弹效果 我使用的“调试”代码:Android 在屏幕上绘制后不完全圆的圆弧或圆,android,draw,geometry,Android,Draw,Geometry,我想通过填充一个圆弧来显示文件上传的进度,直到它达到100%(一个圆圈)。这很容易做到。我只需要它旋转动画以及。当我这样做的时候,我得出结论,这个圆不是完全圆的,因为它有点反弹 下面,您将看到100%时的圆弧。 这是一个用Photoshop添加的绿色覆盖图,它显示了圆的缺陷。 为什么圆弧/圆不是圆的?这是反走样吗?除此之外,当我以帧速率在不同位置重新绘制圆弧时,它仍然显示反弹效果 我使用的“调试”代码: @Override protected void onDraw(Canvas canva
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Path path = new Path();
RectF drawBounds = new RectF(mBounds.left, mBounds.top, mBounds.right, mBounds.bottom);
if(mProgress != 100) {
path.arcTo(drawBounds, mStartDegree, mProgress * 3.6f, true);
canvas.drawPath(path, mLoaderPaint);
}
if (mStartDegree >= 359)
mStartDegree = 0;
else
mStartDegree ++;
invalidate();
}
似乎圆弧绘制程序有点中断,请运行我的代码并等待角度小于等于270度:
class V extends View implements Runnable {
private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private RectF mRect = new RectF();
private float mStartAngle;
private float mAngle;
private Xfermode mClearMmode = new PorterDuffXfermode(Mode.CLEAR);
public V(Context context) {
super(context);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
mRect.set(0, 0, w, w);
getHandler().post(this);
}
@Override
protected void onDetachedFromWindow() {
Log.d(TAG, "onDetachedFromWindow ");
super.onDetachedFromWindow();
getHandler().removeCallbacks(this);
}
@Override
protected void onDraw(Canvas canvas) {
mPaint.setColor(0xff00aa00);
mPaint.setXfermode(null);
canvas.drawOval(mRect, mPaint);
mPaint.setXfermode(mClearMmode);
canvas.drawArc(mRect, mStartAngle, mAngle, true, mPaint);
}
@Override
public void run() {
mStartAngle += 3.65;
mAngle += 0.2f;
invalidate();
getHandler().postDelayed(this, 20);
}
}
好消息是,您将很容易找到如何使用此代码获取所需内容任何代码如何绘制和旋转它?抱歉,忘记添加它了。我现在有……)姆邦兹是完美的正方形吗?杰普,是的。我现在正在使用掩蔽。那很好用。但奇怪的是,圆和弧并不是完全圆的。在发布了这个问题之后,我已经在研究掩蔽解决方案了。这很好用。但我仍然认为弧线和圆不是完美的圆是很奇怪的。