diff --git a/Semi.Avalonia.sln b/Semi.Avalonia.sln
index eff44ce..a9245de 100644
--- a/Semi.Avalonia.sln
+++ b/Semi.Avalonia.sln
@@ -20,9 +20,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semi.Avalonia.Demo.Web", "d
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semi.Avalonia.Demo", "demo\Semi.Avalonia.Demo\Semi.Avalonia.Demo.csproj", "{D789AEDB-EBDF-4450-8E8E-B4A03FB257B0}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Semi.Avalonia.DataGrid", "src\Semi.Avalonia.DataGrid\Semi.Avalonia.DataGrid.csproj", "{8A90C292-8761-4F70-8E1F-EFC097FEADB3}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semi.Avalonia.DataGrid", "src\Semi.Avalonia.DataGrid\Semi.Avalonia.DataGrid.csproj", "{8A90C292-8761-4F70-8E1F-EFC097FEADB3}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Semi.Avalonia.ColorPicker", "src\Semi.Avalonia.ColorPicker\Semi.Avalonia.ColorPicker.csproj", "{0B64C2F2-FDCD-48E4-AB9D-7CCC63B006CA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semi.Avalonia.ColorPicker", "src\Semi.Avalonia.ColorPicker\Semi.Avalonia.ColorPicker.csproj", "{0B64C2F2-FDCD-48E4-AB9D-7CCC63B006CA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semi.Avalonia.Demo.Android", "demo\Semi.Avalonia.Demo.Android\Semi.Avalonia.Demo.Android.csproj", "{0C81FC1C-5D2D-478A-9876-923A0C85EC2F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -54,6 +56,11 @@ Global
{0B64C2F2-FDCD-48E4-AB9D-7CCC63B006CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0B64C2F2-FDCD-48E4-AB9D-7CCC63B006CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0B64C2F2-FDCD-48E4-AB9D-7CCC63B006CA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0C81FC1C-5D2D-478A-9876-923A0C85EC2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0C81FC1C-5D2D-478A-9876-923A0C85EC2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0C81FC1C-5D2D-478A-9876-923A0C85EC2F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {0C81FC1C-5D2D-478A-9876-923A0C85EC2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0C81FC1C-5D2D-478A-9876-923A0C85EC2F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -62,6 +69,7 @@ Global
{2ADCA724-2B6D-46EC-87F7-604D7918B89A} = {43091528-9509-43CB-A003-9C5C11E96DD6}
{69A2C77D-6DB7-4AE4-B179-D1F5CF5E2DF0} = {43091528-9509-43CB-A003-9C5C11E96DD6}
{D789AEDB-EBDF-4450-8E8E-B4A03FB257B0} = {43091528-9509-43CB-A003-9C5C11E96DD6}
+ {0C81FC1C-5D2D-478A-9876-923A0C85EC2F} = {43091528-9509-43CB-A003-9C5C11E96DD6}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7CA41ED3-2CED-40CC-AA21-28C3B42B1E86}
diff --git a/demo/Semi.Avalonia.Demo.Android/App.axaml b/demo/Semi.Avalonia.Demo.Android/App.axaml
new file mode 100644
index 0000000..6387ef8
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/App.axaml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo.Android/App.axaml.cs b/demo/Semi.Avalonia.Demo.Android/App.axaml.cs
new file mode 100644
index 0000000..e68f7de
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/App.axaml.cs
@@ -0,0 +1,27 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Markup.Xaml;
+using Semi.Avalonia.Demo.Views;
+
+namespace Semi.Avalonia.Demo.Android;
+
+public partial class App : Application
+{
+ public override void Initialize()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public override void OnFrameworkInitializationCompleted()
+ {
+ if (ApplicationLifetime is ISingleViewApplicationLifetime single)
+ {
+ single.MainView = new MainView()
+ {
+
+ };
+ }
+ base.OnFrameworkInitializationCompleted();
+ }
+}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo.Android/MainActivity.cs b/demo/Semi.Avalonia.Demo.Android/MainActivity.cs
new file mode 100644
index 0000000..7906c4f
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/MainActivity.cs
@@ -0,0 +1,12 @@
+using Android.App;
+using Android.Content.PM;
+using Avalonia.Android;
+
+namespace Semi.Avalonia.Demo.Android;
+
+[Activity(Label = "Semi.Avalonia.Demo.Android", Icon = "@drawable/Icon", Theme = "@style/MyTheme.NoActionBar",
+ LaunchMode = LaunchMode.SingleTop, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize)]
+public class MainActivity : AvaloniaMainActivity
+{
+
+}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo.Android/Properties/AndroidManifest.xml b/demo/Semi.Avalonia.Demo.Android/Properties/AndroidManifest.xml
new file mode 100644
index 0000000..c20e124
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/Properties/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/demo/Semi.Avalonia.Demo.Android/Resources/drawable/Icon.png b/demo/Semi.Avalonia.Demo.Android/Resources/drawable/Icon.png
new file mode 100644
index 0000000..b5694aa
Binary files /dev/null and b/demo/Semi.Avalonia.Demo.Android/Resources/drawable/Icon.png differ
diff --git a/demo/Semi.Avalonia.Demo.Android/Resources/drawable/splash_screen.xml b/demo/Semi.Avalonia.Demo.Android/Resources/drawable/splash_screen.xml
new file mode 100644
index 0000000..b2a32f8
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/Resources/drawable/splash_screen.xml
@@ -0,0 +1,13 @@
+
+
+
+ -
+
+
+
+
+
+
diff --git a/demo/Semi.Avalonia.Demo.Android/Resources/values/colors.xml b/demo/Semi.Avalonia.Demo.Android/Resources/values/colors.xml
new file mode 100644
index 0000000..3f6ac02
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/Resources/values/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
diff --git a/demo/Semi.Avalonia.Demo.Android/Resources/values/styles.xml b/demo/Semi.Avalonia.Demo.Android/Resources/values/styles.xml
new file mode 100644
index 0000000..b184ab9
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/Resources/values/styles.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/Semi.Avalonia.Demo.Android/Semi.Avalonia.Demo.Android.csproj b/demo/Semi.Avalonia.Demo.Android/Semi.Avalonia.Demo.Android.csproj
new file mode 100644
index 0000000..ee9c799
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/Semi.Avalonia.Demo.Android.csproj
@@ -0,0 +1,23 @@
+
+
+ Exe
+ net7.0-android
+ 21
+ com.irihitech.Semi.Avalonia
+ 1
+ 1.0
+ apk
+ False
+ true
+ Semi.Avalonia.Demo.Android
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo.Android/SplashActivity.cs b/demo/Semi.Avalonia.Demo.Android/SplashActivity.cs
new file mode 100644
index 0000000..d5b8f09
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/SplashActivity.cs
@@ -0,0 +1,22 @@
+using Android.App;
+using Android.Content;
+using Avalonia;
+using Avalonia.Android;
+using Application = Android.App.Application;
+
+namespace Semi.Avalonia.Demo.Android;
+
+[Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
+public class SplashActivity: AvaloniaSplashActivity
+{
+ protected override AppBuilder CustomizeAppBuilder(AppBuilder builder)
+ {
+ return base.CustomizeAppBuilder(builder);
+ }
+
+ protected override void OnResume()
+ {
+ base.OnResume();
+ StartActivity(new Intent(Application.Context, typeof(MainActivity)));
+ }
+}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo.Android/Views/MainView.axaml b/demo/Semi.Avalonia.Demo.Android/Views/MainView.axaml
new file mode 100644
index 0000000..250500b
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/Views/MainView.axaml
@@ -0,0 +1,11 @@
+
+ Welcome to Avalonia!
+
diff --git a/demo/Semi.Avalonia.Demo.Android/Views/MainView.axaml.cs b/demo/Semi.Avalonia.Demo.Android/Views/MainView.axaml.cs
new file mode 100644
index 0000000..dfc7f2d
--- /dev/null
+++ b/demo/Semi.Avalonia.Demo.Android/Views/MainView.axaml.cs
@@ -0,0 +1,18 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace Semi.Avalonia.Demo.Android.Views;
+
+public partial class MainView : UserControl
+{
+ public MainView()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+}
\ No newline at end of file
diff --git a/src/Semi.Avalonia/Controls/Controls.axaml b/src/Semi.Avalonia/Controls/Controls.axaml
index 1da9b1c..c9813c7 100644
--- a/src/Semi.Avalonia/Controls/Controls.axaml
+++ b/src/Semi.Avalonia/Controls/Controls.axaml
@@ -19,6 +19,7 @@
+
diff --git a/src/Semi.Avalonia/Controls/EmbeddableControlRoot.axaml b/src/Semi.Avalonia/Controls/EmbeddableControlRoot.axaml
new file mode 100644
index 0000000..a0465d4
--- /dev/null
+++ b/src/Semi.Avalonia/Controls/EmbeddableControlRoot.axaml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Semi.Avalonia/Semi.Avalonia.csproj b/src/Semi.Avalonia/Semi.Avalonia.csproj
index 9c2e5a1..a7e7e62 100644
--- a/src/Semi.Avalonia/Semi.Avalonia.csproj
+++ b/src/Semi.Avalonia/Semi.Avalonia.csproj
@@ -1,6 +1,6 @@
-
+
Semi.Avalonia