把本图像添加倒影
public static Bitmap createReflectedImage(Bitmap originalImage)
{
int width = originalImage.getWidth();
int height = originalImage.getHeight();
Matrix matrix = new Matrix();
// 实现图片翻转90度
matrix.preScale(1, -1);
// 创建倒影图片(是原始图片的一半大小)
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height / 2, width, height / 2, matrix, false);
// 创建总图片(原图片 + 倒影图片)
Bitmap finalReflection = Bitmap.createBitmap(width, (height + height / 2), Config.ARGB_8888);
// 创建画布
Canvas canvas = new Canvas(finalReflection);
canvas.drawBitmap(originalImage, 0, 0, null);
//把倒影图片画到画布上
canvas.drawBitmap(reflectionImage, 0, height + 1, null);
Paint shaderPaint = new Paint();
//创建线性渐变LinearGradient对象
LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0, finalReflection.getHeight() + 1, 0x70ffffff,
0x00ffffff, TileMode.MIRROR);
shaderPaint.setShader(shader);
shaderPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
//画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。
canvas.drawRect(0, height + 1, width, finalReflection.getHeight(), shaderPaint);
return finalReflection;
}
倒影输出成另一图像
public static Bitmap createReflectedImage(Bitmap originalImage) // 图片处理
{int width = originalImage.getWidth();
int height = originalImage.getHeight();
Matrix matrix = new Matrix();
// 实现图片翻转90度
matrix.preScale(1, -1);
// 创建倒影图片(是原始图片的一半大小)
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height / 2, width, height / 2, matrix, false);
// 创建总图片(原图片 + 倒影图片)
Bitmap finalReflection = Bitmap.createBitmap(width, (0 + height / 2), Config.ARGB_8888);
// 创建画布
Canvas canvas = new Canvas(finalReflection);
canvas.drawBitmap(reflectionImage, 0, 0, null);
//把倒影图片画到画布上
//canvas.drawBitmap(reflectionImage, 0, height + 1, null);
Paint shaderPaint = new Paint();
//创建线性渐变LinearGradient对象
LinearGradient shader = new LinearGradient(0, 0, 0, finalReflection.getHeight() + 0, 0x70ffffff,
0x00ffffff, TileMode.MIRROR);
shaderPaint.setShader(shader);
shaderPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
//画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。
canvas.drawRect(0, 0 + 0, width, finalReflection.getHeight(), shaderPaint);
return finalReflection;
}
用法:
Bitmap bmp_text = null;
bmp_text = BitmapFactory.decodeResource(getResources(), id_drawable_Apps_button_0);
bmp_text = createReflectedImage(bmp_text);
BitmapDrawable bd_text = new BitmapDrawable(getResources(), bmp_text);
mApps_text.setBackgroundDrawable(bd_text);