public static Bitmap createReflectedImage(Context context, Bitmap originalImage) {
//The gap we want between the reflection and the original image
final int reflectionGap = 4;
int width = originalImage.getWidth();
int height = originalImage.getHeight();
//This will not scale but will flip on the Y axis
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
//Create a Bitmap with the flip matrix applied to it.
//We only want the bottom half of the image
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height/2, width, height/2, matrix, false);
//Create a new bitmap with same width but taller to fit reflection
Bitmap bitmapWithReflection = Bitmap.createBitmap(width
, (height + height/2), Config.ARGB_8888);
//Create a new Canvas with the bitmap that's big enough for
//the image plus gap plus reflection
Canvas canvas = new Canvas(bitmapWithReflection);
//Draw in the original image
canvas.drawBitmap(originalImage, 0, 0, null);
//Draw in the gap
Paint defaultPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);
//Draw in the reflection
canvas.drawBitmap(reflectionImage,0, height + reflectionGap, null);
//Create a shader that is a linear gradient that covers the reflection
Paint paint = new Paint();
LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0,
bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff,
TileMode.CLAMP);
//Set the paint to use this shader (linear gradient)
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;
}
分享到:
相关推荐
Drawable转Bitmap、圆角图片、倒影效果等各种特效。
本文将详细介绍如何在Android中实现图片生成倒影的功能,并结合一个名为`GalleryDemo`的示例来展示这一过程。 首先,我们需要理解Android中的图片处理基础。Android支持多种图像格式,如JPEG、PNG等,它们可以通过`...
- 生成带倒影的Bitmap:`createReflectionImageWithOrigin`方法通过复制和翻转Bitmap并添加渐变效果实现。 以上就是Android中Bitmap的一些常见用法,包括创建、转换、保存、缩放以及与ImageView的配合使用。在处理...
3. **翻转原始图片生成倒影**: 使用Canvas的`translate`和`scale`方法,将原始图片的下半部分翻转并绘制到新创建的Bitmap上。 ```java float height = originalBitmap.getHeight(); canvas.translate(0, height); ...
在这个自定义Adapter中,我们需要覆盖`getView()`方法,为每个项目生成包含倒影和偏转效果的视图。 在`getView()`方法中,我们首先根据数据项加载原始图像,然后创建倒影并应用偏转效果。这里可能需要使用到一些...
10. **性能优化**:对于性能敏感的应用,可以考虑使用视图的`onDraw()`方法来动态生成倒影,而不是一次性生成并保存,这样可以减少内存占用。 以上就是实现Android应用中图片倒影效果的主要知识点,通过理解和运用...
最后,将原始图片和倒影Bitmap组合到一起,可以创建一个新的Bitmap或者直接在View上绘制。 5. **Bitmap.Config配置**: - `ARGB_8888`:每个像素占用4字节,支持透明度,最常用的配置。 - `RGB_565`:每个像素...
同时,为了在切换图片时保持倒影效果,可能需要在每次切换时重新计算并生成倒影。 6. **性能优化**:由于倒影生成涉及到较多的位图操作,可能会消耗大量内存。因此,可以考虑使用LruCache或其他缓存机制来存储已经...
"倒影效果"是指在图像下方生成一个镜像,使得图像看起来像是反射在平面上,增加了视觉吸引力。这种效果在UI设计中常用于创造动态和立体感,尤其是在展示产品或图片时,能提升用户体验。 实现倒影效果通常有两种方法...
在Android中,我们可以通过对原始图像进行处理,生成其倒影并将其与原图结合来实现这一效果。 Android Studio是Google提供的官方集成开发环境(IDE),专门用于Android应用开发。它提供了一整套工具,包括代码编辑...
"Bitmap图片处理工具类" 提供了多种对位图(Bitmap)进行操作的功能,如颜色转换、图像分割、缩放、旋转、调整透明度、生成圆角图片以及文字与倒影效果的绘制。接下来,我们将深入探讨这些知识点。 首先,`...
接着,我们将翻转后的倒影位图与原图合并到一个新的Bitmap中。 以上就是Android中创建圆角图片和图片倒影的基本原理和实现方法。在实际项目中,你可能需要根据需求进行优化,例如添加阴影效果,或者处理图片边界...
在Android中,可以创建一个Bitmap对象,将原图复制并翻转,然后设置合适的透明度,最后将倒影Bitmap绘制到视图上。 在实际代码中,我们可能会看到以下几个关键部分: 1. 原始图像的加载:通常使用`BitmapFactory....
然后,我们将渐变Bitmap与倒影Bitmap合并,确保渐变部分位于倒影的顶部。 3. **合成图像**: 将原始图片、倒影图片以及渐变层组合成一个整体。这可以通过创建一个新的Bitmap对象,然后使用Canvas的`drawBitmap`...
这种情况下,我们还需要确保每次选择新图片时,都能动态地生成并显示对应的倒影效果。这通常通过监听ImageView的选择事件,并在事件回调中更新Bitmap和倒影。 以上就是如何在Android应用中实现图片倒影效果的详细...
Coverflow中需要把一页一页的view转换为Bitmap、以便实现复杂的图形效果(阴影、倒影效果等);再比如一些动态的实时View为便于观察和记录数据、需要临时生成静态的Bitmap。 2.实现方法 1)下面是笔者经常用的一个...
首先,需要加载原图到Bitmap对象,然后对Bitmap进行处理,生成倒影。 3. **Bitmap操作** - `createBitmap()`: 创建一个新的Bitmap对象,通常需要指定宽度、高度和配置。 - `copy()`: 复制原Bitmap,用于创建倒影...
5. 将新生成的Bitmap设置给ImageView或其他显示组件。 接下来,我们来看看如何在Android Studio中实现阴影效果。在Android API 21(Lollipop)及以上版本,系统提供了`ViewCompat`类的`setElevation()`方法,可以...
`createReflection()`方法用于生成倒影,包括复制原始Bitmap、翻转并添加渐变效果。在`onDraw()`中,我们利用`Math.random()`生成一个随机偏移值,使倒影在每次重绘时位置略有不同,从而产生抖动效果。 为了在实际...