先看下:
import android.app.Activity;<br />import android.graphics.Bitmap;<br />import android.graphics.Bitmap.Config;<br />import android.graphics.BitmapFactory;<br />import android.graphics.Canvas;<br />import android.graphics.LinearGradient;<br />import android.graphics.Matrix;<br />import android.graphics.Paint;<br />import android.graphics.PorterDuff.Mode;<br />import android.graphics.PorterDuffXfermode;<br />import android.graphics.Shader.TileMode;<br />import android.os.Bundle;<br />import android.widget.ImageView;</p><p>public class PicActivity extends Activity {<br />final int reflectionGap = 4;<br />public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.picture);<br /> ImageView imageView = (ImageView) findViewById(R.id.pic);<br /> Bitmap originalImage = BitmapFactory.decodeResource(this<br />.getResources(), R.drawable.car);<br />int width = originalImage.getWidth();<br />int height = originalImage.getHeight();</p><p>Matrix matrix = new Matrix();<br /> //matrix.setRotate(30);<br />matrix.preScale(1, -1);</p><p>Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,<br />height / 2, width, height / 2, matrix, false);</p><p>Bitmap bitmapWithReflection = Bitmap.createBitmap(width,<br />(height + height / 2), Config.ARGB_8888);</p><p>Canvas canvas = new Canvas(bitmapWithReflection);<br />canvas.drawBitmap(originalImage, 0, 0, null);</p><p>Paint deafaultPaint = new Paint();<br />// 消除鋸齒的方法<br />// deafaultPaint.setAntiAlias(true);<br />canvas.drawRect(0, height, width, height + reflectionGap,<br />deafaultPaint);</p><p>canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);</p><p>Paint paint = new Paint();<br />// 消除鋸齒的方法<br />// paint.setAntiAlias(true);<br />//線性漸層<br />LinearGradient shader = new LinearGradient(0,<br />originalImage.getHeight(), 0,<br />bitmapWithReflection.getHeight() + reflectionGap,<br />0x70ffffff, 0x00ffffff, TileMode.CLAMP);</p><p>paint.setShader(shader);</p><p>paint.setXfermode(new PorterDuffXfermode(Mode.DARKEN));<br />canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()<br />+ reflectionGap, paint);<br />imageView.setImageBitmap(bitmapWithReflection);</p><p>}</p><p>}<br />