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

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

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

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    Android游戲開發之旅(十七) 圖像漸變特效

    Posted on 2010-12-03 10:32 啥都寫點 閱讀(840) 評論(0)  編輯  收藏 所屬分類: Android

    在Android游戲開發中我們不免要涉及到一些圖形特效處理,今天主要看下Android平臺下實現漸變效果。在 android.graphics中我們可以找到有關Gradient字樣的類,比如LinearGradient 線性漸變、RadialGradient徑向漸變和 角度漸變SweepGradient 三種,他們的基類為android.graphics.Shader。為了顯示出效果android123使用一個簡單的例子來說明。

      一、LinearGradient線性漸變

      在android平臺中提供了兩種重載方式來實例化該類分別為,他們的不同之處為參數中第一種方法可以用顏色數組,和位置來實現更細膩的過渡效果,比如顏色采樣int[] colors數組中存放20種顏色,則漸變將會逐一處理。而第二種方法參數僅為起初顏色color0和最終顏色color1。

    view plaincopy to clipboardprint?
    LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile)   
    LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile)  
    LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile)
    LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile) 

    使用實例如下

    view plaincopy to clipboardprint?
    Paint p=new Paint();  
      LinearGradient lg=new LinearGradient(0,0,100,100,Color.RED,Color.BLUE,Shader.TileMode.MIRROR);  //參數一為漸變起初點坐標x位置,參數二為y軸位置,參數三和四分辨對應漸變終點,最后參數為平鋪方式,這里設置為鏡像 
    Paint p=new Paint();
      LinearGradient lg=new LinearGradient(0,0,100,100,Color.RED,Color.BLUE,Shader.TileMode.MIRROR);  //參數一為漸變起初點坐標x位置,參數二為y軸位置,參數三和四分辨對應漸變終點,最后參數為平鋪方式,這里設置為鏡像

    剛才Android開發網已經講到Gradient是基于Shader類,所以我們通過Paint的setShader方法來設置這個漸變,代碼如下:

    view plaincopy to clipboardprint?
    p.setShader(lg);  
      canvas.drawCicle(0,0,200,p); //參數3為畫圓的半徑,類型為float型。 
    p.setShader(lg);
      canvas.drawCicle(0,0,200,p); //參數3為畫圓的半徑,類型為float型。

    二、 RadialGradient鏡像漸變

      有了上面的基礎,我們一起來了解下徑向漸變。和上面參數唯一不同的是,徑向漸變第三個參數是半徑,其他的和線性漸變相同。

    view plaincopy to clipboardprint?
    RadialGradient(float x, float y, float radius, int[] colors, float[] positions, Shader.TileMode tile)   
      RadialGradient(float x, float y, float radius, int color0, int color1, Shader.TileMode tile)  
    RadialGradient(float x, float y, float radius, int[] colors, float[] positions, Shader.TileMode tile)
      RadialGradient(float x, float y, float radius, int color0, int color1, Shader.TileMode tile) 

    三、 SweepGradient角度漸變

      對于一些3D立體效果的漸變可以嘗試用角度漸變來完成一個圓錐形,相對來說比上面更簡單,前兩個參數為中心點,然后通過載入的顏色來平均的漸變渲染。

    view plaincopy to clipboardprint?
    SweepGradient(float cx, float cy, int[] colors, float[] positions)  //對于最后一個參數SDK上的描述為May be NULL. The relative position of each corresponding color in the colors array, beginning with 0 and ending with 1.0. If the values are not monotonic, the drawing may produce unexpected results. If positions is NULL, then the colors are automatically spaced evenly.,所以Android123建議使用下面的重載方法,本方法一般為NULL即可。  
    SweepGradient(float cx, float cy, int color0, int color1) 


    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/JavaTiger427/archive/2010/11/25/6034673.aspx



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 一级一看免费完整版毛片| a级特黄毛片免费观看| 国产永久免费高清在线| 无码永久免费AV网站| 国产精品亚洲综合专区片高清久久久 | 精品亚洲456在线播放| free哆拍拍免费永久视频 | 一级成人a毛片免费播放| 女人18毛片a级毛片免费视频| 77777亚洲午夜久久多人| 久久亚洲精品国产亚洲老地址| 国产免费高清69式视频在线观看 | 在线免费观看亚洲| 色屁屁www影院免费观看视频| 最近中文字幕大全中文字幕免费| 亚洲av无码成人精品区在线播放| 亚洲无成人网77777| 特级毛片aaaa免费观看| 亚洲免费在线观看视频| 区三区激情福利综合中文字幕在线一区亚洲视频1| 亚洲人成在线电影| 二级毛片免费观看全程| 青苹果乐园免费高清在线| 亚洲尤码不卡AV麻豆| 美女黄网站人色视频免费| 日本成年免费网站| 国产亚洲一区二区精品| 青青免费在线视频| 麻豆最新国产剧情AV原创免费| 亚洲一区二区三区在线观看精品中文 | 亚洲日韩VA无码中文字幕| 国产精品亚洲午夜一区二区三区| 国精产品一区一区三区免费视频| 亚洲AV蜜桃永久无码精品| 亚洲一区二区三区在线网站| 免费国产叼嘿视频大全网站| 亚洲国产一区明星换脸| 亚洲JIZZJIZZ妇女| 国产免费久久精品99re丫y| 亚洲网站视频在线观看| 日本免费在线观看|