前言
长假归来第一发,来学习个简单的图片倒影渐变效果
地址
http://blog.csdn.net/xiangyong_1521/article/details/78195950
目录
-
需要实现的效果
-
主要代码
-
链接
一. 需要实现的效果
二. 主要代码
public class MainActivity extends Activity {private ImageView mRevertImageView;private Bitmap mSourceBitmap; //原图private Bitmap mRevertBitmap; //倒立图@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mRevertImageView = (ImageView)findViewById(R.id.im_revert);mSourceBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.source);mRevertImageView.setBackground(new BitmapDrawable(getResources(), revertBitmap(mSourceBitmap)));}private Bitmap revertBitmap(Bitmap originalImage) {final int reflectionGap = 4;int width = originalImage.getWidth();int height = originalImage.getHeight();Matrix matrix = new Matrix();matrix.preScale(1, -1); //实现图片的反转Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height / 2, width, height / 2, matrix, false); //创建反转后的图片Bitmap对象,图片高是原图的一半。Bitmap bitmapWithReflection = Bitmap.createBitmap(width,(height + height / 2), Config.ARGB_8888); //创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。Canvas canvas = new Canvas(bitmapWithReflection);canvas.drawBitmap(originalImage, 0, 0, null); //创建画布对象,将原图画于画布,起点是原点位置。Paint defaultPaint = new Paint();canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);//将反转后的图片画到画布中。Paint paint = new Paint();LinearGradient shader = new LinearGradient(0,originalImage.getHeight(), 0, bitmapWithReflection.getHeight()+ reflectionGap, 0×70ffffff, 0×00ffffff,TileMode.MIRROR); //创建线性渐变LinearGradient 对象。paint.setShader(shader);paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()+ reflectionGap, paint); //画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。return bitmapWithReflection;}}
三. 链接
>笔记13 | 练习Volley(二)加载网络图片的三种方法
>笔记10 | 学习整理静态static 和 终态final