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

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

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

    Calvin's Tech Space

    成于堅(jiān)忍,毀于浮躁

       :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
    Android中實(shí)現(xiàn)倒影效果

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

    圖像翻轉(zhuǎn)
    原理上講,圖像的翻轉(zhuǎn)實(shí)際就是將圖像數(shù)據(jù)上下行互換。

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

     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
    主站蜘蛛池模板: 19禁啪啪无遮挡免费网站| 四虎永久在线免费观看| 国产精品亚洲综合久久| 免费a级毛片无码av| 东方aⅴ免费观看久久av| 亚洲一区在线视频| 亚洲 小说区 图片区 都市| 亚洲午夜免费视频| 亚洲AV永久无码精品一福利 | 亚洲午夜免费视频| 亚洲成在人线在线播放无码| 亚洲精品高清无码视频| 女人张开腿给人桶免费视频| 青青操免费在线观看| 亚洲无吗在线视频| 国产综合亚洲专区在线| 性感美女视频在线观看免费精品| 中国一级特黄的片子免费| 一本色道久久综合亚洲精品蜜桃冫| 亚洲中文字幕日产乱码高清app| 日本免费网址大全在线观看 | 最新猫咪www免费人成| 91国内免费在线视频| 亚洲欧美国产精品专区久久| 亚洲尹人香蕉网在线视颅| 亚洲国产精品丝袜在线观看| 91精品成人免费国产片| 中文字幕不卡高清免费| 亚洲精品人成网线在线播放va| 久久亚洲国产精品五月天| 亚洲国产成人久久一区久久| 黄色成人网站免费无码av| 最近免费中文字幕MV在线视频3| 亚洲国产成人久久一区二区三区| 在线观看亚洲一区二区| 亚洲熟妇中文字幕五十中出| 波多野结衣视频在线免费观看| aa级一级天堂片免费观看| 免费人成在线观看网站品爱网| 国产精品成人免费观看| 成人精品国产亚洲欧洲|