Android图片倒影

图片的倒影效果可以让想要显示的图片呈现出3D的效果,实现很简单,只需要将图片的下半部分翻转后加入线性渐变效果即可,可以实现如下图所示的效果:

这里首先创建一个用来图片处理的类:ReflectImage:

<span style="font-size:18px;">public class ReflectImage {
	private final static int REFLECT_GAP = 4;// 倒影区图像与原始图像之间的间距

	// 倒影图片创建类
	public static Bitmap createReflectImg(Bitmap oriBitmap) {
		int bitmapHeight = oriBitmap.getHeight() * 3 / 2 + REFLECT_GAP;
		int bitmapWidth = oriBitmap.getWidth() * 3 / 2;
		Bitmap reflectBitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight,
				Bitmap.Config.ARGB_8888);
		Canvas canvas = new Canvas(reflectBitmap);
		canvas.drawBitmap(oriBitmap, 0, 0, null);
		Matrix ReflectM = new Matrix();
		ReflectM.preScale(1, -1);
		Bitmap newBitmap = Bitmap.createBitmap(oriBitmap, 0,
				oriBitmap.getHeight() / 2, oriBitmap.getWidth(),
				oriBitmap.getHeight() / 2, ReflectM, false);
		canvas.drawBitmap(newBitmap, 0, oriBitmap.getHeight() + REFLECT_GAP,
				null);
		
		Paint paint = new Paint();
		LinearGradient shader = new LinearGradient(0, oriBitmap.getHeight(), 0,
				bitmapHeight, 0x70ffffff, 0x00ffffff,
				TileMode.CLAMP);
		// Set the paint to use this shader (linear gradient)
		paint.setShader(shader);
		// Set the Transfer mode to be porter duff and destination in
		paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
		canvas.drawRect(0, oriBitmap.getHeight(), oriBitmap.getWidth(),
				bitmapHeight, paint);
		return reflectBitmap;
	}
}</span>

 

使用方法:

<span style="font-size:18px;">public class Main extends Activity{
	private ImageView imgShow;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 实例化launcher列表
		setContentView(R.layout.main);
		imgShow=(ImageView)findViewById(R.id.img_show);
		// MyImgView.drawableToBitmap(lvalue.get(position).icon)
		Bitmap bitmap = BitmapFactory.decodeResource(
				mActivity.getResources(), R.drawable.xuanjianyong);
		imgShow.setImageBitmap(ReflectImage.createReflectImg(bitmap));// 加入处理过的图片
	}
}</span>




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值