import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Shader;
import android.view.View;
public class InvertedImageView extends View {
private Paint mPaint;
private Bitmap mSrcBitmap,mRefBitmap;
private PorterDuffXfermode mXfermode;
private Context mContext;
public InvertedImageView(Context context) {
super(context);
mContext = context;
initRes();
}
private void initRes()
{
mSrcBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.gril);
Matrix matrix= new Matrix();
matrix.setScale(1F, -1F);
mRefBitmap = Bitmap.createBitmap(mSrcBitmap, 0, 0, mSrcBitmap.getWidth(), mSrcBitmap.getHeight(), matrix, true);
mPaint = new Paint();
///< 倒影的渐变遮盖
mPaint.setShader(new LinearGradient(0, mSrcBitmap.getHeight(), 0, mSrcBitmap.getHeight() +mSrcBitmap.getHeight(), 0XDD000000,
0X10000000, Shader.TileMode.CLAMP));
mXfermode = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(mSrcBitmap, 0, 0, null);
///< 倒影图片向下偏移图片的高度
canvas.drawBitmap(mRefBitmap, 0, mSrcBitmap.getHeight(), null);
///< 设置
mPaint.setXfermode(mXfermode);
///< 绘制渐变效果矩形
canvas.drawRect(0, mSrcBitmap.getHeight(), mSrcBitmap.getWidth(), mSrcBitmap.getHeight() * 2, mPaint);
mPaint.setXfermode(null);
}
}