Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions Fabulous.Avalonia.NoSamples.sln
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{1BD6D939-11A
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fabulous.Avalonia", "src\Fabulous.Avalonia\Fabulous.Avalonia.fsproj", "{13B84611-1D27-4002-92A7-B1F600962098}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "extensions", "extensions", "{AA8B5812-628E-4D93-BABF-3AB528505B00}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fabulous.Avalonia.ColorPicker", "extensions\Fabulous.Avalonia.ColorPicker\Fabulous.Avalonia.ColorPicker.fsproj", "{AC35E64E-0590-4C05-9F3C-515AEB533EFE}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fabulous.Avalonia.DataGrid", "extensions\Fabulous.Avalonia.DataGrid\Fabulous.Avalonia.DataGrid.fsproj", "{7F3D8022-5F74-4DF8-A1E4-0893760A1B63}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fabulous.Avalonia.Diagnostics", "extensions\Fabulous.Avalonia.Diagnostics\Fabulous.Avalonia.Diagnostics.fsproj", "{42DE79D0-7F77-42DD-8C29-E66C2C46AA01}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fabulous.Avalonia.ItemsRepeater", "extensions\Fabulous.Avalonia.ItemsRepeater\Fabulous.Avalonia.ItemsRepeater.fsproj", "{0EDA3DD9-2D73-4D2E-A35D-95F69261602C}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fabulous.Avalonia.TreeDataGrid", "extensions\Fabulous.Avalonia.TreeDataGrid\Fabulous.Avalonia.TreeDataGrid.fsproj", "{0208EA22-0362-4477-B636-9674E3E3340A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -20,8 +32,33 @@ Global
{13B84611-1D27-4002-92A7-B1F600962098}.Debug|Any CPU.Build.0 = Debug|Any CPU
{13B84611-1D27-4002-92A7-B1F600962098}.Release|Any CPU.ActiveCfg = Release|Any CPU
{13B84611-1D27-4002-92A7-B1F600962098}.Release|Any CPU.Build.0 = Release|Any CPU
{AC35E64E-0590-4C05-9F3C-515AEB533EFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC35E64E-0590-4C05-9F3C-515AEB533EFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC35E64E-0590-4C05-9F3C-515AEB533EFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC35E64E-0590-4C05-9F3C-515AEB533EFE}.Release|Any CPU.Build.0 = Release|Any CPU
{7F3D8022-5F74-4DF8-A1E4-0893760A1B63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F3D8022-5F74-4DF8-A1E4-0893760A1B63}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F3D8022-5F74-4DF8-A1E4-0893760A1B63}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F3D8022-5F74-4DF8-A1E4-0893760A1B63}.Release|Any CPU.Build.0 = Release|Any CPU
{42DE79D0-7F77-42DD-8C29-E66C2C46AA01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{42DE79D0-7F77-42DD-8C29-E66C2C46AA01}.Debug|Any CPU.Build.0 = Debug|Any CPU
{42DE79D0-7F77-42DD-8C29-E66C2C46AA01}.Release|Any CPU.ActiveCfg = Release|Any CPU
{42DE79D0-7F77-42DD-8C29-E66C2C46AA01}.Release|Any CPU.Build.0 = Release|Any CPU
{0EDA3DD9-2D73-4D2E-A35D-95F69261602C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0EDA3DD9-2D73-4D2E-A35D-95F69261602C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0EDA3DD9-2D73-4D2E-A35D-95F69261602C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0EDA3DD9-2D73-4D2E-A35D-95F69261602C}.Release|Any CPU.Build.0 = Release|Any CPU
{0208EA22-0362-4477-B636-9674E3E3340A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0208EA22-0362-4477-B636-9674E3E3340A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0208EA22-0362-4477-B636-9674E3E3340A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0208EA22-0362-4477-B636-9674E3E3340A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{13B84611-1D27-4002-92A7-B1F600962098} = {1BD6D939-11A9-4A21-8B33-219E7B2C2557}
{AC35E64E-0590-4C05-9F3C-515AEB533EFE} = {AA8B5812-628E-4D93-BABF-3AB528505B00}
{7F3D8022-5F74-4DF8-A1E4-0893760A1B63} = {AA8B5812-628E-4D93-BABF-3AB528505B00}
{42DE79D0-7F77-42DD-8C29-E66C2C46AA01} = {AA8B5812-628E-4D93-BABF-3AB528505B00}
{0EDA3DD9-2D73-4D2E-A35D-95F69261602C} = {AA8B5812-628E-4D93-BABF-3AB528505B00}
{0208EA22-0362-4477-B636-9674E3E3340A} = {AA8B5812-628E-4D93-BABF-3AB528505B00}
EndGlobalSection
EndGlobal
113 changes: 113 additions & 0 deletions Fabulous.Avalonia.Samples.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mvu", "Mvu", "{4E3F0590-7C7E-4891-A6FE-634468C99313}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Component", "Component", "{235D1041-3D82-4E43-BB85-334ED0130077}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "CounterApp", "samples\Mvu\CounterApp\CounterApp.fsproj", "{2B882B7C-3932-4F27-804C-2E3A0A9D0C2F}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "DrawingApp", "samples\Mvu\DrawingApp\DrawingApp.fsproj", "{CE76D7A4-3565-403E-A589-5AE92F3765AE}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "GameOfLife", "samples\Mvu\GameOfLife\GameOfLife.fsproj", "{EC4B4E68-0BC2-434F-BAFA-9B9CE6E18556}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "GitHubClient", "samples\Mvu\GitHubClient\GitHubClient.fsproj", "{BC1FCE91-9AEE-4B9A-A09B-EF544C4F79E0}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Tetris", "samples\Mvu\Tetris\Tetris.fsproj", "{8F6F232F-C28D-4A6A-877D-2A55149C35C3}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "TicTacToe", "samples\Mvu\TicTacToe\TicTacToe.fsproj", "{364882E8-3D37-4BA3-AD1A-A2EA424E90AB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Navigation", "Navigation", "{24EADCE7-78C6-4A4A-AFFA-081441AF95D9}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BasicNavigation", "samples\Mvu\Navigation\BasicNavigation\BasicNavigation.fsproj", "{E074CC4F-8F11-47D9-AFAD-ECF318EEA925}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "CounterApp", "samples\Component\CounterApp\CounterApp.fsproj", "{0E96853C-7981-446D-8FD9-E99281669072}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "DrawingApp", "samples\Component\DrawingApp\DrawingApp.fsproj", "{0508A7C3-1F43-46EE-8DDC-CD3BD2D90927}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "TicTacToe", "samples\Component\TicTacToe\TicTacToe.fsproj", "{B014757F-B5EC-480A-955F-44CF1FC122D8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Navigation", "Navigation", "{56059AFE-9469-497E-9BFB-F98E889EC9CF}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BasicNavigation", "samples\Component\Navigation\BasicNavigation\BasicNavigation.fsproj", "{3D56601F-5DF3-4F49-A71D-A8B3363138A6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Solution Items", "_Solution Items", "{FDAA9907-3247-478B-B123-840BE8749E74}"
ProjectSection(SolutionItems) = preProject
Directory.Packages.props = Directory.Packages.props
README.md = README.md
global.json = global.json
EndProjectSection
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Tetris", "samples\Component\Tetris\Tetris.fsproj", "{48A8F92E-CFAD-4B35-9DD4-D3110E259AE6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{2B882B7C-3932-4F27-804C-2E3A0A9D0C2F} = {4E3F0590-7C7E-4891-A6FE-634468C99313}
{CE76D7A4-3565-403E-A589-5AE92F3765AE} = {4E3F0590-7C7E-4891-A6FE-634468C99313}
{EC4B4E68-0BC2-434F-BAFA-9B9CE6E18556} = {4E3F0590-7C7E-4891-A6FE-634468C99313}
{BC1FCE91-9AEE-4B9A-A09B-EF544C4F79E0} = {4E3F0590-7C7E-4891-A6FE-634468C99313}
{8F6F232F-C28D-4A6A-877D-2A55149C35C3} = {4E3F0590-7C7E-4891-A6FE-634468C99313}
{364882E8-3D37-4BA3-AD1A-A2EA424E90AB} = {4E3F0590-7C7E-4891-A6FE-634468C99313}
{24EADCE7-78C6-4A4A-AFFA-081441AF95D9} = {4E3F0590-7C7E-4891-A6FE-634468C99313}
{E074CC4F-8F11-47D9-AFAD-ECF318EEA925} = {24EADCE7-78C6-4A4A-AFFA-081441AF95D9}
{0E96853C-7981-446D-8FD9-E99281669072} = {235D1041-3D82-4E43-BB85-334ED0130077}
{0508A7C3-1F43-46EE-8DDC-CD3BD2D90927} = {235D1041-3D82-4E43-BB85-334ED0130077}
{B014757F-B5EC-480A-955F-44CF1FC122D8} = {235D1041-3D82-4E43-BB85-334ED0130077}
{56059AFE-9469-497E-9BFB-F98E889EC9CF} = {235D1041-3D82-4E43-BB85-334ED0130077}
{3D56601F-5DF3-4F49-A71D-A8B3363138A6} = {56059AFE-9469-497E-9BFB-F98E889EC9CF}
{48A8F92E-CFAD-4B35-9DD4-D3110E259AE6} = {235D1041-3D82-4E43-BB85-334ED0130077}
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2B882B7C-3932-4F27-804C-2E3A0A9D0C2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2B882B7C-3932-4F27-804C-2E3A0A9D0C2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2B882B7C-3932-4F27-804C-2E3A0A9D0C2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2B882B7C-3932-4F27-804C-2E3A0A9D0C2F}.Release|Any CPU.Build.0 = Release|Any CPU
{CE76D7A4-3565-403E-A589-5AE92F3765AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE76D7A4-3565-403E-A589-5AE92F3765AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE76D7A4-3565-403E-A589-5AE92F3765AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE76D7A4-3565-403E-A589-5AE92F3765AE}.Release|Any CPU.Build.0 = Release|Any CPU
{EC4B4E68-0BC2-434F-BAFA-9B9CE6E18556}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EC4B4E68-0BC2-434F-BAFA-9B9CE6E18556}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC4B4E68-0BC2-434F-BAFA-9B9CE6E18556}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC4B4E68-0BC2-434F-BAFA-9B9CE6E18556}.Release|Any CPU.Build.0 = Release|Any CPU
{BC1FCE91-9AEE-4B9A-A09B-EF544C4F79E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BC1FCE91-9AEE-4B9A-A09B-EF544C4F79E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BC1FCE91-9AEE-4B9A-A09B-EF544C4F79E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BC1FCE91-9AEE-4B9A-A09B-EF544C4F79E0}.Release|Any CPU.Build.0 = Release|Any CPU
{8F6F232F-C28D-4A6A-877D-2A55149C35C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8F6F232F-C28D-4A6A-877D-2A55149C35C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8F6F232F-C28D-4A6A-877D-2A55149C35C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8F6F232F-C28D-4A6A-877D-2A55149C35C3}.Release|Any CPU.Build.0 = Release|Any CPU
{364882E8-3D37-4BA3-AD1A-A2EA424E90AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{364882E8-3D37-4BA3-AD1A-A2EA424E90AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{364882E8-3D37-4BA3-AD1A-A2EA424E90AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{364882E8-3D37-4BA3-AD1A-A2EA424E90AB}.Release|Any CPU.Build.0 = Release|Any CPU
{E074CC4F-8F11-47D9-AFAD-ECF318EEA925}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E074CC4F-8F11-47D9-AFAD-ECF318EEA925}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E074CC4F-8F11-47D9-AFAD-ECF318EEA925}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E074CC4F-8F11-47D9-AFAD-ECF318EEA925}.Release|Any CPU.Build.0 = Release|Any CPU
{0E96853C-7981-446D-8FD9-E99281669072}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E96853C-7981-446D-8FD9-E99281669072}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E96853C-7981-446D-8FD9-E99281669072}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E96853C-7981-446D-8FD9-E99281669072}.Release|Any CPU.Build.0 = Release|Any CPU
{0508A7C3-1F43-46EE-8DDC-CD3BD2D90927}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0508A7C3-1F43-46EE-8DDC-CD3BD2D90927}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0508A7C3-1F43-46EE-8DDC-CD3BD2D90927}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0508A7C3-1F43-46EE-8DDC-CD3BD2D90927}.Release|Any CPU.Build.0 = Release|Any CPU
{B014757F-B5EC-480A-955F-44CF1FC122D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B014757F-B5EC-480A-955F-44CF1FC122D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B014757F-B5EC-480A-955F-44CF1FC122D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B014757F-B5EC-480A-955F-44CF1FC122D8}.Release|Any CPU.Build.0 = Release|Any CPU
{3D56601F-5DF3-4F49-A71D-A8B3363138A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3D56601F-5DF3-4F49-A71D-A8B3363138A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3D56601F-5DF3-4F49-A71D-A8B3363138A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3D56601F-5DF3-4F49-A71D-A8B3363138A6}.Release|Any CPU.Build.0 = Release|Any CPU
{48A8F92E-CFAD-4B35-9DD4-D3110E259AE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48A8F92E-CFAD-4B35-9DD4-D3110E259AE6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48A8F92E-CFAD-4B35-9DD4-D3110E259AE6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48A8F92E-CFAD-4B35-9DD4-D3110E259AE6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
75 changes: 75 additions & 0 deletions samples/Component/CounterApp/App.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
namespace CounterApp

open System
open Avalonia.Threading
open Fabulous
open Fabulous.Avalonia
open Avalonia.Themes.Fluent

open type Fabulous.Avalonia.View
open type Fabulous.Context

module App =
let content () =
Component("CounterApp") {
let! count = State(0)
let! timerOn = State(false)
let! step = State(1)

let timer =
DispatcherTimer(
TimeSpan.FromMilliseconds(1000.),
DispatcherPriority.Default,
(fun _ _ ->
if timerOn.Current then
count.Set(count.Current + step.Current))
)

(VStack() {
TextBlock($"%d{count.Current}").centerText()

Button("Increment", (fun _ -> count.Set(count.Current + step.Current)))
.centerHorizontal()

Button("Decrement", (fun _ -> count.Set(count.Current - step.Current)))
.centerHorizontal()

(HStack() {
TextBlock("Timer").centerVertical()

ToggleSwitch(
timerOn.Current,
fun on ->
timerOn.Set(on)
if on then timer.Start() else timer.Stop()
)

})
.margin(20.)
.centerHorizontal()

Slider(0., 10., float step.Current, (fun n -> step.Set(int(n + 0.5))))

TextBlock($"Step size: %d{step.Current}").center()

Button(
"Reset",
fun _ ->
count.Set(0)
timerOn.Set(false)
step.Set(1)
)
.centerHorizontal()
})
.center()
}

let view () =
#if MOBILE
SingleViewApplication(content())
#else
DesktopApplication(Window(content()))
#endif

let create () =
FabulousAppBuilder.Configure(FluentTheme, view)
46 changes: 46 additions & 0 deletions samples/Component/CounterApp/CounterApp.fsproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\src\Fabulous.Avalonia.props" />

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net8.0;net8.0-android</TargetFrameworks>
<!-- net8.0-ios is not supported on Linux, so we do not add it there. -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('linux')) == false">$(TargetFrameworks);net8.0-ios</TargetFrameworks>
<IsPackable>false</IsPackable>
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
<WarningsAsErrors>FS0025</WarningsAsErrors>
<NoWarn>MT7091;NETSDK1206</NoWarn>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>

<PropertyGroup Condition="'$(AvaloniaPlatform)' == 'Android'">
<SupportedOSPlatformVersion>21.0</SupportedOSPlatformVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(AvaloniaPlatform)' == 'iOS'">
<SupportedOSPlatformVersion>13.0</SupportedOSPlatformVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(AvaloniaPlatform)|$(Configuration)' == 'iOS|Debug' ">
<CodesignKey>Apple Development: Timothé Larivière (X6N2KN9WK3)</CodesignKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<CodesignKey>iPhone Developer</CodesignKey>
</PropertyGroup>
<ItemGroup>
<Compile Include="App.fs" />
</ItemGroup>
<ItemGroup>
<None Include="Properties\**" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Avalonia.Themes.Fluent" />
<PackageReference Include="FSharp.Core" />
<PackageReference Include="Fabulous" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\src\Fabulous.Avalonia\Fabulous.Avalonia.fsproj" />
</ItemGroup>

<Import Project="..\..\Fabulous.Avalonia.Samples.targets" />
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto">
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="CounterApp" android:icon="@drawable/Icon" />
</manifest>
18 changes: 18 additions & 0 deletions samples/Component/CounterApp/Platform/Android/MainActivity.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace CounterApp.Android

open Android.App
open Android.Content.PM
open Avalonia
open Avalonia.Android
open CounterApp
open Fabulous.Avalonia

[<Activity(Label = "Counter.Android",
Theme = "@style/MyTheme.NoActionBar",
Icon = "@drawable/icon",
LaunchMode = LaunchMode.SingleTop,
ConfigurationChanges = (ConfigChanges.Orientation ||| ConfigChanges.ScreenSize))>]
type MainActivity() =
inherit AvaloniaMainActivity<FabApplication>()

override this.CustomizeAppBuilder(_builder: AppBuilder) = App.create().UseAndroid()
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item>
<color android:color="@color/splash_background"/>
</item>

<item android:drawable="@drawable/icon"
android:width="120dp"
android:height="120dp"
android:gravity="center" />

</layer-list>
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="splash_background">#FFFFFF</color>
</resources>
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
<resources>

<style name="MyTheme">
</style>

<style name="MyTheme.NoActionBar" parent="@style/Theme.AppCompat.NoActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>

<style name="MyTheme.Splash" parent ="MyTheme.NoActionBar">
<item name="android:windowBackground">@drawable/splash_screen</item>
<item name="android:windowContentOverlay">@null</item>
</style>

</resources>
12 changes: 12 additions & 0 deletions samples/Component/CounterApp/Platform/Android/SplashActivity.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace CounterApp.Android

open Android.App
open Android.Content

[<Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)>]
type SplashActivity() =
inherit Activity()

override this.OnResume() =
base.OnResume()
this.StartActivity(new Intent(Application.Context, typeof<MainActivity>))
19 changes: 19 additions & 0 deletions samples/Component/CounterApp/Platform/Desktop/Program.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace CounterApp.Desktop

open System
open Avalonia

open CounterApp

module Program =

[<CompiledName "BuildAvaloniaApp">]
let buildAvaloniaApp () =
App
.create()
.UsePlatformDetect()
.LogToTrace(areas = Array.empty)

[<EntryPoint; STAThread>]
let main argv =
buildAvaloniaApp().StartWithClassicDesktopLifetime(argv)
Loading