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

flutter旋轉,flutter旋轉組件

Flutter CustomPaint 使用介紹

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

創(chuàng)新互聯(lián)是工信部頒發(fā)資質IDC服務器商,為用戶提供優(yōu)質的雙線服務器托管服務

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

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

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

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

color : 設置畫筆顏色

isAntiAlias : 設置畫筆是否扛鋸齒

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

strokeWidth : 設置畫筆畫線寬度

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

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

效果如下:

Flutter動畫 --- 平移/旋轉/縮放/漸變

在Flutter中Widget動畫的核心類有下面這些:

Animation:動畫庫中的一個核心類,它生成指導動畫的值;

CurvedAnimation:將動畫過程抽象為一個非線性曲線;

AnimationController:用來管理管理動畫,常用的方法有forward():啟動動畫;reverse({double from}:倒放動畫;reset():重置動畫,將其設置到動畫的開始位置;stop({ bool canceled = true }):停止動畫。

Tween:AnimationController對象的范圍從0.0到1.0。如果您需要不同的范圍或不同的數(shù)據(jù)類型,則可以使用Tween來配置動畫以生成不同的范圍或數(shù)據(jù)類型的值。

Flutter Transform使用介紹

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

例子

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

例子

順時針旋轉45°

例子

放大1.5倍

Flutter實現(xiàn)堆疊式卡輪播效果

在本博客中,我們將探討Flutter中的堆疊式卡輪播。 我們還將實現(xiàn)一個演示程序,并學習在您的flutter應用程序中使用 stacked_card_carousel 包創(chuàng)建一個帶有垂直輪播的堆疊卡。

用于創(chuàng)建帶有堆疊卡片的垂直輪播的小部件。 下面的演示視頻顯示了如何在Flutter中創(chuàng)建帶有垂直旋轉木馬的堆疊卡。 它顯示了在您的flutter應用程序中如何使用stacked_card_carousel軟件包來使用堆疊式卡輪播。 它顯示了垂直圓盤傳送帶滑動卡的列表,所有卡向上滑動并堆疊,稱為堆疊式卡傳送帶。 它會顯示在您的設備上。

堆疊式卡輪播的一些屬性是:

在lib文件夾中創(chuàng)建一個名為style_card.dart的新dart文件。

首先,我們創(chuàng)建StyleCard類,將在后續(xù)的DEMO中調用它

我們將制作一個 card 控件. 在card控件中, 我們加入一個elevation 屬性和一個column控件。 在column中, 我們加入一個container用于包含image, title 和 description. 然后在stacked_card_demo頁面中使用它。

在lib文件夾中創(chuàng)建一個新的名為stacked_card_demo.dart的dart文件。

現(xiàn)在,我們將創(chuàng)建一個styleCards列表,并在其中添加一個StyleCard類。

我們創(chuàng)建了八個卡片控件,并在其中添加了image,title和description。 程序運行后,我們將看到一個卡片列表, 當用戶向上滑動時,所有卡片都將堆疊在一起; 當用戶向下滑動時,卡片都將回到原始位置;

效果如下:

Demo地址:

Flutter 94: 初識 MediaQuery

當我們同時為手機和平板適配編寫 app 針對不同屏幕尺寸進行 UI 布局或當用戶偏好設置較大字號或是想要最大限度等減少動畫等;此時就需要 MediaQuery 來幫我們獲取所用設備的信息以及用戶設置的偏好信息;

MediaQuery 一直存在于 WidgetsApp 和 MaterialApp 中, MediaQuery 繼承自 InheritedWidget 是一個單獨的 Widget ,但一般通過 MediaQuery.of(context) 來獲取相關信息;

當相關信息發(fā)生變化,例如屏幕旋轉等時,屏幕中 Widget 會重新構建,以保持最新狀態(tài);我們可以通過 MediaQuery 構造函數(shù)和提供的靜態(tài)方法手動設置對應的相關信息;

MediaQueryData 包含關于媒介的相關信息;一般通過 MediaQuery.of(context) 獲取;

size 為媒介的尺寸大小,以邏輯像素為單位;

devicePixelRatio 為像素密度;與設備物理像素有關,與橫豎屏等無關;

orientation 為橫豎屏, Orientation.landscape 為橫屏, Orientation.portrait 為豎屏;

textScaleFactor 為

每個邏輯像素的字體像素數(shù),小菜理解為字體的像素比;注意,小菜設置了默認字體像素密度為標準的 1.2 倍之后調整設備系統(tǒng)字號,其 1.2 倍依舊是以標準字號為基礎擴大 1.2 倍;

platformBrightness 為當前設備的亮度模式;注意調整屏幕亮度并不會改變該模式,與當前系統(tǒng)支持的黑暗模式和明亮模式相關;

alwaysUse24HourFormat 為當前設備是否為 24 小時制;

accessibleNavigation 為是否使用 TalkBack 或 VoiceOver 之類的輔助功能與應用程序進行交互,用以輔助視力障礙人群;

invertColors 為是否使用顏色反轉,主要用于 iOS 設備;

highContrast 為用戶是否要求前景與背景之間的對比度高,主要用于 iOS 設備;

disableAnimations 為平臺是否要求禁用或減少動畫;

boldText 為平臺是否要求使用粗體;

padding 為屏幕內邊距,一般是劉海兒屏或異形屏中被系統(tǒng)遮擋部分邊距;

viewInsets 為鍵盤彈出時等遮擋屏幕邊距,其中 viewInsets.bottom 為鍵盤高度;

systemGestureInsets 為手勢邊距,如 Android Q 之后添加的向左滑動關閉頁面等;

viewPadding 小菜理解為視圖內邊距,為屏幕被劉海兒屏或異形屏中被系統(tǒng)遮擋部分,從 MediaQuery 邊界的邊緣計算;此值是保持不變;例如,屏幕底部的軟件鍵盤可能會覆蓋并占用需要底部填充的相同區(qū)域,因此不會影響此值;

physicalDepth 為設備物理層級,小菜暫時還未想到對應的應用場景;

小菜在嘗試獲取其他子 Widget Size 時,有兩點需要注意,首先要設置一個全局的 GlobalKey 來獲取當前位置, key 需要為唯一的;第二通過 GlobalKey().currentContext 獲取 BuildContext 上下文環(huán)境,從而獲取對應尺寸;

MediaQuery 案例嘗試

小菜對于部分 MediaQueryData 的應用和理解還不夠深入;如有錯誤請多多指導!

文章名稱:flutter旋轉,flutter旋轉組件
文章地址:http://chinadenli.net/article9/dsepgoh.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序網(wǎng)站設計微信公眾號企業(yè)網(wǎng)站制作網(wǎng)站內鏈電子商務

廣告

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

網(wǎng)站優(yōu)化排名