首先,贴出效果图:
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