笔记14 | 图片倒影+渐变效果

前言

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

地址

http://blog.csdn.net/xiangyong_1521/article/details/78195950

目录

  • 需要实现的效果
  • 主要代码
  • 链接

一. 需要实现的效果


二. 主要代码

public class MainActivity extends Activity {      private ImageView mRevertImageView;      private Bitmap mSourceBitmap;  //原图      private Bitmap mRevertBitmap;  //倒立图      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          mRevertImageView = (ImageView)findViewById(R.id.im_revert);          mSourceBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.source);          mRevertImageView.setBackground(new BitmapDrawable(getResources(), revertBitmap(mSourceBitmap)));      }      private Bitmap revertBitmap(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对象,图片高是原图的一半。        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);//将反转后的图片画到画布中。        Paint paint = new Paint();         LinearGradient shader = new LinearGradient(0,             originalImage.getHeight(), 0, bitmapWithReflection.getHeight()                     + reflectionGap, 0×70ffffff, 0×00ffffff,             TileMode.MIRROR); //创建线性渐变LinearGradient 对象。        paint.setShader(shader);        paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));        canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()             + reflectionGap, paint); //画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。        return bitmapWithReflection;     }  }

原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2017-10-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏听雨堂

Android新手之旅(8) ListView的使用

  希望使用ListView来展示信息,每行一个图标,右侧是文字,分为两行布局。经过尝试,这样可以实现: 1、Layout下新建item.xml <?xml...

2296
来自专栏吴小龙同學

GitHub之PhotoView使用

PhotoView使用在ViewPager中 GitHub地址:https://github.com/chrisbanes/PhotoView 1 2 3...

3416
来自专栏ShaoYL

iOS---设置控件的内容模式

34112
来自专栏Android干货

自定义控件详解(一):Paint类与Canvas类

1684
来自专栏移动开发

关于主线程中自动建立的Looper的思考:主线程中Looper中的轮询死循环为何没有阻塞主线程

Android中UI线程会自动给我们建立一个looper,但是looper中的loop方法是个死循环.为什么我们在UI线程中写的代码为何都能顺利执行?为什么没有...

1154
来自专栏封碎

Android画图之Bitmap(一) 博客分类: Android Android

    最近写电子书程序,设计到对图像的处理,主要是对 Bitmap 的处理,所以有一点小小的心得,拿出来跟大家分享一下。

753
来自专栏开发之途

Android 为图片添加水印

1344
来自专栏吴小龙同學

微言之自定义分享PopupWindow

自定义分享PopupWindow,有需要的直接拿走。 效果预览 ? 核心代码 SharePopupWindow代码 1 2 3 4 5 6 7 8 9 ...

2758
来自专栏向治洪

仿网易新闻页面效果

不扯闲话了,直接进入正题吧 frame_content.xml <?xml version="1.0" encoding="utf-8"?> <FrameLa...

2889
来自专栏向治洪

android 自定义下拉菜单

    本实例的自定义下拉菜单主要是继承PopupWindow类来实现的弹出窗体,各种布局效果可以根据自己定义设计。弹出的动画效果主要用到了translate...

1856

扫码关注云+社区