package com.com.mr_wrong.CustomJobView;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.widget.ImageView;
/**
* Created by Mr_Wrong on 15/8/29.
*/
public class CoustomIcon extends ImageView {
private Paint mPaint;
private Rect mRect;
private Bitmap mBitmap;
private PorterDuffXfermode xfermode;
private int width, height;
public CoustomIcon(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
xfermode = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);
BitmapDrawable bd = (BitmapDrawable)this.getDrawable();
if(bd != null){
mBitmap = bd.getBitmap();
}
height = mBitmap.getHeight();
mRect = new Rect();
mRect.left = 0;
mRect.right = mBitmap.getWidth();
mRect.bottom = mBitmap.getHeight();
drawrect();
}
private void drawrect() {
ValueAnimator animator = ValueAnimator.ofInt(height, 0);
animator.setDuration(1500);
animator.setRepeatMode(ValueAnimator.REVERSE);
animator.setRepeatCount(-1);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mRect.top = (int) animation.getAnimatedValue();
invalidate();
}
});
animator.start();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(mBitmap, 0, 0, mPaint);
int sc = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG);
mPaint.setColor(Color.RED);
canvas.drawRect(mRect, mPaint);
mPaint.setXfermode(xfermode);
canvas.drawBitmap(mBitmap, 0, 0, mPaint);
mPaint.setXfermode(null);
canvas.restoreToCount(sc);
}
}