Android动画绘制矩形计时器
我正在尝试绘制描边矩形的动画:
此问题的任何kickstart将有所帮助。 使用视图,画布任何东西。
谢谢
好的,这里有一些让你开始的东西,它不是完整的解决方案,但是从这里你可以完成你的任务。
我正在做的是根据进度动态更新我的面具。 我只画了一条线,但在你的情况下,你需要绘制四条线,根据进度制作一个蒙版矩形。 这是代码让我知道如果有帮助:
public class DrawView extends View implements Runnable {
Bitmap mProgressBitmap;
Bitmap mMaskProgressBitmap;
Bitmap mResultBitmap;
Canvas mTempCanvas;
Canvas mMaskCanvas;
Paint mPaint;
Paint mWhitePaint;
Handler mHandler = new Handler();
float mProgress = 0;
static final long FRAME_TIME = 50;
public DrawView(Context context, AttributeSet attrs) {
    super(context, attrs);
    InputStream resource = getResources().openRawResource(R.drawable.timer);
    mProgressBitmap = BitmapFactory.decodeStream(resource);
    mMaskProgressBitmap = Bitmap.createBitmap(mProgressBitmap.getWidth(), mProgressBitmap.getHeight(), Bitmap.Config.ARGB_8888);
    mMaskCanvas = new Canvas(mMaskProgressBitmap);
    mMaskCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
    mResultBitmap = Bitmap.createBitmap(mProgressBitmap.getWidth(), mProgressBitmap.getHeight(), Bitmap.Config.ARGB_8888);
    mTempCanvas = new Canvas(mResultBitmap);
    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
    mPaint.setDither(true);
    mWhitePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mWhitePaint.setColor(Color.WHITE);
    mWhitePaint.setStrokeWidth(50);
    mHandler.postDelayed(this, FRAME_TIME);
}
@Override
public void onDraw(Canvas canvas) {
    mTempCanvas.drawBitmap(mMaskProgressBitmap, 0, 0, null);
    mTempCanvas.drawBitmap(mProgressBitmap, 0, 0, mPaint);
    canvas.drawBitmap(mResultBitmap, 0, 0, null);
}
@Override
public void run() {
    mProgress += 0.01f;
    mMaskCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
    mMaskCanvas.drawLine(0, 0, (float)mProgressBitmap.getWidth() * mProgress, 0, mWhitePaint);
    this.invalidate();
    mHandler.postDelayed(this, FRAME_TIME);
}
}
  我认为你可以通过AnimationDrawable获得非常基本的东西,并创建一个逐帧动画。  显然,你使用更平滑的框架越多。 
<!-- Animation frames are wheel0.png -- wheel5.png files inside the
 res/drawable/ folder -->
 <animation-list android:id="@+id/selected" android:oneshot="false">
    <item android:drawable="@drawable/wheel0" android:duration="50" />
    <item android:drawable="@drawable/wheel1" android:duration="50" />
    ...
 </animation-list>
  其他选项将使用ClipDrawable来掩盖您的矩形并为遮罩设置动画。  有一个教程来Customize Your Progress Bar ,它使用相同的逻辑为您的目的。  但愿如此。 
  看看this sample 。  它是闪光灯,但它使用相同的剪裁技术来实现轻抚效果。 
  如果我没有弄错,Android Canvas有几个clip方法来屏蔽你的图形: clipPath , clipRect和clipRegion 。  但我不确定它是否可以动画。  去看一下。 
