国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android UI效果之繪圖篇(三)

Android UI效果之繪圖篇(三)

2021-06-15 17:47Android開發網 Android

這篇文章主要介紹了Android UI效果之繪圖篇,針對Android開發中的UI效果設計模塊進行講解,感興趣的小伙伴們可以參考一下

一、 porterduffxfermode

porterduffxfermode類似于數據集合里面的交集并集概念,只是數據里面取的是兩個集合,而我們這里取的是兩個圖形之間的交集并集,我們先來看一張android api demo里面一張金典的圖

Android UI效果之繪圖篇(三)

圖中的src和dst相當于是數學中的兩個集合,而在我們的代碼中我們可以這樣來操作這兩個集合

?
1
2
3
canvas.drawsrc();
paint.setxfermode(new porterduffxfermode(porterduff.mode.xxx));
canvas.drawdst();

只需要更具我們的需要設置不同的mode即可,從此以后,圓角矩形什么的,那都不是事兒!

二、shader

shader字面意思是著色器、渲染器,有五個子類分別是:

  • bitmapshader
  • lineargradient
  • radialgradient
  • sweepgradient
  • composeshader

1、bitmapshader:位圖渲染,顧名思義,使用bitmapshader可以對位圖進行一些著色渲染操作
構造方法如下

?
1
2
3
4
5
6
/**
* @param bitmap 需要渲染的位圖
* @param tilex x方向渲染模式
* @param tiley y方向渲染模式.
*/
public bitmapshader(bitmap bitmap, tilemode tilex, tilemode tiley)

第一個參數不用多說,第二個和第三個渲染模式tilemode有三個可選項
①. clamp:當bitmap比要繪制的圖形小時拉伸位圖的最后一個像素;當bitmap比要繪制的圖形大時,根據繪制圖形剪裁bitmap

?
1
2
3
bitmapshader bitmapshader = new bitmapshader(bitmap, shader.tilemode.clamp, shader.tilemode.clamp);
paint.setshader(bitmapshader);
canvas.drawrect(0, 0, bitmap.getwidth() * 2, bitmap.getheight() * 2, paint);

Android UI效果之繪圖篇(三)

?
1
2
3
4
bitmapshader bitmapshader = new bitmapshader(bitmap, shader.tilemode.clamp, shader.tilemode.clamp);
paint.setshader(bitmapshader);
rectf rect = new rectf(100, 100, 300, 300);
canvas.drawroundrect(rect, 30, 30,paint);

Android UI效果之繪圖篇(三)

②. repeat :當bitmap比要繪制的圖形小時橫向縱向不斷重復bitmap;當bitmap比要繪制的圖形大時,根據繪制圖形剪裁bitmap

bitmapshader bitmapshader = new bitmapshader(bitmap, shader.tilemode.repeat, shader.tilemode.repeat);
paint.setshader(bitmapshader);
canvas.drawrect(0, 0, bitmap.getwidth() *2, bitmap.getheight() * 2, paint);

Android UI效果之繪圖篇(三)

③. mirror :和repeat 類似,當bitmap比要繪制的圖形小時橫向縱向不斷重復bitmap,不同的是相鄰的兩個bitmap互為鏡像

?
1
2
3
bitmapshader bitmapshader = new bitmapshader(bitmap, shader.tilemode.mirror, shader.tilemode.mirror);
paint.setshader(bitmapshader);
canvas.drawrect(0, 0, bitmap.getwidth() * 4, bitmap.getheight() * 4, paint);

Android UI效果之繪圖篇(三)

熟悉bitmapshader之后,圓角圖片、圓形頭像什么的就更easy了

1.lineargradient 線性漸變
先來看下它的構造方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * 創建一個lineargradient
 @param x0 起始x坐標
 @param y0 起始y坐標
 @param x1 結束x坐標
 @param y1 結束y坐標
 @param color0 起始顏色值
 @param color1 結束顏色值
 @param tile shader的mode
 */
 public lineargradient(float x0, float y0, float x1, float y1, int color0, int color1,tilemode tile)
 
lineargradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, shader.tilemode tile)

兩個構造方法類似,第二個只是可以添加更多顏色,把顏色值封裝到了數組colors中,其后的positions是與之colors對于的顏色的比例,如果為null,顏色值則平均分布。
lineargradient和bitmapshader一樣有三個tilemode可選clamp、repeat、mirror。實現的效果如下:
① clamp

lineargradient lg = new lineargradient(0, 0, 300, 300, 0xffff0000, 0xff0000ff, shader.tilemode.clamp);
paint.setshader(lg);
canvas.drawrect(0, 0, canvas.getwidth(), canvas.getheight(), paint);

Android UI效果之繪圖篇(三)

② repeat

?
1
2
3
lineargradient lg = new lineargradient(0, 0, 300, 300, 0xffff0000, 0xff0000ff, shader.tilemode.repeat);
paint.setshader(lg);
canvas.drawrect(0, 0, canvas.getwidth(), canvas.getheight(), paint);

Android UI效果之繪圖篇(三)

③ mirror

?
1
2
3
lineargradient lg = new lineargradient(0, 0, 300, 300, 0xffff0000, 0xff0000ff, shader.tilemode.mirror);
paint.setshader(lg);
canvas.drawrect(0, 0, canvas.getwidth(), canvas.getheight(), paint);

Android UI效果之繪圖篇(三)

還有三個shader沒有介紹,感覺篇幅有點長了,留到下一篇再給大家講解,希望大家繼續關注。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产精 | 国产激情在线 | 国产一区二区精品 | 成人自拍视频 | 在线国产一区二区 | 国产日韩精品一区 | 久久久久国产一区二区三区 | av手机在线播放 | 国产一区二区在线免费观看 | 亚洲免费观看 | 免费污污视频在线观看 | 免费在线观看黄色 | 伊人婷婷 | 一级黄色片网站 | a视频在线 | 亚洲在线电影 | 天天夜操 | 国产一区二区三区在线视频 | 一区亚洲 | 精品自拍视频 | 日韩成人在线影院 | 日韩高清在线 | 色视频www在线播放国产人成 | 婷婷亚洲五月 | 国产乱码一区二区三区在线观看 | 日本一区二区三区中文字幕 | 久久久久久国产精品 | 午夜三区 | 91久久久久久久久久久久久久久久 | 国产精品一区二区三区四区五区 | 欧美第一视频 | 欧美一级黄色片免费看 | av大片网| 亚洲一区二区精品视频 | 亚洲九九九 | 国产成人精品一区二区在线 | 一区二区中文 | 人人澡人人射 | 免费一看一级毛片 | 天天碰天天操 | www.一区二区 |