欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter簡介,簡書 flutter

Flutter CustomPaint 使用介紹

CustomPaint class提供了讓用戶自定義widget的能力,它暴露了一個canvas,可以通過這個canvas來繪制widget,CustomPaint會先調(diào)用painter繪制背景,然后再繪制child,最后調(diào)用foregroundPainter來繪制前景,CustomPaint的定義如下

成都創(chuàng)新互聯(lián)公司客戶idc服務(wù)中心,提供溫江服務(wù)器托管、成都服務(wù)器、成都主機托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價的產(chǎn)品以及開放、透明、穩(wěn)定、高性價比的服務(wù),資深網(wǎng)絡(luò)工程師在機房提供7*24小時標(biāo)準(zhǔn)級技術(shù)保障。

CustomPaint的繪制過程都將會交給CustomPainter來完成,CustomPainter是個抽象接口,在子類化CustomPainter的時候必須要重寫它的 paint 跟 shouldRepaint 接口,可以根據(jù)自己的場景來選擇性的重寫 hitTest 跟 shouldRebuildSemantics 方法。

canvas--畫布,真正的繪制是由canvas跟paint來完成的,畫布提供了各種繪制的接口來繪制圖形,除此以外畫布還提供了平移、縮放、旋轉(zhuǎn)等矩陣變換接口,畫布都有固定大小跟形狀,還可以使用畫布提供的裁剪接口來裁剪畫布的大小形狀等等。

常用的繪制接口有 更多請查看官方文檔

Paint---筆畫,是用來設(shè)置在畫布上面繪制圖形時的一些筆畫屬性,如:顏色、線寬、繪制模式、抗鋸齒等等。常用屬性有 更多請查看官方文檔

color : 設(shè)置畫筆顏色

isAntiAlias : 設(shè)置畫筆是否扛鋸齒

shader : 著色器,填充形狀或者畫線時用到,如果沒設(shè)置將會使用color

strokeWidth : 設(shè)置畫筆畫線寬度

style :繪制模式,畫線或充滿

下面這個例子來自于官方,通過 CustomPaint 畫出了一個藍天跟太陽出來

效果如下:

flutter中流式布局

流式布局(Liquid)的特點(也叫"Fluid") 是頁面元素的寬度按照屏幕分辨率進行適配調(diào)整,但整體布局不變。柵欄系統(tǒng)(網(wǎng)格系統(tǒng)),用戶標(biāo)簽等。在Flutter中主要有Wrap和Flow兩種Widget實現(xiàn)。

在介紹Row和Colum時,如果子widget超出屏幕范圍,則會報溢出錯誤,在Flutter中通過Wrap和Flow來支持流式布局,溢出部分則會自動折行。

上述有很多屬性和Row的相同,其意義其實也是相同的,這里我就不一一介紹了,主要介紹下不同的屬性:

我們一般很少會使用Flow,因為其過于復(fù)雜,需要自己實現(xiàn)子widget的位置轉(zhuǎn)換,在很多場景下首先要考慮的是Wrap是否滿足需求。Flow主要用于一些需要自定義布局策略或性能要求較高(如動畫中)的場景。Flow有如下優(yōu)點:

我們對六個色塊進行自定義流式布局:

實現(xiàn)TestFlowDelegate:

可以看到我們主要的任務(wù)就是實現(xiàn)paintChildren,它的主要任務(wù)是確定每個子widget位置。由于Flow不能自適應(yīng)子widget的大小,我們通過在getSize返回一個固定大小來指定Flow的大小,實現(xiàn)起來還是比較麻煩的。

Flutter Transform使用介紹

窗口小部件(Widget)可以在Paint之前應(yīng)用Transform進行轉(zhuǎn)換,通過Transform可以對widget進行平移、旋轉(zhuǎn)、縮放等矩陣變換。不像RotatedBox在layout前就對Widget進行旋轉(zhuǎn)操作,Transform是在Widget繪制前進行轉(zhuǎn)換,這意味著在計算Widget的顯示需要占用多少空間時,不會去考慮Transform變換。

例子

在垂直方向移動15個單位距離

例子

順時針旋轉(zhuǎn)45°

例子

放大1.5倍

flutter android 原生浮窗組件 android_window 介紹

倉庫地址:

pub 地址:

修改 MainActivity.kt 讓 MainActivity 繼承 qiuxiang.android_window.AndroidWindowActivity :

創(chuàng)建 MainApplication.kt :

修改 AndroidManifest.xml 的 application 新增屬性 android:name=".MainApplication" :

main.dart:

我們需要用 @pragma('vm:entry-point') 聲明一個入口函數(shù),默認(rèn)函數(shù)名是 androidWindow ,當(dāng)然你可以隨意指定一個,只是調(diào)用 open 的時候需要同時指定參數(shù) entryPoint: 。

android_window.dart:

浮窗 app 的寫法就和我們平時寫的 app 沒什么區(qū)別了,如果需要支持窗口拖拽移動,則要在最外層使用 AndroidWindow 。

最終效果:

更完整的示例請參考:

主應(yīng)用和浮窗都有 post 和 setHandler 方法用于發(fā)送消息以及設(shè)置監(jiān)聽處理函數(shù)。用法舉例:

主應(yīng)用發(fā)送消息到浮窗:

浮窗監(jiān)聽并處理主應(yīng)用消息:

反過來同理。

Flutter ClipRect 使用介紹

ClipRect控件默認(rèn)是通過限制子widget的繪制區(qū)域來達到裁剪的效果的,通過custom clipper,可以自定義裁剪的大小跟坐標(biāo)

ClipRect的定義如下

ClipRect class默認(rèn)是沒有任何裁剪效果的,需要通過clipper參數(shù)告訴ClipRect如何去裁剪,clipper是個CustomClipper類型,CustomClipper是個抽象接口類,我們通過繼承CustomClipper,重寫 getClip 方法可以定義一個裁剪區(qū)域,通過重寫 shouldReclip 方法來告訴ClipRect當(dāng)一個新的clipper被設(shè)置了是否需要更新裁剪區(qū)域,譬如開始設(shè)置的clipper裁剪坐標(biāo)是從(10,10)開始的,新設(shè)置的clipper裁剪坐標(biāo)是(20,20),那么shouldReclip需要返回true來通知ClipRect更新裁剪區(qū)域。

下面這個例子從網(wǎng)絡(luò)上加載一張圖片,并且進行裁剪,裁剪坐標(biāo)是(10,10) 裁剪的寬高是圖片的寬高減去10

效果如下

當(dāng)前標(biāo)題:flutter簡介,簡書 flutter
文章轉(zhuǎn)載:http://chinadenli.net/article3/dsiejos.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航全網(wǎng)營銷推廣網(wǎng)站建設(shè)網(wǎng)站設(shè)計App開發(fā)定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)