android paint的shader的使用

shader中文翻譯著色器,主要實(shí)現(xiàn)顏色漸變付翁。

谷歌的注釋:shader是在繪制期間返回水平顏色跨度的對(duì)象的基礎(chǔ)類晃听。著色的子類安裝在調(diào)用paint.setshader(shader)的繪制中。之后佣渴,用該繪制的任何對(duì)象(位圖除外)都將從材質(zhì)球獲取其顏色初斑。

線性渲染

/**
         * 1.線性渲染,LinearGradient(float x0, float y0, float x1, float y1, @NonNull @ColorInt int colors[], @Nullable float positions[], @NonNull TileMode tile)
         * (x0,y0):漸變起始點(diǎn)坐標(biāo)
         * (x1,y1):漸變結(jié)束點(diǎn)坐標(biāo)
         * color0:漸變開(kāi)始點(diǎn)顏色,16進(jìn)制的顏色表示见秤,必須要帶有透明度
         * color1:漸變結(jié)束顏色
         * colors:漸變數(shù)組
         * positions:位置數(shù)組,position的取值范圍[0,1],作用是指定某個(gè)位置的顏色值乎澄,如果傳null测摔,漸變就線性變化。
         * tile:用于指定控件區(qū)域大于指定的漸變區(qū)域時(shí)锋八,空白區(qū)域的顏色填充方法
         */
        mShader = new LinearGradient(0, 0, 500, 500, new int[]{Color.RED, Color.BLUE, Color.GREEN}, new float[]{0.f,0.7f,1}, Shader.TileMode.REPEAT);
        mPaint.setShader(mShader);
        canvas.drawRect(0,0,1000,1000, mPaint);

環(huán)形渲染

 /**
         * 環(huán)形渲染挟纱,RadialGradient(float centerX, float centerY, float radius, @ColorInt int colors[], @Nullable float stops[], TileMode tileMode)
         * centerX ,centerY:shader的中心坐標(biāo),開(kāi)始漸變的坐標(biāo)
         * radius:漸變的半徑
         * centerColor,edgeColor:中心點(diǎn)漸變顏色檀轨,邊界的漸變顏色
         * colors:漸變顏色數(shù)組
         * stoops:漸變位置數(shù)組围苫,類似掃描漸變的positions數(shù)組撤师,取值[0,1],中心點(diǎn)為0,半徑到達(dá)位置為1.0f
         * tileMode:shader未覆蓋以外的填充模式腺占。
         */
        mShader = new RadialGradient(250, 250, 250, new int[]{Color.GREEN, Color.YELLOW, Color.RED}, null, Shader.TileMode.CLAMP);
        mPaint.setShader(mShader);
        canvas.drawCircle(250, 250, 250, mPaint);

掃描渲染

 /**
         * 掃描渲染,SweepGradient(float cx, float cy, @ColorInt int color0,int color1)
         * cx,cy 漸變中心坐標(biāo)
         * color0,color1:漸變開(kāi)始結(jié)束顏色
         * colors铡羡,positions:類似LinearGradient,用于多顏色漸變,positions為null時(shí)意鲸,根據(jù)顏色線性漸變
         */
        mShader = new SweepGradient(250, 250, Color.RED, Color.GREEN);
        mPaint.setShader(mShader);
        canvas.drawCircle(250, 250, 250, mPaint);

位圖渲染

/**
         * 位圖渲染,BitmapShader(@NonNull Bitmap bitmap, @NonNull TileMode tileX, @NonNull TileMode tileY)
         * Bitmap:構(gòu)造shader使用的bitmap
         * tileX:X軸方向的TileMode
         * tileY:Y軸方向的TileMode
         //               REPEAT, 繪制區(qū)域超過(guò)渲染區(qū)域的部分读慎,重復(fù)排版
         //               CLAMP槐雾, 繪制區(qū)域超過(guò)渲染區(qū)域的部分,會(huì)以最后一個(gè)像素拉伸排版
         //               MIRROR, 繪制區(qū)域超過(guò)渲染區(qū)域的部分株灸,鏡像翻轉(zhuǎn)排版
         //         */
        mShader = new BitmapShader(mBitmap, Shader.TileMode.REPEAT, Shader.TileMode.MIRROR);
        mPaint.setShader(mShader);
        canvas.drawRect(0, 0, 500, 500, mPaint);

組合渲染

/**
         * 組合渲染擎值,
         * ComposeShader(@NonNull Shader shaderA, @NonNull Shader shaderB, Xfermode mode)
         * ComposeShader(@NonNull Shader shaderA, @NonNull Shader shaderB, PorterDuff.Mode mode)
         * shaderA,shaderB:要混合的兩種shader
         * Xfermode mode: 組合兩種shader顏色的模式
         * PorterDuff.Mode mode: 組合兩種shader顏色的模式
         */
        BitmapShader bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
        LinearGradient linearGradient = new LinearGradient(0, 0, 1000, 1600, new int[]{Color.RED, Color.GREEN, Color.BLUE}, null, Shader.TileMode.CLAMP);
        mShader = new ComposeShader(bitmapShader, linearGradient, PorterDuff.Mode.MULTIPLY);
        mPaint.setShader(mShader);
        canvas.drawCircle(250, 250, 250, mPaint);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杏死,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子淑翼,更是在濱河造成了極大的恐慌品追,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遭京,死亡現(xiàn)場(chǎng)離奇詭異哪雕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)斯嚎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門堡僻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人钉疫,你說(shuō)我怎么就攤上這事∩螅” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵您炉,是天一觀的道長(zhǎng)赚爵。 經(jīng)常有香客問(wèn)我,道長(zhǎng)冀膝,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任窝剖,我火速辦了婚禮赐纱,結(jié)果婚禮上熬北,老公的妹妹穿的比我還像新娘。我一直安慰自己讶隐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布效五。 她就那樣靜靜地躺著炉峰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戒劫。 梳的紋絲不亂的頭發(fā)上适瓦,一...
    開(kāi)封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音疯攒,去河邊找鬼。 笑死敬尺,一個(gè)胖子當(dāng)著我的面吹牛贴浙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播崎溃,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼袁串,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了赎瑰?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤餐曼,失蹤者是張志新(化名)和其女友劉穎鲜漩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瓶佳,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡霸饲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年厚脉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胶惰。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鸯匹,靈堂內(nèi)的尸體忽然破棺而出泄伪,到底是詐尸還是另有隱情殴蓬,我是刑警寧澤染厅,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布肖粮,位于F島的核電站,受9級(jí)特大地震影響尔苦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜允坚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一屋讶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧皿渗,春花似錦、人聲如沸乐疆。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)迷殿。三九已至,卻和暖如春咖杂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背懦尝。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琅轧,地道東北人踊挠。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像止毕,于是被迫代替她去往敵國(guó)和親扁凛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闯传,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Paint 類持有繪制圖形甥绿、文本、圖像的樣式和色彩信息共缕,并且對(duì)外提供了一系列方法來(lái)設(shè)置這些信息。 一翩活、畫筆基本操作...
    秀花123閱讀 4,296評(píng)論 1 7
  • 系列文章之 Android中自定義View(一)系列文章之 Android中自定義View(二)系列文章之 And...
    YoungerDev閱讀 2,171評(píng)論 0 4
  • 上一篇 文章對(duì)自定義單一 View 進(jìn)行了初步的介紹菠镇,對(duì)繪制的流程有了一個(gè)概念承璃,本篇將對(duì) Paint 部分進(jìn)行詳細(xì)...
    Kip_Salens閱讀 1,545評(píng)論 0 1
  • 《一》 “魚兒舷嗡,有時(shí)間嗎出嘹?”我剛擦完客人留在桌子上的那最后一點(diǎn)油漬税稼,大猴子發(fā)來(lái)微信消息。 “有沒(méi)有的吧郎仆,干嘛?”我...
    啤酒鱸魚閱讀 490評(píng)論 2 10
  • 毛天鄧地巨龍飛扰肌, 國(guó)人昂首胸挺起。 君子胸懷天下公曙旭, 全面客觀看事情。 正確看己公看人, 知己知彼是祖訓(xùn)钻趋。 學(xué)習(xí)對(duì)...
    百變精靈007閱讀 242評(píng)論 0 2