<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理
    Android中實現倒影效果

    實現原理
    實現倒影可以使用 OpenGL 等 3D 接口方法,也可以用 2D 的方法模擬。
    用 2D 方法實現倒影需要從兩個方面考慮:
    倒影是上、下翻轉的圖像;
    從上到下透明度越來越大。

    圖像翻轉
    原理上講,圖像的翻轉實際就是將圖像數據上下行互換。

    透明度漸變
    實現透明度漸變有兩種方法,一是使用蒙板;二是直接修改像素數據,修改每個像素的 alpha 值。
    對于蒙板法,事先做好一張透明度漸變的圖,這就是我們的蒙板,在繪制完圖像之后把蒙板圖片繪制上去,這樣就產生了透明度漸變的效果。
    對于第二種方法,我們需要首先讀出圖片的數據,然后修改每個像素的 alpha 值。逐行增加 alpha 值,產生的效果是自上向下由暗變亮。

     1 
     2     /**
     3      * get reflection bitmap of the original bitmap.
     4      * @param srcBitmap
     5      * @return
     6      */
     7     private Bitmap makeReflectionBitmap(Bitmap srcBitmap){
     8         int bmpWidth = srcBitmap.getWidth();
     9         int bmpHeight = srcBitmap.getHeight();
    10         int[] pixels = new int[bmpWidth * bmpHeight * 4];
    11         srcBitmap.getPixels(pixels, 0, bmpWidth, 00, bmpWidth, bmpHeight);
    12 
    13         //get reversed bitmap
    14         Bitmap reverseBitmap = Bitmap.createBitmap(bmpWidth, bmpHeight,
    15                 Bitmap.Config.ARGB_8888);
    16         for (int y = 0; y < bmpHeight; y++) {
    17             reverseBitmap.setPixels(pixels, y * bmpWidth, bmpWidth, 0,
    18                     bmpHeight - y - 1, bmpWidth, 1);
    19         }
    20         
    21         //get reflection bitmap based on the reversed one
    22         reverseBitmap.getPixels(pixels, 0, bmpWidth, 00, bmpWidth, bmpHeight);
    23         Bitmap reflectionBitmap = Bitmap.createBitmap(bmpWidth, bmpHeight,
    24                 Bitmap.Config.ARGB_8888);
    25         int alpha = 0x00000000;
    26         for (int y = 0; y < bmpHeight; y++) {
    27             for (int x = 0; x < bmpWidth; x++) {
    28                 int index = y * bmpWidth + x;
    29                 int r = (pixels[index] >> 16& 0xff;
    30                 int g = (pixels[index] >> 8& 0xff;
    31                 int b = pixels[index] & 0xff;
    32 
    33                 pixels[index] = alpha | (r << 16| (g << 8| b;
    34                 
    35                 reflectionBitmap.setPixel(x, y, pixels[index]);
    36             }
    37             alpha = alpha + 0x01000000;
    38         }
    39         
    40         return reflectionBitmap;
    41     }

    參考 http://www.linuxgraphics.cn/android/reflection_effect_2d.html


    posted on 2010-04-13 15:37 calvin 閱讀(1329) 評論(0)  編輯  收藏 所屬分類: Android
    主站蜘蛛池模板: 亚洲精品久久久www| 成全视频免费高清 | 亚洲AV日韩AV无码污污网站| 30岁的女人韩剧免费观看| 国产亚洲无线码一区二区 | 亚洲精品无码av天堂| 黄色一级免费网站| 亚洲成a人片在线播放| 美女网站在线观看视频免费的| 亚洲人成色7777在线观看不卡| caoporn国产精品免费| 亚洲男同帅GAY片在线观看| 久99久精品免费视频热77| 亚洲三级电影网址| 国内精品乱码卡1卡2卡3免费 | 亚洲国产精品综合久久一线| 老外毛片免费视频播放| 国产成人精品日本亚洲专区| 你是我的城池营垒免费观看完整版| 亚洲AV综合色区无码一区| 91麻豆国产免费观看| 亚洲精品午夜国产va久久| 免费国产人做人视频在线观看| 精品国产呦系列在线观看免费| 亚洲日韩区在线电影| 女人18毛片特级一级免费视频| 国产亚洲精品美女2020久久| 亚洲乳大丰满中文字幕| 99在线免费观看视频| 亚洲成aⅴ人片久青草影院按摩| 亚洲精品成人网久久久久久| 免费在线看黄网站| 久久国产亚洲精品| 国产L精品国产亚洲区久久| 99精品视频免费观看| 亚洲AV无码一区二区三区性色 | 亚洲香蕉在线观看| 免费在线观看的黄色网址| a色毛片免费视频| 亚洲一卡2卡3卡4卡乱码 在线| 亚洲AV中文无码乱人伦在线视色|