Android开发:轻松实现图片倒影效果
2014-01-24 12:55
951 查看
效果如下:
<ignore_js_op>
device_thumb.png (68.26 KB, 下载次数: 41)
下载附件 保存到相册
2011-12-11 09:46 上传
主要代码如下:
public static Bitmap createReflectedImage(Bitmap originalImage) {
final int reflectionGap = 4;
int width = originalImage.getWidth();
int height = originalImage.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
height / 2, width, height / 2, matrix, false);
Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
(height + height / 2), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(originalImage, 0, 0, null);
Paint defaultPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap,
defaultPaint);
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
Paint paint = new Paint();
LinearGradient shader = new LinearGradient(0,
originalImage.getHeight(), 0, bitmapWithReflection.getHeight()
+ reflectionGap, 0×70ffffff, 0×00ffffff,
TileMode.MIRROR);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
+ reflectionGap, paint);
return bitmapWithReflection;
}
复制代码
解释一下:
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
复制代码
实现图片的反转,见Android利用Matrix简单处理图片。
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
height / 2, width, height / 2, matrix,
false);
复制代码
创建反转后的图片Bitmap对象,图片高是原图的一半。
Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
(height + height / 2), Config.ARGB_8888);
复制代码
创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。
Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(originalImage, 0, 0, null);
复制代码
创建画布对象,将原图画于画布,起点是原点位置。
Paint defaultPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap,
defaultPaint);
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap,
null);
复制代码
将反转后的图片画到画布中。
LinearGradient shader = new LinearGradient(0,
originalImage.getHeight(), 0, bitmapWithReflection.getHeight()
+ reflectionGap, 0×70ffffff, 0×00ffffff,
复制代码
创建线性渐变LinearGradient 对象。
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
+ reflectionGap, paint);
复制代码
画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。
<ignore_js_op>
device_thumb.png (68.26 KB, 下载次数: 41)
下载附件 保存到相册
2011-12-11 09:46 上传
主要代码如下:
public static Bitmap createReflectedImage(Bitmap originalImage) {
final int reflectionGap = 4;
int width = originalImage.getWidth();
int height = originalImage.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
height / 2, width, height / 2, matrix, false);
Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
(height + height / 2), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(originalImage, 0, 0, null);
Paint defaultPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap,
defaultPaint);
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
Paint paint = new Paint();
LinearGradient shader = new LinearGradient(0,
originalImage.getHeight(), 0, bitmapWithReflection.getHeight()
+ reflectionGap, 0×70ffffff, 0×00ffffff,
TileMode.MIRROR);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
+ reflectionGap, paint);
return bitmapWithReflection;
}
复制代码
解释一下:
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
复制代码
实现图片的反转,见Android利用Matrix简单处理图片。
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
height / 2, width, height / 2, matrix,
false);
复制代码
创建反转后的图片Bitmap对象,图片高是原图的一半。
Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
(height + height / 2), Config.ARGB_8888);
复制代码
创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。
Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(originalImage, 0, 0, null);
复制代码
创建画布对象,将原图画于画布,起点是原点位置。
Paint defaultPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap,
defaultPaint);
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap,
null);
复制代码
将反转后的图片画到画布中。
LinearGradient shader = new LinearGradient(0,
originalImage.getHeight(), 0, bitmapWithReflection.getHeight()
+ reflectionGap, 0×70ffffff, 0×00ffffff,
复制代码
创建线性渐变LinearGradient 对象。
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
+ reflectionGap, paint);
复制代码
画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。
相关文章推荐
- Android 轻松实现图片倒影效果实例代码
- Android应用开发之图片热点效果实现
- Android实现图片的倒影效果分析
- Android实现图片倒影效果
- Android:实现图片的倒影效果
- Android应用开发之图片热点效果实现
- Android开发之实现最简单最酷炫的3D图片浏览效果(二)
- iOS开发之实现图片自动切换(类似android画廊效果)
- 一个Android实现图片的倒影效果的代码示例
- Android实现图片的倒影效果
- android开发之滑动效果实现图片浏览_ViewFilpper的使用
- Android开发-优雅的实现动态图片排版(类似微信图片展示效果)
- Android实现图片的倒影效果
- Android开发实现图片平移、缩放、倒影及旋转功能的方法
- Android平台上实现图片的缩放,圆角,倒影效果
- Android开发 自定义ViewGroup 实现微信九格图功能(图片不同排布不同) 和 一种图片点击变暗效果
- android 中实现图片倒影效果
- Android进阶学习-实现图片倒影的效果
- Android实现图片倒影效果
- Android开发——实现点击图片切换效果