妙桃假体的价格,田斯斯胸围,葡京娱乐搜博网开始
本文主要内容就是用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, 0, mheight / 2, mwidth, mheight / 2, 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, 0, 0, p1); //画出倒影图 canvas.drawbitmap(flection, 0, mheight+gap, p1); paint shaderpaint = new paint(); lineargradient shader = new lineargradient(0, mheight, 0, flection.getheight(), 0x70ffffff, 0x00ffffff, tilemode.mirror); shaderpaint.setshader(shader); shaderpaint.setxfermode(new porterduffxfermode(android.graphics.porterduff.mode.dst_in)); //画出渐变颜色 canvas.drawrect(0, mheight+gap, mwidth, background.getheight(), shaderpaint); return background; } }
实现的效果如下图:
以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论