{"id":16283473,"url":"https://github.com/damiansuess/test.animatesplash","last_synced_at":"2025-04-08T18:25:47.476Z","repository":{"id":143243138,"uuid":"330491576","full_name":"DamianSuess/Test.AnimateSplash","owner":"DamianSuess","description":"Animate your Xamarin.Forms splash screen with explosive transitions using MVVM and Prism.Forms","archived":false,"fork":false,"pushed_at":"2021-01-17T21:57:35.000Z","size":2421,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-14T14:42:41.861Z","etag":null,"topics":["animation","c-sharp","prism","prism-forms","prismlibrary","splash","splash-screen","splashscreen","suesslabs","xamarin-forms","xeno-innovations","xenoinc"],"latest_commit_sha":null,"homepage":"https://suesslabs.com","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DamianSuess.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-17T21:37:09.000Z","updated_at":"2024-11-19T17:56:40.000Z","dependencies_parsed_at":"2023-03-24T18:28:05.306Z","dependency_job_id":null,"html_url":"https://github.com/DamianSuess/Test.AnimateSplash","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DamianSuess%2FTest.AnimateSplash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DamianSuess%2FTest.AnimateSplash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DamianSuess%2FTest.AnimateSplash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DamianSuess%2FTest.AnimateSplash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DamianSuess","download_url":"https://codeload.github.com/DamianSuess/Test.AnimateSplash/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247900225,"owners_count":21015035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animation","c-sharp","prism","prism-forms","prismlibrary","splash","splash-screen","splashscreen","suesslabs","xamarin-forms","xeno-innovations","xenoinc"],"created_at":"2024-10-10T19:13:31.762Z","updated_at":"2025-04-08T18:25:47.457Z","avatar_url":"https://github.com/DamianSuess.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Xamarin.Forms Startup Animation\nThis lesson shows you how to create a light-weight startup animation after the Splash Screen using ``ScaleTo`` and ``FadeTo`` transitions in Xamarin.Forms.\n\n![](StartupAnimation.gif)\n\nWhen creating this project, I started from the base Prism.Forms project in Visual Studio 2019. This way, its easy for you to reproduce this on your own using the standard content.\n\n| Package | NuGet |\n|---------|-------|\n| [Xamarin.Forms](https://github.com/xamarin/Xamarin.Forms) |  |\n| [Prism.Forms](https://github.com/PrismLibrary/Prism) | [Prism.Forms](https://www.nuget.org/packages/Prism.Forms/) |\n| DryIoc | [Prism.DryIoc.Forms](https://www.nuget.org/packages/Prism.DryIoc.Forms/) |\n\nPrism is a framework for building loosely coupled, maintainable, and testable XAML applications.\n\n## Hiding Splash Animation Navigation\nAfter validating our animation, we need to hide UI stuff such as the Navigation Bar. To do so we need to add, ``NavigationPage.SethasNavigationBar(this, false);`` inside the constructor of our ``SplashPage.xml.cs`` file.\n\n```cs\npublic SplashPage()\n{\n  InitializeComponent();\n\n  // Hide navigation bar\n  NavigationPage.SetHasNavigationBar(this, false);\n}\n```\n\n## Further Mods\nTo hide status bar, we'll need to perform some native-side code.\n\n### Single Page Use\n**NOTE: THIS IS UNTESTED!!**\n\nCreate the IStatusBar interface in our client-side project\n```cs\npublic interface IStatusBar\n{\n  void HideStatusBar();\n  void ShowStatusBar();\n}\n```\n\nAndroid:\n```cs\npublic class StatusBarImplementation : IStatusBar\n{\n  WindowManagerFlags _originalFlags;\n\n  public void HideStatusBar()\n  {\n    var activity = (Activity)Forms.Context;\n    var attrs = activity.Window.Attributes;\n    _originalFlags = attrs.Flags;\n    attrs.Flags |= Android.Views.WindowManagerFlags.Fullscreen;\n    activity.Window.Attributes = attrs;\n  }\n  public void ShowStatusBar()\n  {\n    var activity = (Activity)Forms.Context;\n    var attrs = activity.Window.Attributes;\n    attrs.Flags = _originalFlags;\n    activity.Window.Attributes = attrs;\n  }\n}\n```\n\niOS:\n```cs\npublic class StatusBarImplementation : IStatusBar\n{\n  WindowManagerFlags _originalFlags;\n\n  public void HideStatusBar()\n  {\n    var activity = (Activity)Forms.Context;\n    var attrs = activity.Window.Attributes;\n    _originalFlags = attrs.Flags;\n    attrs.Flags |= Android.Views.WindowManagerFlags.Fullscreen;\n    activity.Window.Attributes = attrs;\n  }\n  public void ShowStatusBar()\n  {\n    var activity = (Activity)Forms.Context;\n    var attrs = activity.Window.Attributes;\n    attrs.Flags = _originalFlags;\n    activity.Window.Attributes = attrs;\n  }\n}\n```\n\nInside our SplashPage\n```cs\n// to hide\nDependencyService.Get\u003cIStatusBar\u003e().HideStatusBar();\n// to show\nDependencyService.Get\u003cIStatusBar\u003e().ShowStatusBar();\n```\n\n#### References\nThis code snip was borrowed from a StackOverflow discussion on [Hide StatusBar for Specific ContentPage](https://stackoverflow.com/questions/36449480/hide-statusbar-for-specific-contentpage) [2](https://medium.com/@fairushyn/how-to-hide-status-bar-for-specific-content-page-in-xamarin-d8d02a00f18c)\n\n### For the whole app\n\nFor Android it would be the following in the Activity's OnCreate (_i.e. ``MainActivity``_):\n```cs\nthis.Window.AddFlags(WindowManagerFlags.Fullscreen); //to show\nthis.Window.ClearFlags(WindowManagerFlags.Fullscreen); //to hide\n```\n\nAnd for iOS, you'd open your ``Info.plist`` and add the following lines:\n```xml\n\u003ckey\u003eUIStatusBarHidden\u003c/key\u003e\u003ctrue/\u003e\n\u003ckey\u003eUIViewControllerBasedStatusBarAppearance\u003c/key\u003e\u003cfalse/\u003e\n```\n\n\n## Without Prism\n\nFor use with standard Xamarin Navigation stack, check out this article at [Mallibone.com](https://mallibone.com/post/lets-improve-that-xamarin-forms-startup-experience)\n\n_image from mallibon.com_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamiansuess%2Ftest.animatesplash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdamiansuess%2Ftest.animatesplash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamiansuess%2Ftest.animatesplash/lists"}