前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记14 | 图片倒影+渐变效果

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

作者头像
项勇
发布2018-06-19 15:12:18
1.1K0
发布2018-06-19 15:12:18
举报
文章被收录于专栏:项勇项勇

前言

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

地址

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 项勇 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 地址
  • 目录
    • 一. 需要实现的效果
      • 二. 主要代码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档