diff --git a/Clone Android Screenshot 1.png b/Clone Android Screenshot 1.png new file mode 100755 index 0000000..65a74c3 Binary files /dev/null and b/Clone Android Screenshot 1.png differ diff --git a/Clone Android Screenshot 2.png b/Clone Android Screenshot 2.png new file mode 100755 index 0000000..4fff991 Binary files /dev/null and b/Clone Android Screenshot 2.png differ diff --git a/Clone iOS Screenshot 1.png b/Clone iOS Screenshot 1.png new file mode 100644 index 0000000..d5fea9b Binary files /dev/null and b/Clone iOS Screenshot 1.png differ diff --git a/Clone iOS Screenshot 2.png b/Clone iOS Screenshot 2.png new file mode 100644 index 0000000..cf3f49c Binary files /dev/null and b/Clone iOS Screenshot 2.png differ diff --git a/Notes.md b/Notes.md new file mode 100644 index 0000000..c16d97d --- /dev/null +++ b/Notes.md @@ -0,0 +1,27 @@ +# TV Time clone + +- https://itunes.apple.com/us/app/tv-time-track-what-you-watch/id431065232?mt=8 +- https://play.google.com/store/apps/details?id=com.tozelabs.tvshowtime&hl=en + +## Notes +- In Material the Frame had no shadow by default so I had to build a custom visual renderer to reproduce the shadow effect. +- CollectionView is powerful!!! +- Button's shadow was great still I'd like to be able to edit the elevation without a custom renderer or effect. +- Liked the fact that I could use custom visual and that I could swap between Default and Material. + +## Screenshots + +### Original TV Time App iOS +![Original Screenshot 1](https://raw.githubusercontent.com/xerx/VisualChallenge/master/TV%20Time%20Screenshot%201.jpg) +----------------------------------------------------------------------- +![Original Screenshot 2](https://raw.githubusercontent.com/xerx/VisualChallenge/master/TV%20Time%20Screenshot%202.JPG) + +### Clone Android +![Android Screenshot 1](https://raw.githubusercontent.com/xerx/VisualChallenge/master/Clone%20Android%20Screenshot%201.png) +----------------------------------------------------------------------- +![Android Screenshot 2](https://raw.githubusercontent.com/xerx/VisualChallenge/master/Clone%20Android%20Screenshot%202.png) + +### Clone iOS +![iOS Screenshot 1](https://raw.githubusercontent.com/xerx/VisualChallenge/master/Clone%20iOS%20Screenshot%201.png) +----------------------------------------------------------------------- +![iOS Screenshot 2](https://raw.githubusercontent.com/xerx/VisualChallenge/master/Clone%20iOS%20Screenshot%202.png) diff --git a/TV Time Screenshot 1.jpg b/TV Time Screenshot 1.jpg new file mode 100644 index 0000000..c8a69a4 Binary files /dev/null and b/TV Time Screenshot 1.jpg differ diff --git a/TV Time Screenshot 2.JPG b/TV Time Screenshot 2.JPG new file mode 100644 index 0000000..5d4fa94 Binary files /dev/null and b/TV Time Screenshot 2.JPG differ diff --git a/VisualChallenge/VisualChallenge.Android/Renderers/FrameRendererDroid.cs b/VisualChallenge/VisualChallenge.Android/Renderers/FrameRendererDroid.cs new file mode 100644 index 0000000..0db4b99 --- /dev/null +++ b/VisualChallenge/VisualChallenge.Android/Renderers/FrameRendererDroid.cs @@ -0,0 +1,25 @@ +using System; +using Xamarin.Forms; +using Xamarin.Forms.Platform.Android; +using VisualChallenge.Droid.Renderers; +using VisualChallenge; +using Android.Content; +using Android.Graphics.Drawables; + +[assembly: ExportRenderer(typeof(Frame), typeof(FrameRendererDroid), new[] { typeof(CustomVisual) })] +namespace VisualChallenge.Droid.Renderers +{ + public class FrameRendererDroid : FrameRenderer + { + public FrameRendererDroid(Context context) : base(context) + { + } + + protected override void OnElementChanged(ElementChangedEventArgs e) + { + base.OnElementChanged(e); + ViewGroup.SetBackgroundResource(Resource.Drawable.shadow_frame); + ViewGroup.Elevation = 22; + } + } +} diff --git a/VisualChallenge/VisualChallenge.Android/Resources/Resource.designer.cs b/VisualChallenge/VisualChallenge.Android/Resources/Resource.designer.cs index 1f086b3..6c2aea4 100644 --- a/VisualChallenge/VisualChallenge.Android/Resources/Resource.designer.cs +++ b/VisualChallenge/VisualChallenge.Android/Resources/Resource.designer.cs @@ -8196,26 +8196,26 @@ public partial class Drawable // aapt resource value: 0x7f020054 public const int avd_hide_password = 2130837588; - // aapt resource value: 0x7f020139 - public const int avd_hide_password_1 = 2130837817; - // aapt resource value: 0x7f02013a - public const int avd_hide_password_2 = 2130837818; + public const int avd_hide_password_1 = 2130837818; // aapt resource value: 0x7f02013b - public const int avd_hide_password_3 = 2130837819; + public const int avd_hide_password_2 = 2130837819; + + // aapt resource value: 0x7f02013c + public const int avd_hide_password_3 = 2130837820; // aapt resource value: 0x7f020055 public const int avd_show_password = 2130837589; - // aapt resource value: 0x7f02013c - public const int avd_show_password_1 = 2130837820; - // aapt resource value: 0x7f02013d - public const int avd_show_password_2 = 2130837821; + public const int avd_show_password_1 = 2130837821; // aapt resource value: 0x7f02013e - public const int avd_show_password_3 = 2130837822; + public const int avd_show_password_2 = 2130837822; + + // aapt resource value: 0x7f02013f + public const int avd_show_password_3 = 2130837823; // aapt resource value: 0x7f020056 public const int design_bottom_navigation_item_background = 2130837590; @@ -8877,11 +8877,11 @@ public partial class Drawable // aapt resource value: 0x7f020131 public const int notification_icon_background = 2130837809; - // aapt resource value: 0x7f020137 - public const int notification_template_icon_bg = 2130837815; - // aapt resource value: 0x7f020138 - public const int notification_template_icon_low_bg = 2130837816; + public const int notification_template_icon_bg = 2130837816; + + // aapt resource value: 0x7f020139 + public const int notification_template_icon_low_bg = 2130837817; // aapt resource value: 0x7f020132 public const int notification_tile_bg = 2130837810; @@ -8890,13 +8890,16 @@ public partial class Drawable public const int notify_panel_notification_icon_bg = 2130837811; // aapt resource value: 0x7f020134 - public const int tooltip_frame_dark = 2130837812; + public const int shadow_frame = 2130837812; // aapt resource value: 0x7f020135 - public const int tooltip_frame_light = 2130837813; + public const int tooltip_frame_dark = 2130837813; // aapt resource value: 0x7f020136 - public const int xamagon_preview = 2130837814; + public const int tooltip_frame_light = 2130837814; + + // aapt resource value: 0x7f020137 + public const int xamagon_preview = 2130837815; static Drawable() { diff --git a/VisualChallenge/VisualChallenge.Android/Resources/drawable/ic_settings.png b/VisualChallenge/VisualChallenge.Android/Resources/drawable/ic_settings.png new file mode 100644 index 0000000..3795328 Binary files /dev/null and b/VisualChallenge/VisualChallenge.Android/Resources/drawable/ic_settings.png differ diff --git a/VisualChallenge/VisualChallenge.Android/Resources/drawable/shadow_frame.xml b/VisualChallenge/VisualChallenge.Android/Resources/drawable/shadow_frame.xml new file mode 100644 index 0000000..91da220 --- /dev/null +++ b/VisualChallenge/VisualChallenge.Android/Resources/drawable/shadow_frame.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/VisualChallenge/VisualChallenge.Android/VisualChallenge.Android.csproj b/VisualChallenge/VisualChallenge.Android/VisualChallenge.Android.csproj index e209480..e94da74 100644 --- a/VisualChallenge/VisualChallenge.Android/VisualChallenge.Android.csproj +++ b/VisualChallenge/VisualChallenge.Android/VisualChallenge.Android.csproj @@ -57,6 +57,7 @@ + @@ -85,6 +86,7 @@ + @@ -93,5 +95,8 @@ VisualChallenge + + + \ No newline at end of file diff --git a/VisualChallenge/VisualChallenge.iOS/Renderers/FrameRendererIos.cs b/VisualChallenge/VisualChallenge.iOS/Renderers/FrameRendererIos.cs new file mode 100644 index 0000000..0a74050 --- /dev/null +++ b/VisualChallenge/VisualChallenge.iOS/Renderers/FrameRendererIos.cs @@ -0,0 +1,23 @@ +using System; +using VisualChallenge; +using VisualChallenge.iOS.Renderers; +using Xamarin.Forms; +using Xamarin.Forms.Platform.iOS; +using CoreGraphics; + +[assembly:ExportRenderer(typeof(Frame), typeof(FrameRendererIos), new[] { typeof(CustomVisual) })] +namespace VisualChallenge.iOS.Renderers +{ + public class FrameRendererIos : FrameRenderer + { + protected override void OnElementChanged(ElementChangedEventArgs e) + { + base.OnElementChanged(e); + if(Layer != null) + { + Layer.ShadowRadius = 8f; + Layer.ShadowColor = Color.Silver.ToCGColor(); + } + } + } +} diff --git a/VisualChallenge/VisualChallenge.iOS/VisualChallenge.iOS.csproj b/VisualChallenge/VisualChallenge.iOS/VisualChallenge.iOS.csproj index d711192..fa85caf 100644 --- a/VisualChallenge/VisualChallenge.iOS/VisualChallenge.iOS.csproj +++ b/VisualChallenge/VisualChallenge.iOS/VisualChallenge.iOS.csproj @@ -70,6 +70,7 @@ + @@ -144,4 +145,7 @@ VisualChallenge + + + \ No newline at end of file diff --git a/VisualChallenge/VisualChallenge/CustomVisual.cs b/VisualChallenge/VisualChallenge/CustomVisual.cs new file mode 100644 index 0000000..0334bad --- /dev/null +++ b/VisualChallenge/VisualChallenge/CustomVisual.cs @@ -0,0 +1,11 @@ +using System; +using Xamarin.Forms; +namespace VisualChallenge +{ + public class CustomVisual : IVisual + { + public CustomVisual() + { + } + } +} diff --git a/VisualChallenge/VisualChallenge/Resources/cover_photo.jpg b/VisualChallenge/VisualChallenge/Resources/cover_photo.jpg new file mode 100644 index 0000000..3ee899e Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/cover_photo.jpg differ diff --git a/VisualChallenge/VisualChallenge/Resources/dark.jpg b/VisualChallenge/VisualChallenge/Resources/dark.jpg new file mode 100644 index 0000000..7d2b1a4 Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/dark.jpg differ diff --git a/VisualChallenge/VisualChallenge/Resources/ic_bell.png b/VisualChallenge/VisualChallenge/Resources/ic_bell.png new file mode 100644 index 0000000..80dd932 Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/ic_bell.png differ diff --git a/VisualChallenge/VisualChallenge/Resources/ic_help.png b/VisualChallenge/VisualChallenge/Resources/ic_help.png new file mode 100644 index 0000000..84c9016 Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/ic_help.png differ diff --git a/VisualChallenge/VisualChallenge/Resources/ic_link.png b/VisualChallenge/VisualChallenge/Resources/ic_link.png new file mode 100644 index 0000000..eb69f67 Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/ic_link.png differ diff --git a/VisualChallenge/VisualChallenge/Resources/leftovers.jpg b/VisualChallenge/VisualChallenge/Resources/leftovers.jpg new file mode 100644 index 0000000..6e637ed Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/leftovers.jpg differ diff --git a/VisualChallenge/VisualChallenge/Resources/mirror.jpg b/VisualChallenge/VisualChallenge/Resources/mirror.jpg new file mode 100644 index 0000000..a6fa8ed Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/mirror.jpg differ diff --git a/VisualChallenge/VisualChallenge/Resources/peaky.jpg b/VisualChallenge/VisualChallenge/Resources/peaky.jpg new file mode 100644 index 0000000..d8163a8 Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/peaky.jpg differ diff --git a/VisualChallenge/VisualChallenge/Resources/profile_photo.png b/VisualChallenge/VisualChallenge/Resources/profile_photo.png new file mode 100644 index 0000000..374a906 Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/profile_photo.png differ diff --git a/VisualChallenge/VisualChallenge/Resources/umbrella.jpg b/VisualChallenge/VisualChallenge/Resources/umbrella.jpg new file mode 100644 index 0000000..7ead381 Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/umbrella.jpg differ diff --git a/VisualChallenge/VisualChallenge/Resources/vikings.jpg b/VisualChallenge/VisualChallenge/Resources/vikings.jpg new file mode 100644 index 0000000..47fa925 Binary files /dev/null and b/VisualChallenge/VisualChallenge/Resources/vikings.jpg differ diff --git a/VisualChallenge/VisualChallenge/VisualChallenge.csproj b/VisualChallenge/VisualChallenge/VisualChallenge.csproj index c971abe..accf856 100644 --- a/VisualChallenge/VisualChallenge/VisualChallenge.csproj +++ b/VisualChallenge/VisualChallenge/VisualChallenge.csproj @@ -20,4 +20,33 @@ VisualChallengePage.xaml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualChallenge/VisualChallenge/VisualChallengePage.xaml b/VisualChallenge/VisualChallenge/VisualChallengePage.xaml index 305cee4..909d170 100644 --- a/VisualChallenge/VisualChallenge/VisualChallengePage.xaml +++ b/VisualChallenge/VisualChallenge/VisualChallengePage.xaml @@ -1,23 +1,239 @@ - + - - + Shell.NavBarIsVisible="False" + BackgroundColor="White"> + + + - - -