效果如下:

主要代码如下:

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);

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实现图片的倒影效果相关推荐

  1. android 字体倒影,Android开发中怎么实现一个文字倒影效果

    Android开发中怎么实现一个文字倒影效果 发布时间:2020-11-25 17:18:19 来源:亿速云 阅读:140 作者:Leah 这期内容当中小编将会给大家带来有关Android开发中怎么实 ...

  2. android 字体倒影,Android笔记:图片倒影、ReflectionImage

    ReflectionImage类代码:import android.content.Context; import android.graphics.Bitmap; import android.gr ...

  3. android 字体倒影,android实现TextView文字倒影效果

    今天记录一下TextView的倒影效果,显示一串文字,然后在文字的下方显示出它的倒影,先上效果图: 最重要的就是View中getDrawingCache()方法,该方法可以获取cache中的图像,然后 ...

  4. android 文本倒影,android案例---图片处理倒影效果

    今天记录下看到的一个图片处理倒影效果,方便以后用到 先看看效果 device-2017-08-12-160216.png as截出来的图貌似都挺大的 ok,那我们现在来分析代码,完整代码/** * * ...

  5. android字体ratingbar,Android 自定义View之自定义评分选择器RatingBar

    DtRatingBar 一个使用在android上的RatingBar.GitHub地址:DtRatingBar 使用依赖: implementation 'com.yetland.dtratingb ...

  6. android 字体百分比,android 解决百分比布局适配时Textview的字体Textsize比例缩放问题...

    在使用百分比布局的过程中,大家可能会遇到一个问题,Textview的控件大小是由百分比分数算出来的,但是字体大小Textsize却没法确定.于是我想到继承textview写一个自定义的PercentT ...

  7. android字体好看,Android:更好的自定义字体方案

    摘要: 在一个应用中,我需要在所有的UI组件中使用客户提供的字体.这听起来似乎是个很稀松平常的任务,不是吗?是的,我当时也是这么想的.然后我震惊了,Android竟然没有提供一个简单优雅的方式来做这件 ...

  8. android 字体编程,Android编程之Calligraphy:Android 自定义字体库

    Calligraphy是android 自定义字体库 添加依赖 Download from Maven Central (.jar) OR Java dependencies { compile 'u ...

  9. android字体行距,android textview设置字体的行距和字间距

    字间距 textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型.查看源代码,默认textView 此属性是使用的是: android.internal. ...

最新文章

  1. Typora输出表情 Typora_Smile
  2. 10倍加速!爱奇艺超分辨模型加速实践
  3. 外接显示器设置_如何为一台电脑设置两个显示器
  4. 前端ajax传递json格式参数,后端springboot接收
  5. Java集合的框架和实现类
  6. win11搜索栏无法输入 Windows11搜索栏无法输入的解决方法
  7. Adobe flash cs4的一个序列号
  8. 数据归一化和常用的归一化方法
  9. 51单片机驱动TM1638芯片+Proteus仿真
  10. Qt: 信号与槽机制
  11. 58VIP账号发贴器
  12. 如何做网络投票的刷票外挂(一)
  13. 孙鑫视频VC++深入详解学习笔记
  14. win11电脑内存占用过高的解决办法
  15. 鸿蒙系统卸载App,强力卸载手机软件
  16. 电瓶车.换电瓶(20181122)
  17. audio应用-外接akm7755
  18. android 正态分布曲线图,逼迫学习1:R语言随机数、正态分布、密度曲线、QQ图
  19. 据说看懂这些故事的人 最后都成了亿万富翁
  20. 在linux服务器上如何下载ftp上面的文件?lftp详解

热门文章

  1. Druid java.sql.SQLException: connection holder is null
  2. 传奇高手的一天(笑话)
  3. 非管理系考PMP证书有用吗?
  4. 利用 IP 扩展访问列表实现应用服务的访问限制
  5. [1][python基础]条件判断[4]
  6. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java科研信息管理503pp
  7. [yishen] 小慕读书web端学习笔记
  8. ES pinyin 插件 拼音搜索 原理 match_phase
  9. RHCSA 核心考点列表
  10. IDEA中Git暂存代码暂存区的使用