├── .gitignore ├── LICENSE ├── README.md ├── UsingAbstractedMixedProjects ├── README.md ├── build.cake ├── build.ps1 ├── build.sh ├── library │ ├── Library.Android │ │ ├── Library.Android.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Resources │ │ │ └── Resource.Designer.cs │ │ └── ScreenImplementation.cs │ ├── Library.NetStandard │ │ └── Library.NetStandard.csproj │ ├── Library.UWP │ │ ├── Library.UWP.csproj │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── Library.UWP.rd.xml │ │ └── ScreenImplementation.cs │ ├── Library.iOS │ │ ├── Library.iOS.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── ScreenImplementation.cs │ ├── Library.sln │ └── Library │ │ ├── IScreen.cs │ │ ├── Library.projitems │ │ ├── Library.shproj │ │ ├── Screen.cs │ │ ├── ScreenExtensions.cs │ │ └── ScreenProperties.cs ├── nuget │ └── Package.nuspec └── sample │ ├── SampleApp.Android │ ├── Assets │ │ └── AboutAssets.txt │ ├── MainActivity.cs │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Resource.designer.cs │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ ├── drawable-xhdpi │ │ │ └── icon.png │ │ ├── drawable-xxhdpi │ │ │ └── icon.png │ │ ├── drawable │ │ │ └── icon.png │ │ ├── layout │ │ │ ├── Main.axml │ │ │ ├── Tabbar.axml │ │ │ └── Toolbar.axml │ │ ├── mipmap-hdpi │ │ │ └── Icon.png │ │ ├── mipmap-mdpi │ │ │ └── Icon.png │ │ ├── mipmap-xhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxxhdpi │ │ │ └── Icon.png │ │ └── values │ │ │ ├── Strings.xml │ │ │ └── styles.xml │ └── SampleApp.Android.csproj │ ├── SampleApp.UWP │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── LockScreenLogo.scale-100.png │ │ ├── LockScreenLogo.scale-125.png │ │ ├── LockScreenLogo.scale-150.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── LockScreenLogo.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-125.png │ │ ├── Square150x150Logo.scale-150.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-256_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-32_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-48_altform-unplated.png │ │ ├── StoreLogo.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-125.png │ │ ├── Wide310x150Logo.scale-150.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Wide310x150Logo.scale-400.png │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ └── SampleApp.UWP.csproj │ ├── SampleApp.iOS │ ├── AppDelegate.cs │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Default-568h@2x.png │ │ ├── Default-Portrait.png │ │ ├── Default-Portrait@2x.png │ │ ├── Default.png │ │ ├── Default@2x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small-40.png │ │ ├── Icon-Small-40@2x.png │ │ ├── Icon-Small-40@3x.png │ │ ├── Icon-Small.png │ │ ├── Icon-Small@2x.png │ │ ├── Icon-Small@3x.png │ │ └── LaunchScreen.storyboard │ ├── SampleApp.iOS.csproj │ └── packages.config │ ├── SampleApp.sln │ └── SampleApp │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ └── SampleApp.csproj ├── UsingAbstractionProjects ├── README.md ├── build.cake ├── build.ps1 ├── build.sh ├── library │ ├── Library.Abstractions │ │ ├── IScreen.cs │ │ ├── Library.Abstractions.csproj │ │ ├── ScreenExtensions.cs │ │ └── ScreenProperties.cs │ ├── Library.Android │ │ ├── Library.Android.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Resources │ │ │ └── Resource.Designer.cs │ │ └── ScreenImplementation.cs │ ├── Library.NetStandard │ │ └── Library.NetStandard.csproj │ ├── Library.UWP │ │ ├── Library.UWP.csproj │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── Library.UWP.rd.xml │ │ └── ScreenImplementation.cs │ ├── Library.iOS │ │ ├── Library.iOS.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── ScreenImplementation.cs │ ├── Library.sln │ └── Library │ │ ├── Library.projitems │ │ ├── Library.shproj │ │ └── Screen.cs ├── nuget │ └── Package.nuspec └── sample │ ├── SampleApp.Android │ ├── Assets │ │ └── AboutAssets.txt │ ├── MainActivity.cs │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Resource.designer.cs │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ ├── drawable-xhdpi │ │ │ └── icon.png │ │ ├── drawable-xxhdpi │ │ │ └── icon.png │ │ ├── drawable │ │ │ └── icon.png │ │ ├── layout │ │ │ ├── Main.axml │ │ │ ├── Tabbar.axml │ │ │ └── Toolbar.axml │ │ ├── mipmap-hdpi │ │ │ └── Icon.png │ │ ├── mipmap-mdpi │ │ │ └── Icon.png │ │ ├── mipmap-xhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxxhdpi │ │ │ └── Icon.png │ │ └── values │ │ │ ├── Strings.xml │ │ │ └── styles.xml │ └── SampleApp.Android.csproj │ ├── SampleApp.UWP │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── LockScreenLogo.scale-100.png │ │ ├── LockScreenLogo.scale-125.png │ │ ├── LockScreenLogo.scale-150.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── LockScreenLogo.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-125.png │ │ ├── Square150x150Logo.scale-150.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-256_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-32_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-48_altform-unplated.png │ │ ├── StoreLogo.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-125.png │ │ ├── Wide310x150Logo.scale-150.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Wide310x150Logo.scale-400.png │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ └── SampleApp.UWP.csproj │ ├── SampleApp.iOS │ ├── AppDelegate.cs │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Default-568h@2x.png │ │ ├── Default-Portrait.png │ │ ├── Default-Portrait@2x.png │ │ ├── Default.png │ │ ├── Default@2x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small-40.png │ │ ├── Icon-Small-40@2x.png │ │ ├── Icon-Small-40@3x.png │ │ ├── Icon-Small.png │ │ ├── Icon-Small@2x.png │ │ ├── Icon-Small@3x.png │ │ └── LaunchScreen.storyboard │ ├── SampleApp.iOS.csproj │ └── packages.config │ ├── SampleApp.sln │ └── SampleApp │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ └── SampleApp.csproj ├── UsingGeneratedProjects ├── README.md ├── build.cake ├── build.ps1 ├── build.sh ├── library │ ├── Library.Android │ │ ├── Library.Android.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Resources │ │ │ └── Resource.Designer.cs │ │ └── Screen.Platform.cs │ ├── Library.Generated.sln │ ├── Library.NetStandard │ │ └── Library.NetStandard.csproj │ ├── Library.UWP │ │ ├── Library.UWP.csproj │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── Library.UWP.rd.xml │ │ └── Screen.Platform.cs │ ├── Library.iOS │ │ ├── Library.iOS.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── Screen.Platform.cs │ ├── Library.sln │ └── Library │ │ ├── Library.projitems │ │ ├── Library.shproj │ │ ├── Screen.cs │ │ └── ScreenProperties.cs ├── nuget │ └── Package.nuspec └── sample │ ├── SampleApp.Android │ ├── Assets │ │ └── AboutAssets.txt │ ├── MainActivity.cs │ ├── MyApplication.cs │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Resource.designer.cs │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ ├── drawable-xhdpi │ │ │ └── icon.png │ │ ├── drawable-xxhdpi │ │ │ └── icon.png │ │ ├── drawable │ │ │ └── icon.png │ │ ├── layout │ │ │ ├── Main.axml │ │ │ ├── Tabbar.axml │ │ │ └── Toolbar.axml │ │ ├── mipmap-hdpi │ │ │ └── Icon.png │ │ ├── mipmap-mdpi │ │ │ └── Icon.png │ │ ├── mipmap-xhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxxhdpi │ │ │ └── Icon.png │ │ └── values │ │ │ ├── Strings.xml │ │ │ └── styles.xml │ └── SampleApp.Android.csproj │ ├── SampleApp.UWP │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── LockScreenLogo.scale-100.png │ │ ├── LockScreenLogo.scale-125.png │ │ ├── LockScreenLogo.scale-150.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── LockScreenLogo.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-125.png │ │ ├── Square150x150Logo.scale-150.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-256_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-32_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-48_altform-unplated.png │ │ ├── StoreLogo.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-125.png │ │ ├── Wide310x150Logo.scale-150.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Wide310x150Logo.scale-400.png │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ └── SampleApp.UWP.csproj │ ├── SampleApp.iOS │ ├── AppDelegate.cs │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Default-568h@2x.png │ │ ├── Default-Portrait.png │ │ ├── Default-Portrait@2x.png │ │ ├── Default.png │ │ ├── Default@2x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small-40.png │ │ ├── Icon-Small-40@2x.png │ │ ├── Icon-Small-40@3x.png │ │ ├── Icon-Small.png │ │ ├── Icon-Small@2x.png │ │ ├── Icon-Small@3x.png │ │ └── LaunchScreen.storyboard │ ├── SampleApp.iOS.csproj │ └── packages.config │ ├── SampleApp.sln │ └── SampleApp │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ └── SampleApp.csproj ├── UsingMixedProjects ├── README.md ├── build.cake ├── build.ps1 ├── build.sh ├── library │ ├── Library.Android │ │ ├── Library.Android.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Resources │ │ │ └── Resource.Designer.cs │ │ └── ScreenImplementation.cs │ ├── Library.NetStandard │ │ ├── Library.NetStandard.csproj │ │ └── ScreenImplementation.cs │ ├── Library.UWP │ │ ├── Library.UWP.csproj │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── Library.UWP.rd.xml │ │ └── ScreenImplementation.cs │ ├── Library.iOS │ │ ├── Library.iOS.csproj │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── ScreenImplementation.cs │ ├── Library.sln │ └── Library │ │ ├── Library.projitems │ │ ├── Library.shproj │ │ ├── Screen.cs │ │ └── ScreenProperties.cs ├── nuget │ └── Package.nuspec └── sample │ ├── SampleApp.Android │ ├── Assets │ │ └── AboutAssets.txt │ ├── MainActivity.cs │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Resource.designer.cs │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ ├── drawable-xhdpi │ │ │ └── icon.png │ │ ├── drawable-xxhdpi │ │ │ └── icon.png │ │ ├── drawable │ │ │ └── icon.png │ │ ├── layout │ │ │ ├── Main.axml │ │ │ ├── Tabbar.axml │ │ │ └── Toolbar.axml │ │ ├── mipmap-hdpi │ │ │ └── Icon.png │ │ ├── mipmap-mdpi │ │ │ └── Icon.png │ │ ├── mipmap-xhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxxhdpi │ │ │ └── Icon.png │ │ └── values │ │ │ ├── Strings.xml │ │ │ └── styles.xml │ └── SampleApp.Android.csproj │ ├── SampleApp.UWP │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── LockScreenLogo.scale-100.png │ │ ├── LockScreenLogo.scale-125.png │ │ ├── LockScreenLogo.scale-150.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── LockScreenLogo.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-125.png │ │ ├── Square150x150Logo.scale-150.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-256_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-32_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-48_altform-unplated.png │ │ ├── StoreLogo.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-125.png │ │ ├── Wide310x150Logo.scale-150.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Wide310x150Logo.scale-400.png │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ └── SampleApp.UWP.csproj │ ├── SampleApp.iOS │ ├── AppDelegate.cs │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Default-568h@2x.png │ │ ├── Default-Portrait.png │ │ ├── Default-Portrait@2x.png │ │ ├── Default.png │ │ ├── Default@2x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small-40.png │ │ ├── Icon-Small-40@2x.png │ │ ├── Icon-Small-40@3x.png │ │ ├── Icon-Small.png │ │ ├── Icon-Small@2x.png │ │ ├── Icon-Small@3x.png │ │ └── LaunchScreen.storyboard │ ├── SampleApp.iOS.csproj │ └── packages.config │ ├── SampleApp.sln │ └── SampleApp │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ └── SampleApp.csproj ├── UsingMultiTargeting ├── README.md ├── build.cake ├── build.ps1 ├── build.sh ├── library │ ├── Library.sln │ └── Library │ │ ├── Library.csproj │ │ ├── Screen.cs │ │ └── ScreenProperties.cs └── sample │ ├── SampleApp.Android │ ├── Assets │ │ └── AboutAssets.txt │ ├── MainActivity.cs │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Resource.designer.cs │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ ├── drawable-xhdpi │ │ │ └── icon.png │ │ ├── drawable-xxhdpi │ │ │ └── icon.png │ │ ├── drawable │ │ │ └── icon.png │ │ ├── layout │ │ │ ├── Main.axml │ │ │ ├── Tabbar.axml │ │ │ └── Toolbar.axml │ │ ├── mipmap-hdpi │ │ │ └── Icon.png │ │ ├── mipmap-mdpi │ │ │ └── Icon.png │ │ ├── mipmap-xhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxhdpi │ │ │ └── Icon.png │ │ ├── mipmap-xxxhdpi │ │ │ └── Icon.png │ │ └── values │ │ │ ├── Strings.xml │ │ │ └── styles.xml │ └── SampleApp.Android.csproj │ ├── SampleApp.UWP │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── LockScreenLogo.scale-100.png │ │ ├── LockScreenLogo.scale-125.png │ │ ├── LockScreenLogo.scale-150.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── LockScreenLogo.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-125.png │ │ ├── Square150x150Logo.scale-150.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-256_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-32_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-48_altform-unplated.png │ │ ├── StoreLogo.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-125.png │ │ ├── Wide310x150Logo.scale-150.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Wide310x150Logo.scale-400.png │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ └── SampleApp.UWP.csproj │ ├── SampleApp.iOS │ ├── AppDelegate.cs │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Resources │ │ ├── Default-568h@2x.png │ │ ├── Default-Portrait.png │ │ ├── Default-Portrait@2x.png │ │ ├── Default.png │ │ ├── Default@2x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small-40.png │ │ ├── Icon-Small-40@2x.png │ │ ├── Icon-Small-40@3x.png │ │ ├── Icon-Small.png │ │ ├── Icon-Small@2x.png │ │ ├── Icon-Small@3x.png │ │ └── LaunchScreen.storyboard │ ├── SampleApp.iOS.csproj │ └── packages.config │ ├── SampleApp.sln │ └── SampleApp │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ └── SampleApp.csproj └── UsingSharedProjects ├── README.md ├── build.cake ├── build.ps1 ├── build.sh ├── library ├── Library.Android │ ├── Library.Android.csproj │ ├── Properties │ │ └── AssemblyInfo.cs │ └── Resources │ │ └── Resource.Designer.cs ├── Library.NetStandard │ └── Library.NetStandard.csproj ├── Library.UWP │ ├── Library.UWP.csproj │ └── Properties │ │ ├── AssemblyInfo.cs │ │ └── Library.UWP.rd.xml ├── Library.iOS │ ├── Library.iOS.csproj │ └── Properties │ │ └── AssemblyInfo.cs ├── Library.sln └── Library │ ├── Library.projitems │ ├── Library.shproj │ ├── Screen.cs │ └── ScreenProperties.cs ├── nuget └── Package.nuspec └── sample ├── SampleApp.Android ├── Assets │ └── AboutAssets.txt ├── MainActivity.cs ├── Properties │ ├── AndroidManifest.xml │ └── AssemblyInfo.cs ├── Resources │ ├── Resource.designer.cs │ ├── drawable-hdpi │ │ └── icon.png │ ├── drawable-xhdpi │ │ └── icon.png │ ├── drawable-xxhdpi │ │ └── icon.png │ ├── drawable │ │ └── icon.png │ ├── layout │ │ ├── Main.axml │ │ ├── Tabbar.axml │ │ └── Toolbar.axml │ ├── mipmap-hdpi │ │ └── Icon.png │ ├── mipmap-mdpi │ │ └── Icon.png │ ├── mipmap-xhdpi │ │ └── Icon.png │ ├── mipmap-xxhdpi │ │ └── Icon.png │ ├── mipmap-xxxhdpi │ │ └── Icon.png │ └── values │ │ ├── Strings.xml │ │ └── styles.xml └── SampleApp.Android.csproj ├── SampleApp.UWP ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── LockScreenLogo.scale-100.png │ ├── LockScreenLogo.scale-125.png │ ├── LockScreenLogo.scale-150.png │ ├── LockScreenLogo.scale-200.png │ ├── LockScreenLogo.scale-400.png │ ├── SplashScreen.scale-100.png │ ├── SplashScreen.scale-125.png │ ├── SplashScreen.scale-150.png │ ├── SplashScreen.scale-200.png │ ├── SplashScreen.scale-400.png │ ├── Square150x150Logo.scale-100.png │ ├── Square150x150Logo.scale-125.png │ ├── Square150x150Logo.scale-150.png │ ├── Square150x150Logo.scale-200.png │ ├── Square150x150Logo.scale-400.png │ ├── Square44x44Logo.scale-100.png │ ├── Square44x44Logo.scale-125.png │ ├── Square44x44Logo.scale-150.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.scale-400.png │ ├── Square44x44Logo.targetsize-16_altform-unplated.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── Square44x44Logo.targetsize-256_altform-unplated.png │ ├── Square44x44Logo.targetsize-32_altform-unplated.png │ ├── Square44x44Logo.targetsize-48_altform-unplated.png │ ├── StoreLogo.png │ ├── Wide310x150Logo.scale-100.png │ ├── Wide310x150Logo.scale-125.png │ ├── Wide310x150Logo.scale-150.png │ ├── Wide310x150Logo.scale-200.png │ └── Wide310x150Logo.scale-400.png ├── MainPage.xaml ├── MainPage.xaml.cs ├── Package.appxmanifest ├── Properties │ ├── AssemblyInfo.cs │ └── Default.rd.xml └── SampleApp.UWP.csproj ├── SampleApp.iOS ├── AppDelegate.cs ├── Entitlements.plist ├── Info.plist ├── Main.cs ├── Properties │ └── AssemblyInfo.cs ├── Resources │ ├── Default-568h@2x.png │ ├── Default-Portrait.png │ ├── Default-Portrait@2x.png │ ├── Default.png │ ├── Default@2x.png │ ├── Icon-60@2x.png │ ├── Icon-60@3x.png │ ├── Icon-76.png │ ├── Icon-76@2x.png │ ├── Icon-Small-40.png │ ├── Icon-Small-40@2x.png │ ├── Icon-Small-40@3x.png │ ├── Icon-Small.png │ ├── Icon-Small@2x.png │ ├── Icon-Small@3x.png │ └── LaunchScreen.storyboard ├── SampleApp.iOS.csproj └── packages.config ├── SampleApp.sln └── SampleApp ├── App.xaml ├── App.xaml.cs ├── MainPage.xaml ├── MainPage.xaml.cs └── SampleApp.csproj /UsingAbstractedMixedProjects/library/Library.Android/Resources/Resource.Designer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattleibow/CreatingPlatformPlugins/c65a3b88906026e892804ba9e02cd0d7b608be08/UsingAbstractedMixedProjects/library/Library.Android/Resources/Resource.Designer.cs -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/library/Library.Android/ScreenImplementation.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content; 3 | using Android.Runtime; 4 | using Android.Util; 5 | using Android.Views; 6 | 7 | namespace Library 8 | { 9 | internal class ScreenImplementation : IScreen 10 | { 11 | public ScreenProperties GetProperties() 12 | { 13 | var wm = Application.Context.GetSystemService(Context.WindowService).JavaCast(); 14 | var dm = new DisplayMetrics(); 15 | wm.DefaultDisplay.GetMetrics(dm); 16 | return new ScreenProperties 17 | { 18 | Density = dm.Density, 19 | PixelWidth = dm.WidthPixels, 20 | PixelHeight = dm.HeightPixels, 21 | }; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/library/Library.NetStandard/Library.NetStandard.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard1.0 5 | Library 6 | Library 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/library/Library.UWP/ScreenImplementation.cs: -------------------------------------------------------------------------------- 1 | using Windows.Foundation.Metadata; 2 | using Windows.Graphics.Display; 3 | 4 | namespace Library 5 | { 6 | internal class ScreenImplementation : IScreen 7 | { 8 | public ScreenProperties GetProperties() 9 | { 10 | var di = DisplayInformation.GetForCurrentView(); 11 | var properties = new ScreenProperties 12 | { 13 | Density = di.RawPixelsPerViewPixel 14 | }; 15 | if (ApiInformation.IsPropertyPresent(typeof(DisplayInformation).FullName, nameof(DisplayInformation.ScreenWidthInRawPixels))) 16 | { 17 | properties.PixelWidth = (int)di.ScreenWidthInRawPixels; 18 | properties.PixelHeight = (int)di.ScreenHeightInRawPixels; 19 | } 20 | return properties; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/library/Library.iOS/ScreenImplementation.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace Library 4 | { 5 | internal class ScreenImplementation : IScreen 6 | { 7 | public ScreenProperties GetProperties() 8 | { 9 | var scale = UIScreen.MainScreen.Scale; 10 | var scaledSize = UIScreen.MainScreen.Bounds; 11 | return new ScreenProperties 12 | { 13 | Density = scale, 14 | PixelWidth = (int)(scaledSize.Width * scale), 15 | PixelHeight = (int)(scaledSize.Height * scale), 16 | }; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/library/Library/IScreen.cs: -------------------------------------------------------------------------------- 1 | namespace Library 2 | { 3 | public interface IScreen 4 | { 5 | ScreenProperties GetProperties(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/library/Library/Screen.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Library 4 | { 5 | public static class Screen 6 | { 7 | #if NETSTANDARD1_0 8 | public static IScreen Instance => throw new PlatformNotSupportedException(); 9 | #else 10 | private static Lazy instance = new Lazy(() => new ScreenImplementation()); 11 | 12 | public static IScreen Instance => instance.Value; 13 | #endif 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/library/Library/ScreenExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace Library 2 | { 3 | public static class ScreenExtensions 4 | { 5 | public static double GetDensity(this IScreen screen) 6 | { 7 | return screen.GetProperties().Density; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/library/Library/ScreenProperties.cs: -------------------------------------------------------------------------------- 1 | namespace Library 2 | { 3 | public struct ScreenProperties 4 | { 5 | public int PixelWidth { get; internal set; } 6 | 7 | public int PixelHeight { get; internal set; } 8 | 9 | public double Density { get; internal set; } 10 | 11 | public int Width => (int)(PixelWidth / Density); 12 | 13 | public int Height => (int)(PixelHeight / Density); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/sample/SampleApp.Android/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with you package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Activity 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/sample/SampleApp.Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content.PM; 3 | using Android.OS; 4 | 5 | namespace SampleApp.Droid 6 | { 7 | [Activity(Label = "SampleApp", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 8 | public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity 9 | { 10 | protected override void OnCreate(Bundle bundle) 11 | { 12 | TabLayoutResource = Resource.Layout.Tabbar; 13 | ToolbarResource = Resource.Layout.Toolbar; 14 | 15 | base.OnCreate(bundle); 16 | 17 | global::Xamarin.Forms.Forms.Init(this, bundle); 18 | LoadApplication(new App()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/sample/SampleApp.Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/sample/SampleApp.Android/Resources/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattleibow/CreatingPlatformPlugins/c65a3b88906026e892804ba9e02cd0d7b608be08/UsingAbstractedMixedProjects/sample/SampleApp.Android/Resources/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/sample/SampleApp.Android/Resources/drawable-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattleibow/CreatingPlatformPlugins/c65a3b88906026e892804ba9e02cd0d7b608be08/UsingAbstractedMixedProjects/sample/SampleApp.Android/Resources/drawable-xhdpi/icon.png -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/sample/SampleApp.Android/Resources/drawable-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattleibow/CreatingPlatformPlugins/c65a3b88906026e892804ba9e02cd0d7b608be08/UsingAbstractedMixedProjects/sample/SampleApp.Android/Resources/drawable-xxhdpi/icon.png -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/sample/SampleApp.Android/Resources/drawable/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattleibow/CreatingPlatformPlugins/c65a3b88906026e892804ba9e02cd0d7b608be08/UsingAbstractedMixedProjects/sample/SampleApp.Android/Resources/drawable/icon.png -------------------------------------------------------------------------------- /UsingAbstractedMixedProjects/sample/SampleApp.Android/Resources/layout/Main.axml: -------------------------------------------------------------------------------- 1 |  2 | 3 |