有點酷,使用 .NET MAUI 探索太空

128136dc2107d07f93cf76ae28ab16e2.gif

? 設計??

我準備用 .NET Maui 實現一個非常有意思的 "前往太空" 的程序。第一步,需要圖片素材,我使用了 Aan Ragil 的一組非常棒的 Dribbble 素材圖片。

當然,你也可以在最下面的鏈接進行下載。

d7edbe65f6f132828293f624a431eff0.png

? 實現??

這個應用程序的完整源代碼可以在 Github 上訪問并下載。我們總共需要做三個頁面。

? 初始化項目??

我創建了一個空的 .NET Maui 程序。然后,我禁用了每個頁面上的導航欄,然后設置了背景顏色,主要是修改了 App.xaml 文件。

<!--?Content?Page?Style?-->
<Style?TargetType="ContentPage"?ApplyToDerivedTypes="True"><Setter?Property="NavigationPage.HasNavigationBar"?Value="False"?/><Setter?Property="BackgroundColor"?Value="{StaticResource?PageBackgroundColor}"?/><Setter?Property="Padding"?Value="0"/>
</Style><!--?Navigation?Page?-->
<Style?TargetType="NavigationPage"?ApplyToDerivedTypes="True"><Setter?Property="BackgroundColor"?Value="{StaticResource?PageBackgroundColor}"?/>
</Style>

對于安卓設備, 使用 Android LifeCycle 事件讓狀態欄變為半透明。

builder.UseMauiApp<App>().ConfigureFonts(fonts?=>{fonts.AddFont("Montserrat-Medium.ttf",?"RegularFont");fonts.AddFont("Montserrat-SemiBold.ttf",?"MediumFont");fonts.AddFont("Montserrat-Bold.ttf",?"BoldFont");}).ConfigureLifecycleEvents(events?=>{
#if?ANDROIDevents.AddAndroid(android?=>?android.OnCreate((activity,?bundle)?=>?MakeStatusBarTranslucent(activity)));static?void?MakeStatusBarTranslucent(Android.App.Activity?activity){activity.Window.SetFlags(Android.Views.WindowManagerFlags.LayoutNoLimits,?Android.Views.WindowManagerFlags.LayoutNoLimits);activity.Window.ClearFlags(Android.Views.WindowManagerFlags.TranslucentStatus);activity.Window.SetStatusBarColor(Android.Graphics.Color.Transparent);}
#endif});

為了讓視圖覆蓋底部,每個頁面使用了 IgnoreSafeArea 屬性。

<ContentPage>?<Grid?IgnoreSafeArea="{OnPlatform?Android=False,?iOS=True}">?</Grid>?
</ContentPage>

為了簡單起見,我沒有使用 MVVM 模式,而是普通的 Maui UI 結構。創建了一個 **Planet **類來保存有關行星的信息,并創建了一個?PlanetService?服務。

初始頁

接下來是初始頁面,我把它分成了兩部分。

6eb0a2d1dcaa04a0b5aeb4df2812f65b.png

上部分由每個行星的單獨圖像組成的。我使用了 HorizontalOptions、VerticalOptions、TranslationX、TranslationY、WidthRequest 和 HeightRequest 控制每個圖像的位置和大小。

<Image?Source="earth.png"?VerticalOptions="Start"?HorizontalOptions?="Center"?TranslationX="-48"?TranslationY="148"?WidthRequest="96"?HeightRequest="96"/>

下部分,我沒有使用 Frame 控件,而是使用了更輕量的 Border 控件。

<Border
Padding="24,32"
BackgroundColor="{StaticResource?FrameBackgroundColor}"
Stroke="{StaticResource?BorderColor}"
HorizontalOptions="Fill"
VerticalOptions="End"
Margin="20">
<Border.StrokeShape><RoundRectangle?CornerRadius="24"/>
</Border.StrokeShape><VerticalStackLayoutSpacing="16"><LabelHorizontalOptions="Center"HorizontalTextAlignment="Center"Style="{StaticResource?IntroPageHeaderStyle}"Text="Hello!"/><LabelHorizontalOptions="Center"HorizontalTextAlignment="Center"LineBreakMode="WordWrap"Style="{StaticResource?IntroPageTextStyle}"Text="Want?to?know?and?explain?all?things?about?the?planets?in?the?Milky?Way?galaxy?"/><ButtonStyle="{StaticResource?ButtonStyle}"Text="Explore?Now"HorizontalOptions="Center"Margin="0,12,0,6"Clicked="ExploreNow_Clicked"/></VerticalStackLayout></Border>

看一下第一個頁面的效果。

c3b13d5cada42deddba1fe570678d980.png

看起來還不錯吧!我們還可以設置淡入的效果,加一些動畫。

protected?override?async?void?OnAppearing(){base.OnAppearing();if?(this.AnimationIsRunning("TransitionAnimation"))return;var?parentAnimation?=?new?Animation();//Planets?AnimationparentAnimation.Add(0,?0.2,?new?Animation(v?=>?imgMercury.Opacity?=?v,?0,?1,?Easing.CubicIn));parentAnimation.Add(0.1,?0.3,?new?Animation(v?=>?imgVenus.Opacity?=?v,?0,?1,?Easing.CubicIn));parentAnimation.Add(0.2,?0.4,?new?Animation(v?=>?imgEarth.Opacity?=?v,?0,?1,?Easing.CubicIn));parentAnimation.Add(0.3,?0.5,?new?Animation(v?=>?imgMars.Opacity?=?v,?0,?1,?Easing.CubicIn));parentAnimation.Add(0.4,?0.6,?new?Animation(v?=>?imgJupiter.Opacity?=?v,?0,?1,?Easing.CubicIn));parentAnimation.Add(0.5,?0.7,?new?Animation(v?=>?imgSaturn.Opacity?=?v,?0,?1,?Easing.CubicIn));parentAnimation.Add(0.6,?0.8,?new?Animation(v?=>?imgNeptune.Opacity?=?v,?0,?1,?Easing.CubicIn));parentAnimation.Add(0.7,?0.9,?new?Animation(v?=>?imgUranus.Opacity?=?v,?0,?1,?Easing.CubicIn));//Intro?Box?AnimationparentAnimation.Add(0.7,?1,?new?Animation(v?=>?frmIntro.Opacity?=?v,?0,?1,?Easing.CubicIn));//Commit?the?animationparentAnimation.Commit(this,?"TransitionAnimation",?16,?3000,?null,?null);}

差不多完成了,我們看一下在手機上最后的效果,非常酷!

0d18231a17ec18cf4a3c567e02e5069d.gif

你可以在下面的地址找到它的源代碼和素材信息。

https://github.com/naweed/MauiPlanets

https://dribbble.com/shots/15592060-Planet-Mobile-App

END

89149302792a6f9f7a90e93539a400a5.gif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284612.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284612.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284612.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSS3 動畫插件 aos.js

aos.js是一款效果超贊的頁面滾動元素動畫jQuery動畫庫插件。該動畫庫可以在頁面滾動時提供28種不同的元素動畫效果&#xff0c;以及多種easing效果。在頁面往回滾動時&#xff0c;元素會恢復到原來的狀態。 安裝 yarn add aosnext或者 npm install --save aosnextimport AOS …

nginx匯總(z)

Nginx相關文章Nginx基礎1. nginx安裝2. nginx 編譯參數詳解3. nginx安裝配置清緩存模塊安裝4. nginxPHP 5.55. nginx配置虛擬主機6. nginx location配置7. nginx root&alias文件路徑配置8. ngx_http_core_module模塊提供的變量9. nginx日志配置10. apache和nginx支…

實例講解——系統登錄

一&#xff0c;程序分析 首先使用參數的方式輸入用戶名和密碼&#xff0c;所以&#xff0c;首先要判斷輸入參數的個數是否合法&#xff0c;如果不合法&#xff0c;則必須提示程序執行不對&#xff0c;并退出。 如果正確輸入&#xff0c;則可以進行密碼和用戶名的驗證&#xff0…

【Microsoft Office】Word 2019空格下劃線不顯示的解決辦法

解決辦法&#xff1a;點擊【文件】→【選項】→【高級】選項卡→勾選【為尾部空格添加下劃線(U)】&#xff0c;解決&#xff01;

1.安裝

轉自&#xff1a;http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html Mocha&#xff08;發音"摩卡"&#xff09;誕生于2011年&#xff0c;是現在最流行的JavaScript測試框架之一&#xff0c;在瀏覽器和Node環境都可以使用。 所謂"測試框…

SkiaSharp 之 WPF 自繪彈跳球(案例版)

熟悉下SkiaSharp的基礎操作&#xff0c;這次搞個彈跳球效果&#xff0c;實現后&#xff0c;發現效果還真不錯。大概效果如下:原理分析先是實現了網格效果&#xff0c;這個比較簡單&#xff0c;直接橫線&#xff0c;豎線&#xff0c;就OK了。另外一個就是隨機一個圓形&#xff0…

Windows11 發布更新 Insider Preview Build 22000.100

微軟今天凌晨向開發頻道中的所有用戶發布Windows 11 Insider Preview Build 22000.100&#xff01; 變化和改進 我們已經開始在 Dev Channel 中將 Chat 從 Microsoft Teams 推廣到 Insiders。不是每個人都會馬上看到&#xff0c;任務欄右下方的隱藏圖標彈出窗口已更新&#x…

django源碼簡析——后臺程序入口

django源碼簡析——后臺程序入口 這一年一直在用云筆記&#xff0c;平時記錄一些tips或者問題很方便&#xff0c;所以也就不再用博客進行記錄&#xff0c;還是想把最近學習到的一些東西和大家作以分享&#xff0c;也能夠對自己做一個總結。工作中主要基于django框架&#xff0c…

【BIM入門實戰】最新《建筑制圖與識圖》復習題帶參考答案(一)

文章目錄 一、單選題二、填空題三、簡答題四、繪圖題五、閱讀總平面圖,完成問題一、單選題 1.在圖紙右下角用以說明設計單位、圖名、設計負責人等內容的表格為(B )。 A. 會簽欄 B. 圖標 C. 圖框 D. 圖紙目錄 2.正面投影與側面投影應保持( C )的關系。 A.長度相等且對正…

yum安裝openoffice

安裝方法如下&#xff1a;1、首先安裝openoffice.org套件yum groupinstall "Office/Productivity" 安裝好后&#xff0c;由于采用默認安裝&#xff0c;語言是英文&#xff0c;我可以通過以下方法來查找來安裝中文語言包。yum list openoffice* ....openoffice.org-la…

常見RGB格式

計算機世界中&#xff0c;最終對于顏色和畫面的顯示&#xff0c;更多的采用的是RGB模式&#xff0c;這里記錄一下常見的RGB格式。任何計算機設備以及智能終端等&#xff0c;呈現在我們眼前的色彩實際上便是紅綠藍三基色不同的組合&#xff0c;RGB實際上就是三基色的組合&#x…

《ASP.NET Core 6框架揭秘》實例演示[04]:自定義依賴注入框架

ASP.NET Core框架建立在一個依賴注入框架之上&#xff0c;已注入的方式消費服務已經成為了ASP.NET Core基本的編程模式。為了使讀者能夠更好地理解原生的注入框架框架&#xff0c;我按照類似的設計創建了一個簡易版本的依賴注入框架&#xff0c;并它命名為“Cat”。本篇提供的四…

【QGIS入門實戰精品教程】4.8:QGIS如何下載SRTM數字高程模型DEM?

本文講解QGIS中下載SRTM數字高程模型DEM,以黑龍江省塔河縣為例。 圖幅效果: 最終效果: 文章目錄 1. 下載安裝STRM Download插件2. 加載矢量數據,讀取范圍3. 下載STRM4. DEM拼接5. DEM裁剪1. 下載安裝STRM Download插件 點擊【插件】→【管理并安裝插件】。 在搜索框中輸入…

Win11 恢復設置Win10任務欄、快速啟動欄及右鍵菜單(Win11 22000.100版本測試通過)

恢復方法 按下邊路徑添加 UndockingDisabled項&#xff0c;DWORD (32-bit)值為1&#xff1a; [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell\Update\Packages] "UndockingDisabled"dword:00000001顯示效果 已知問題 開始按鈕點擊無反應&a…

Redis數據類型應用場景及具體方法總結

StringsStrings 數據結構是簡單的key-value類型&#xff0c;value其實不僅是String&#xff0c;也可以是數字。使用Strings類型&#xff0c;你可以完全實現目前 Memcached 的功能&#xff0c;并且效率更高。還可以享受Redis的定時持久化&#xff0c;操作日志及 Replication等功…

幾種距離的計算

http://www.tinysoft.com.cn/TSDN/HelpDoc/display.tsl?id12831 http://www.3566t.com/news/kvqa/1172028.html轉載于:https://www.cnblogs.com/wangduo/p/5526003.html

vue vue-router vuex element-ui axios 寫一個代理平臺的學習筆記(十一)構思商品頁面...

在寫商品頁面product.vue之前&#xff0c;我應該思考一下&#xff0c;商品頁面要實現那些功能&#xff0c;該不如布局&#xff1f;要實現的功能 1、所有商品列表的展示2、分類商品的列表展示 3、搜索商品或得列表展示4、單一商品的詳細頁面5、商品列表分頁功能6、還沒想到的...…

【ArcGIS Pro微課1000例】0019:ArcGIS Pro從海洋的視角看世界---海洋投影(Spilhaus Projection)

從海洋的視角看世界: 世界地圖大多是以陸地為主要載體,如果以海洋為主角,就需要使用一種海洋投影。該投影以Spilhaus博士的名稱命名。ArcGIS Pro自2.5版本以來提供了Spilhaus Projection。 投影效果預覽: 接下來演示ArcGIS Pro 2.8中海洋投影的轉換方法: 1. 新建一個工程…

有人擼了個網頁版win11,驚艷!

演示地址&#xff1a;https://win11.blueedge.me/ Github地址&#xff1a;https://github.com/blueedgetechno/windows11

Vue3+.NET6+C#10,最近優質前后端分離項目匯總

據說80%的WEB開發都是管理后臺&#xff0c;一套開源的優秀管理后臺開發模板堪稱福音&#xff01;分享一套Vue3 Axios TS Vite Element Plus .NET 6 WebAPI JWT SqlSugar的前后端分離架構的通用管理后臺源碼數據庫腳本&#xff0c;還有與之配套錄制的一組視頻教程&#xff0c;全…