本文主要内容就是用marix加上渐变色实现图片倒影的效果,步骤如下:
1. 获取需要倒影效果的图片,这里取原图片的一半
2. 添加颜色渐变到倒影图片上
具体的实现如下面代码所述,我们以一种自定义view的形式给出效果图,代码如下:
package com.flection.vIEw;import com.flection.main.R;import androID.annotation.Suppresslint;import androID.content.Context;import androID.graphics.Bitmap;import androID.graphics.Bitmap.Config;import androID.graphics.BitmapFactory;import androID.graphics.Canvas;import androID.graphics.color;import androID.graphics.linearGradIEnt;import androID.graphics.Matrix;import androID.graphics.Paint;import androID.graphics.PorterDuffXfermode;import androID.graphics.Shader.TileMode;import androID.graphics.drawable.BitmapDrawable;import androID.util.AttributeSet;import androID.vIEw.VIEw;public class FlectionVIEw extends VIEw { Context mContext=null; public FlectionVIEw(Context context) { super(context); } public FlectionVIEw(Context context,AttributeSet attrs) { super(context,attrs); this.mContext=context; } @Suppresslint("DrawAllocation") @OverrIDe protected voID onDraw(Canvas canvas) { //设置背景色 this.setBackgroundcolor(color.parsecolor("#8B8378")); Bitmap oldBitmap = BitmapFactory.decodeResource(mContext.getResources(),R.drawable.dropBox); Bitmap newBitmap = createFlectionBitmap(oldBitmap); canvas.drawBitmap(newBitmap,newBitmap.getWIDth(),newBitmap.getHeight(),new Paint()); this.invalIDate(); } //获取原图+倒影图的bitmap private Bitmap createFlectionBitmap(Bitmap oldBitmap) { int mWIDth = oldBitmap.getWIDth(); int mHeight = oldBitmap.getHeight(); //原图和倒影图之间的缝隙 int gap = 2; Matrix matrix = new Matrix(); matrix.preScale(1,-1); Bitmap flection = Bitmap.createBitmap(oldBitmap,mHeight / 2,mWIDth,matrix,false); Bitmap background = Bitmap.createBitmap(mWIDth,mHeight+gap+mHeight/2,Config.ARGB_8888); Canvas canvas = new Canvas(background); Paint p1 = new Paint(); //画出原图 canvas.drawBitmap(oldBitmap,p1); //画出倒影图 canvas.drawBitmap(flection,mHeight+gap,p1); Paint shaderPaint = new Paint(); linearGradIEnt shader = new linearGradIEnt(0,mHeight,flection.getHeight(),0x70ffffff,0x00ffffff,TileMode.MIRROR); shaderPaint.setShader(shader); shaderPaint.setXfermode(new PorterDuffXfermode(androID.graphics.PorterDuff.Mode.DST_IN)); //画出渐变颜色 canvas.drawRect(0,background.getHeight(),shaderPaint); return background; }}
实现的效果如下图:
以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的如何利用matrix实现图片倒影效果全部内容,希望文章能够帮你解决如何利用matrix实现图片倒影效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)