// 获得带倒影的图片方法
public Bitmap createReflectionImageWithOrigin(Bitmap bitmap) {
// 图片与倒影之间的距离间隔
final int reflectionGap = 2;
// 原图的宽度
int width = bitmap.getWidth();
// 原图的高度
int height = bitmap.getHeight();
// 图片旋转,缩放等控制对象
Matrix matrix = new Matrix();
// 缩放(这里pre,set,post三种效果是不一样的,注意区别)
matrix.preScale(1, -1);
/**
* set是直接设置Matrix的值,每次set一次,整个Matrix的数组都会变掉。
* post是后乘,当前的矩阵乘以参数给出的矩阵。可以连续多次使用post, 来完成所需的整个变换。例如,要将一个图片旋
* 转30度,然后平移到(100,100)的地方,那么可以这样做: Matrix m = new Matrix();
* m.postRotate(30); m.postTranslate(100, 100); 这样就达到了想要的效果。
* pre是前乘,参数给出的矩阵乘以当前的矩阵。所以操作是在当前矩阵的最前面发生的。 例如上面的例子,如果用pre的话,就要这样:
* Matrix m = new Matrix(); m.setTranslate(100, 100); m.preRotate(30);
* 旋转、缩放和倾斜都可以围绕一个中心点来进行,如果不指定,默认情况下, 是围绕(0,0)点来进行。
*
* 关于缩放: scale的参数是比例。例如,我们缩放为100%,则有一点要注意,如果直接用
* 100/bmp.getWidth()的话,会得到0,因为是整型相除,所以必须其中有一个是 float型的,直接用100f就好 。
* 如:matrix.setScale(100f/bmp.getWidth(), 100f/bmp.getHeight());
*/
// 创建一个初始的倒影位图
Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2,
width, height / 2, matrix, false);
// 新建一个宽度为原图宽度,高度为原图高度的3/2的位图,用于绘制新的位图,即整体的效果图位图对象
Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
(height + height / 2), Config.ARGB_8888);
// 由该位图对象创建初始画布(规定了画布的宽高)
Canvas canvas = new Canvas(bitmapWithReflection);
// 在该画布上绘制原图
canvas.drawBitmap(bitmap, 0, 0, null);
// 创建一个画笔
Paint deafalutPaint = new Paint();
// 绘制一个矩形区域,该矩形区域便是原图和倒影图之间的间隔图
canvas.drawRect(0, height, width, height + reflectionGap, deafalutPaint);
// 绘制该倒影图于间隔图的下方
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
// 创建一个画笔
Paint paint = new Paint();
// 创建一个线性渐变对象
LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,
bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,
0x00ffffff, TileMode.CLAMP);
// 把渐变效果应用在画笔上
paint.setShader(shader);
// Set the Transfer mode to be porter duff and destination in
// 未知
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
// Draw a rectangle using the paint with our linear gradient
// 绘制出该渐变效果,也就是最终的倒影效果图
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
+ reflectionGap, paint);
// 返回
return bitmapWithReflection;
}
分享到:
相关推荐
在设计用户界面时,我们可能需要对Bitmap进行各种操作,如制作圆角和倒影效果,以提升视觉体验。以下将详细介绍如何实现这两个功能。 首先,我们来看如何创建一个具有圆角的Bitmap。这个过程主要通过Canvas和Paint...
在Android开发中,创建圆角图片和图片倒影是常见的需求,这主要涉及到图像处理和视图绘制的技术。本文将详细讲解如何在Android平台上实现这些功能。 首先,让我们来看看如何生成圆角图片。在Android中,我们可以...
在Android开发中,实现圆角和倒影效果是常见的需求,尤其在设计用户界面时,这类视觉元素可以提升应用的美观度和用户体验。本篇内容将深入探讨如何在Android中创建圆角和倒影效果。 首先,让我们了解如何实现圆角...
- 获取圆角Bitmap:`getRoundedCornerBitmap`方法利用Canvas和Paint创建圆角效果。 - 生成带倒影的Bitmap:`createReflectionImageWithOrigin`方法通过复制和翻转Bitmap并添加渐变效果实现。 以上就是Android中...
总之,在Android开发中,创建图片的倒影和圆角效果是提高应用界面美观度的重要手段。理解并掌握这些技术,能够帮助开发者创造出更具吸引力的用户界面。同时,合理利用第三方库可以简化开发过程,提高开发效率。
在Android应用开发中,对图像进行圆角处理和制作倒影效果是常见的需求,这能够提升界面的美观度和用户体验。本Demo就是针对这些需求提供的一种解决方案,它适用于Android 4.4.2(KitKat)及更高版本的系统。 首先,...
Drawable转Bitmap、圆角图片、倒影效果等各种特效。
为了更好地实践这些知识,你可以参考压缩包中的"实现圆角倒影"文件,它可能包含了一些示例代码或项目,供你学习和参考。通过动手实践,你会更深入地理解Android图片处理的各种技巧,并能自如地运用到自己的项目中。
"Bitmap图片处理工具类" 提供了多种对位图(Bitmap)进行操作的功能,如颜色转换、图像分割、缩放、旋转、调整透明度、生成圆角图片以及文字与倒影效果的绘制。接下来,我们将深入探讨这些知识点。 首先,`...
本文将深入探讨Android中图片转换、缩放、圆角以及倒影等特效的实现方法。 首先,我们来看一下如何将`Drawable`转换为`Bitmap`。在Android中,`Drawable`是一个抽象类,它代表了屏幕上的可视元素,而`Bitmap`则是一...
"Android实现图表绘制和展示","断点续传下载","常用Intent.Action","图片缩放圆角倒影Bitmap/Drawable转换", "SlidingDrawer抽屉效果","Android顶部与底部菜单","GroupActivity测试","Android平台水波效果源码",...
本文将深入探讨几种常见的Android图形特效,包括图片的圆角、图片的缩放、图片的倒影以及图片的旋转,这些都是Android开发者需要掌握的基本技能。 首先,我们来看如何实现图片的圆角效果。在Android中,可以使用...
在Android开发中,图像处理是一项常见的任务,涵盖了各种操作,如类型转换、比例缩放、创建倒影和制作圆角图像。以下是对这些知识点的详细解释: 1. **比例缩放图片**: 在Android中,可以使用`Bitmap`类提供的...
这些方法分别用于Drawable到Bitmap的转换、Bitmap的缩放、创建圆角Bitmap以及创建倒影Bitmap。 在实际开发中,我们可以通过类似的方式实现其他视觉效果,比如模糊、裁剪、滤镜等。理解并掌握这些基本的图像处理方法...
Bitmap常用工具类,Bitmap数据类型转换、圆角、缩放、倒影。 ConvertUtil.java 转换工具类,进行对象的类型转换。 DateUtil.java 日期工具类,...