android倒影效果,Android 设置图片倒影效果

首先,贴出效果图:

2c2eb8d7004a8eb55d67bdb7dd21e4ca.png

1.布局文件main.xml

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello" />

android:id="@+id/picture_qian"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/horse" />

2.MainActivity界面java代码:

1 packagecom.easymorse.picture;2

3 importandroid.app.Activity;4 importandroid.graphics.Bitmap;5 importandroid.graphics.Bitmap.Config;6 importandroid.graphics.Canvas;7 importandroid.graphics.LinearGradient;8 importandroid.graphics.Matrix;9 importandroid.graphics.Paint;10 importandroid.graphics.PorterDuff.Mode;11 importandroid.graphics.PorterDuffXfermode;12 importandroid.graphics.Shader.TileMode;13 importandroid.graphics.drawable.BitmapDrawable;14 importandroid.os.Bundle;15 importandroid.widget.ImageView;16

17 public class MainActivity extendsActivity {18 /**Called when the activity is first created.*/

19 @Override20 public voidonCreate(Bundle savedInstanceState) {21 super.onCreate(savedInstanceState);22 setContentView(R.layout.main);23 ImageView imageView2 =(ImageView) findViewById(R.id.picture_qian);24

25 Bitmap bmp =((BitmapDrawable) getResources().getDrawable(26 R.drawable.horse)).getBitmap();27

28 imageView2.setImageBitmap(createReflectedImage(bmp));29 }30

31 public staticBitmap createReflectedImage(Bitmap originalImage) {32

33 final int reflectionGap = 4;34

35 int width =originalImage.getWidth();36 int height =originalImage.getHeight();37

38 Matrix matrix = newMatrix();39 matrix.preScale(1, -1);40

41 Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,42 height / 2, width, height / 2, matrix, false);43

44 Bitmap bitmapWithReflection =Bitmap.createBitmap(width,45 (height + height / 2), Config.ARGB_8888);46

47 Canvas canvas = newCanvas(bitmapWithReflection);48

49 canvas.drawBitmap(originalImage, 0, 0, null);50

51 Paint defaultPaint = newPaint();52 canvas.drawRect(0, height, width, height +reflectionGap, defaultPaint);53

54 canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);55

56 Paint paint = newPaint();57 LinearGradient shader = new LinearGradient(0,58 originalImage.getHeight(), 0, bitmapWithReflection.getHeight()59 + reflectionGap, 0x70ffffff, 0x00ffffff,60 TileMode.MIRROR);61

62 paint.setShader(shader);63

64 paint.setXfermode(newPorterDuffXfermode(Mode.DST_IN));65

66 canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()67 +reflectionGap, paint);68

69 returnbitmapWithReflection;70 }71 }

原文:http://www.cnblogs.com/_ymw/p/3905829.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值