实现图片倒影效果

package com.example.reflectionimageview;


import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.LinearGradient;

import android.graphics.Matrix;

import android.graphics.Paint;

import android.graphics.Bitmap.Config;

import android.graphics.PorterDuff.Mode;

import android.graphics.PorterDuffXfermode;

import android.graphics.Shader.TileMode;


/***

 * 图片倒影效果

 * 

 * @author ccb

 *

 */

public class CreateReflectionBitmap {


private final static int distance = 4;


public static Bitmap createReflectionBitmap(Bitmap normalBitmap) {


// 正常图片的宽高

int height = normalBitmap.getHeight();

int width = normalBitmap.getWidth();


// 翻转的bitmap对象

Bitmap reflectionBitmap = null;


// 获取矩阵操作对象

Matrix matrix = new Matrix();


// 设置矩阵操作,旋转180度

matrix.setRotate(180f);


// 为翻转位图赋值

reflectionBitmap = Bitmap.createBitmap(normalBitmap, 0, height / 2,

width, height / 2, matrix, false);


// 创建画板,传一个位图对象,用来设置画布大小

Bitmap canvasBmp = Bitmap.createBitmap(width, height + height / 2,

Config.ARGB_8888);

Canvas canvas = new Canvas(canvasBmp);


// 画笔,绘制两个位图之间的间隙

Paint defaultPaint = new Paint();

defaultPaint.setColor(android.R.color.white);

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


// 绘制正常的位图

canvas.drawBitmap(normalBitmap, 0, 0, null);


// 绘制翻转位图

canvas.drawBitmap(reflectionBitmap, 0, height + distance, null);


// 渐变效果,tile:渐变的模式


LinearGradient gradient = new LinearGradient(0, height + distance, 0,

canvasBmp.getHeight(), 0x70ffffff, 0x00ffffff, TileMode.MIRROR);


// 绘制渐变的画笔104223_BgUh_2422827.png

Paint gradientPaint = new Paint();

gradientPaint.setShader(gradient);

gradientPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));


// 绘制渐变

canvas.drawRect(0, height, width, canvasBmp.getHeight() + distance,

gradientPaint);

return canvasBmp;

}

}



转载于:https://my.oschina.net/cheerleader/blog/484569

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值