在Flutter中Widget動(dòng)畫(huà)的核心類有下面這些:
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比新興網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式新興網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋新興地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。
Animation:動(dòng)畫(huà)庫(kù)中的一個(gè)核心類,它生成指導(dǎo)動(dòng)畫(huà)的值;
CurvedAnimation:將動(dòng)畫(huà)過(guò)程抽象為一個(gè)非線性曲線;
AnimationController:用來(lái)管理管理動(dòng)畫(huà),常用的方法有forward():?jiǎn)?dòng)動(dòng)畫(huà);reverse({double from}:倒放動(dòng)畫(huà);reset():重置動(dòng)畫(huà),將其設(shè)置到動(dòng)畫(huà)的開(kāi)始位置;stop({ bool canceled = true }):停止動(dòng)畫(huà)。
Tween:AnimationController對(duì)象的范圍從0.0到1.0。如果您需要不同的范圍或不同的數(shù)據(jù)類型,則可以使用Tween來(lái)配置動(dòng)畫(huà)以生成不同的范圍或數(shù)據(jù)類型的值。
Image是一個(gè)用于展示圖片的組件。支持 JPEG、PNG、GIF、Animated GIF、WebP、Animated WebP、BMP 和 WBMP 等格式。
Image.asset - 用于從資源目錄的顯示圖片,需要在 pubspec.yaml 文件中聲明。
Image.network - 用于從網(wǎng)絡(luò)上顯示圖片。
Image.file - 用于從文件里顯示圖片。
Image.memory - 用于從內(nèi)存里(Uint8List)顯示圖片。
alignment → AlignmentGeometry - 圖像邊界內(nèi)對(duì)齊圖像。
centerSlice → Rect - 九片圖像的中心切片。
color → Color - 該顏色與每個(gè)圖像像素混合colorBlendMode。
colorBlendMode → BlendMode - 用于 color 與此圖像結(jié)合使用。
fit → BoxFit - 圖像在布局中分配的空間。
gaplessPlayback → bool - 當(dāng)圖像提供者發(fā)生變化時(shí),是繼續(xù)顯示舊圖像(true)還是暫時(shí)不顯示(false)。
image → ImageProvider - 要顯示的圖像。
matchTextDirection → bool - 是否在圖像的方向上繪制圖像 TextDirection。
repeat → ImageRepeat - 未充分容器時(shí),是否重復(fù)圖片。
height → double - 圖像的高度。
width → double - 圖像的寬度。
加載資源圖片需要將圖片資源放入工程中,例如:新建images文件夾,將圖片放在該文件夾下,圖片適配則是使用ios的方式1X,2X,3X:
然后在pubspec.yaml中配置assets:
加載資源/網(wǎng)絡(luò)/本地文件圖片/內(nèi)存圖片:
占位圖加載圖片:
圓形圖片:1.裁剪實(shí)現(xiàn) 2.CircleAvatar實(shí)現(xiàn) 3.Container邊框?qū)崿F(xiàn)
圓角圖片:1.裁剪實(shí)現(xiàn) 2.Container邊框?qū)崿F(xiàn)
BoxFit.contain 全圖居中顯示但不充滿,顯示原比例
BoxFit.cover 圖片可能拉伸,也可能裁剪,但是充滿容器
BoxFit.fill 全圖顯示且填充滿,圖片可能會(huì)拉伸
BoxFit.fitHeight 圖片可能拉伸,可能裁剪,高度充滿
BoxFit.fitWidth 圖片可能拉伸,可能裁剪,寬度充滿
BoxFit.scaleDown 效果和contain差不多, 但是只能縮小圖片,不能放大圖片
下一節(jié)學(xué)習(xí)基礎(chǔ)組件之Text
CustomPaint class提供了讓用戶自定義widget的能力,它暴露了一個(gè)canvas,可以通過(guò)這個(gè)canvas來(lái)繪制widget,CustomPaint會(huì)先調(diào)用painter繪制背景,然后再繪制child,最后調(diào)用foregroundPainter來(lái)繪制前景,CustomPaint的定義如下
CustomPaint的繪制過(guò)程都將會(huì)交給CustomPainter來(lái)完成,CustomPainter是個(gè)抽象接口,在子類化CustomPainter的時(shí)候必須要重寫(xiě)它的 paint 跟 shouldRepaint 接口,可以根據(jù)自己的場(chǎng)景來(lái)選擇性的重寫(xiě) hitTest 跟 shouldRebuildSemantics 方法。
canvas--畫(huà)布,真正的繪制是由canvas跟paint來(lái)完成的,畫(huà)布提供了各種繪制的接口來(lái)繪制圖形,除此以外畫(huà)布還提供了平移、縮放、旋轉(zhuǎn)等矩陣變換接口,畫(huà)布都有固定大小跟形狀,還可以使用畫(huà)布提供的裁剪接口來(lái)裁剪畫(huà)布的大小形狀等等。
常用的繪制接口有 更多請(qǐng)查看官方文檔
Paint---筆畫(huà),是用來(lái)設(shè)置在畫(huà)布上面繪制圖形時(shí)的一些筆畫(huà)屬性,如:顏色、線寬、繪制模式、抗鋸齒等等。常用屬性有 更多請(qǐng)查看官方文檔
color : 設(shè)置畫(huà)筆顏色
isAntiAlias : 設(shè)置畫(huà)筆是否扛鋸齒
shader : 著色器,填充形狀或者畫(huà)線時(shí)用到,如果沒(méi)設(shè)置將會(huì)使用color
strokeWidth : 設(shè)置畫(huà)筆畫(huà)線寬度
style :繪制模式,畫(huà)線或充滿
下面這個(gè)例子來(lái)自于官方,通過(guò) CustomPaint 畫(huà)出了一個(gè)藍(lán)天跟太陽(yáng)出來(lái)
效果如下:
窗口小部件(Widget)可以在Paint之前應(yīng)用Transform進(jìn)行轉(zhuǎn)換,通過(guò)Transform可以對(duì)widget進(jìn)行平移、旋轉(zhuǎn)、縮放等矩陣變換。不像RotatedBox在layout前就對(duì)Widget進(jìn)行旋轉(zhuǎn)操作,Transform是在Widget繪制前進(jìn)行轉(zhuǎn)換,這意味著在計(jì)算Widget的顯示需要占用多少空間時(shí),不會(huì)去考慮Transform變換。
例子
在垂直方向移動(dòng)15個(gè)單位距離
例子
順時(shí)針旋轉(zhuǎn)45°
例子
放大1.5倍
在編寫(xiě)幾個(gè) Flutter 項(xiàng)目后,發(fā)現(xiàn) Flutter 的強(qiáng)大之處在于業(yè)務(wù)中所有用到的控件以及場(chǎng)景都有對(duì)應(yīng)的處理方案;而 Dart 語(yǔ)言也與 Java 、 Kotlin 類似,所以對(duì) Android 開(kāi)發(fā)者來(lái)說(shuō)門(mén)檻非常低;特意記錄一下常用的控件及其使用:
StatelessWidget 不需要額外的創(chuàng)建 State
StatefulWidget 創(chuàng)建 State 類,并可以在其中保存一些狀態(tài)
only 可以單獨(dú)設(shè)置每個(gè)方向的內(nèi)邊距
類似于 LinearLayout 中的 orientation 設(shè)置為 vertical , mainAxisAlignment 表示豎向的一個(gè)對(duì)齊方式, crossAxisAlignment 表示橫向的對(duì)齊方式
與 Column 相反,主軸是橫向,對(duì)齊方式類似, crossAxisAlignment 表示豎向的對(duì)齊方式
類似 SizedBox ,一個(gè)容器,但是主要功能是有一個(gè) decoration —— 裝飾器,作用是繪制背景,或者使用 item 中的陰影
棧,先入后出,類似于 Android 上的 FrameLayout
通常配合 Stack 使用,固定顯示在某一個(gè)位置
配合多 child 使用,會(huì)填充剩余的空間
Image 功能強(qiáng)大,使用不同的方法可以加載不同來(lái)源的圖片
看到這些方法,突然覺(jué)得 Flutter 太香了,而且 Image 可以配置 clip 等裁剪出不同形狀的圖片,無(wú)論是圓形還是五角星都不在話下,然而 Android 要實(shí)現(xiàn)不規(guī)則的形狀,可是要下不少功夫的。
名字和 Android 的一模一樣,但是用法卻比 Android 的簡(jiǎn)單很多:
主要就是 itemCount 與 itemBuilder ,其余就是配置樣式, itemBuilder 需要返回一個(gè) widget ,當(dāng)然了,每個(gè) ListView 都有其對(duì)應(yīng)的 item ,在里面的方法中編寫(xiě) widget 即可
與 ListView 類似,但是需要有一個(gè) delegate 類,作用是設(shè)置有多少列,每一列之間的間距是多少
GridView 沒(méi)有 build , children 表示所有的子 view
最常用的控件之一,有非常多的樣式, Flutter 中通常是使用裝飾器來(lái)處理控件的,如背景使用 BoxDecoration , TextFiled 使用 InputDecoration ; 使用如下
先上圖(樣式自己調(diào)整)
1.新建小部件
根據(jù)實(shí)際情況修改以下部分內(nèi)容;
2.使用(index 為當(dāng)前點(diǎn)擊圖片的下標(biāo),)
網(wǎng)站題目:flutter旋轉(zhuǎn)圖片,flutter 屏幕旋轉(zhuǎn)監(jiān)聽(tīng)
文章URL:http://www.rwnh.cn/article46/dsdjceg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、營(yíng)銷型網(wǎng)站建設(shè)、定制網(wǎng)站、自適應(yīng)網(wǎng)站、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)