android 图片的倒影

简介:

图片倒影的基本的思路:
 1、 从源图片上面一部分截取下来作为倒影的素材
 2、将源图片和倒影拼接成为一张完整的图片
3、在图片的倒影的部分绘制渐变的倒影的效果

源码:

   public Bitmap createReflectionImg(Bitmap bitmap){
        //倒影上下的分割线的长度
        final int reflectionGap = 0;

        int w=bitmap.getWidth();
        int h=bitmap.getHeight();

        Matrix matrix=new Matrix();
//        设置上下旋转
        matrix.preScale(1,-1);
//        创建一个图片 截图了source img 的下方的 1/2的
        Bitmap reflectionImage=Bitmap.createBitmap(bitmap,0,h/2,w,h/2,matrix,false);
//    创建一张倒影的基础图片  注意下面的图片的高  =h(原图的高)+h/2(倒影图片的高)
        Bitmap bitmapWithReflection=Bitmap.createBitmap(w,(h+h/2), Bitmap.Config.ARGB_8888);

        Canvas canvas=new Canvas(bitmapWithReflection);
        canvas.drawBitmap(bitmap,0,0,null);
        Paint defalutPaint=new Paint();
//        canvas.drawRect(0,h,w,h+reflectionGap,defalutPaint);
//        绘制倒影图片
        canvas.drawBitmap(reflectionImage,0,h+reflectionGap,null);

//        绘制倒影图片的渐变
        Paint paint=new Paint();

        LinearGradient shade=new LinearGradient(0,bitmap.getHeight(),0,bitmapWithReflection.getHeight()+reflectionGap,0x70ffffff,
                0x00ffffff, Shader.TileMode.CLAMP);
        paint.setShader(shade);
// 参考 http://lipeng88213.iteye.com/blog/1189452
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));

        canvas.drawRect(0,h,w,bitmapWithReflection.getHeight()+reflectionGap,paint);

        return  bitmapWithReflection;
    }

倒影的效果图:

当我们注释掉 标志位1 的渐变的代码,效果图如下:


参考:

 http://www.cnblogs.com/qsl568/archive/2012/03/16/2400383.html


发布了120 篇原创文章 · 获赞 1 · 访问量 27万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章