Android實現圖片的倒影效果

來源:互聯網
上載者:User
public static Bitmap createReflectedImage(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 bitmapWithReflection = Bitmap.createBitmap(width,             (height + height / 2), Config.ARGB_8888);    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);    paint.setShader(shader);    paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));    canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()             + reflectionGap, paint);    return bitmapWithReflection; }

 

 

解釋一下:

Matrix matrix = new Matrix(); 
    matrix.preScale(1, -1);

實現圖片的反轉,見Android利用Matrix簡單處理圖片。

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);

將反轉後的圖片畫到畫布中。

LinearGradient shader = new LinearGradient(0, 
            originalImage.getHeight(), 0, bitmapWithReflection.getHeight() 
                    + reflectionGap, 0×70ffffff, 0×00ffffff, 
            TileMode.MIRROR);

建立線性漸層LinearGradient 對象。

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

畫布畫出反轉圖片大小地區,然後把漸層效果加到其中,就出現了圖片的倒影效果。

 

 本文轉自:http://blog.csdn.net/ralfmonkey/article/details/6442395

 

解釋一下:

Matrix matrix = new Matrix(); 
    matrix.preScale(1, -1);

實現圖片的反轉,見Android利用Matrix簡單處理圖片。

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);

將反轉後的圖片畫到畫布中。

LinearGradient shader = new LinearGradient(0, 
            originalImage.getHeight(), 0, bitmapWithReflection.getHeight() 
                    + reflectionGap, 0×70ffffff, 0×00ffffff, 
            TileMode.MIRROR);

建立線性漸層LinearGradient 對象。

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

畫布畫出反轉圖片大小地區,然後把漸層效果加到其中,就出現了圖片的倒影效果。

 

 本文轉自:http://blog.csdn.net/ralfmonkey/article/details/6442395

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.