博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
笔记14 | 图片倒影+渐变效果
阅读量:4520 次
发布时间:2019-06-08

本文共 1945 字,大约阅读时间需要 6 分钟。

 

前言

长假归来第一发,来学习个简单的图片倒影渐变效果

地址

目录

  • 需要实现的效果

  • 主要代码

  • 链接


一. 需要实现的效果


二. 主要代码

 
  1. public class MainActivity extends Activity {

     

  2.    private ImageView mRevertImageView;  

  3.    private Bitmap mSourceBitmap;  //原图  

  4.    private Bitmap mRevertBitmap;  //倒立图  

  5.    @Override  

  6.    protected void onCreate(Bundle savedInstanceState) {

     

  7.        super.onCreate(savedInstanceState);  

  8.        setContentView(R.layout.activity_main);  

  9.        mRevertImageView = (ImageView)findViewById(R.id.im_revert);  

  10.        mSourceBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.source);  

  11.        mRevertImageView.setBackground(new BitmapDrawable(getResources(), revertBitmap(mSourceBitmap)));  

  12.    }  

  13.    private Bitmap revertBitmap(Bitmap originalImage) {

     

  14.        final int reflectionGap = 4;

  15.        int width = originalImage.getWidth();

  16.        int height = originalImage.getHeight();

  17.        Matrix matrix = new Matrix();

  18.        matrix.preScale(1, -1); //实现图片的反转

  19.        Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height / 2, width, height / 2, matrix, false); //创建反转后的图片Bitmap对象,图片高是原图的一半。

  20.        Bitmap bitmapWithReflection = Bitmap.createBitmap(width,

  21.            (height + height / 2), Config.ARGB_8888); //创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。

  22.        Canvas canvas = new Canvas(bitmapWithReflection);

  23.        canvas.drawBitmap(originalImage, 0, 0, null); //创建画布对象,将原图画于画布,起点是原点位置。

  24.        Paint defaultPaint = new Paint();

  25.        canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);

  26.        canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);//将反转后的图片画到画布中。

  27.        Paint paint = new Paint();

  28.        LinearGradient shader = new LinearGradient(0,

  29.            originalImage.getHeight(), 0, bitmapWithReflection.getHeight()

  30.                    + reflectionGap, 0×70ffffff, 0×00ffffff,

  31.            TileMode.MIRROR); //创建线性渐变LinearGradient 对象。

  32.        paint.setShader(shader);

  33.        paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

  34.        canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()

  35.            + reflectionGap, paint); //画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。

  36.        return bitmapWithReflection;

  37.    }  

  38. }


三. 链接

>

>

>

>

>



转载于:https://www.cnblogs.com/xiangevan/p/10751700.html

你可能感兴趣的文章
衰减学习率真的有用吗?
查看>>
ORACLE 建库过程总结
查看>>
Ogre1.8.1 Basic Tutorial 6 - The Ogre Startup Sequence
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用...
查看>>
c# Winform 开发分屏显示应用程序
查看>>
canvas刮奖
查看>>
javascript 模拟滚动 隐藏滚动条
查看>>
手把手教你使用 Clion 开发 Linux C++ 项目
查看>>
阿里巴巴卖空阿里巴巴入股新浪微博抑制投资者卖空行为
查看>>
分析打开hdu 3335 (最小路径覆盖)
查看>>
添加源ubuntu_x64 安装 Adobe Reader
查看>>
NFS-heartbeat-drbd模拟NFS高可用
查看>>
SQL Server性能调优:资源管理之内存管理篇(上)
查看>>
javaScript 基础知识
查看>>
接近开关,光耦
查看>>
基于visual Studio2013解决C语言竞赛题之1033数字交换
查看>>
给datalist加自动编号(解决博客的第XX楼)
查看>>
BZOJ3282: Tree (LCT模板)
查看>>
ES6中变量的解构赋值
查看>>
编译器C-Free V352注册算法分析
查看>>