private void AmiiboSelected(DetectedAmiibo amiibo) { foreach (var a in DetectedAmiibo) { if (!a.Equals(amiibo)) { MoveToRestingPosition(a, false); } } if (!amiibo.Equals(SelectedAmiibo)) { SelectedAmiibo = amiibo; MoveToFocusPosition(amiibo, false); NameLabel.Center = new CoreGraphics.CGPoint(View.Center.X, SelectedAmiibo.ImageView.Center.Y + size * 3); NameLabel.Text = amiibo.Metadata.Name; UIView.Animate(.15, () => NameLabel.Alpha = 1); } else { SelectedAmiibo = null; MoveToRestingPosition(amiibo, false); UIView.Animate(.15, () => NameLabel.Alpha = 0); } }
public void MoveToRestingPosition(DetectedAmiibo amiibo, bool withDelay) { var idx = DetectedAmiibo.IndexOf(amiibo); var targetPos = new CoreGraphics.CGRect(View.Frame.Width - size - 10, 60 + ((size + 10) * idx), size, size); UIView.Animate(.3, withDelay ? idx * .05 : 0, UIViewAnimationOptions.CurveEaseOut, () => { amiibo.ImageView.RemoveConstraints(amiibo.ImageView.Constraints); amiibo.ImageView.Frame = targetPos; }, null); }
public void MoveToFocusPosition(DetectedAmiibo amiibo, bool withDelay) { var idx = DetectedAmiibo.IndexOf(amiibo); var targetPos = new CoreGraphics.CGRect(View.Frame.Width - size - 10, 60 + ((size + 10) * idx), size * 4, size * 4); UIView.Animate(.3, withDelay ? idx * .07 : 0, UIViewAnimationOptions.CurveEaseOut, () => { amiibo.ImageView.Frame = targetPos; amiibo.ImageView.Center = new CoreGraphics.CGPoint(View.Center.X, View.Center.Y - 200); }, null); }
public void ShareAmiibo(DetectedAmiibo amiibo) { var(characterId, name, uid, data) = (amiibo.CharacterId, amiibo.Metadata.Name, amiibo.UID, amiibo.TagData); var fn = $"({characterId}-{name}-{uid}.bin".ToLower(); var path = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, fn); // don't :b:elete this before the share dialog goes away File.WriteAllBytes(path, data); InvokeOnMainThread(async () => await Xamarin.Essentials.Share.RequestAsync( new Xamarin.Essentials.ShareFileRequest { Title = fn, File = new Xamarin.Essentials.ShareFile(path) })); }
public async Task OnAmiibo(DetectedAmiibo amiibo, bool withDelay) { var initialPos = new CoreGraphics.CGRect(0, 0, size * 5, size * 5); var imageView = new UIImageView { ContentMode = UIViewContentMode.ScaleAspectFit, Image = UIImage.LoadFromData(NSData.FromArray(amiibo.ImageData)), Frame = initialPos, Center = View.Center, UserInteractionEnabled = true, }; imageView.Layer.ShadowRadius = 1f; imageView.Layer.ShadowOpacity = .5f; imageView.AddGestureRecognizer(new UITapGestureRecognizer(gr => AmiiboSelected(amiibo))); imageView.AddGestureRecognizer(new UILongPressGestureRecognizer(gr => ShareAmiibo(amiibo))); amiibo.ImageView = imageView; View.AddSubview(imageView); if (!DetectedAmiibo.Contains(amiibo)) { DetectedAmiibo.Add(amiibo); } if (!withDelay) { imageView.Alpha = 0; UIView.Animate(.5, () => { imageView.Alpha = 1; imageView.Center = new CoreGraphics.CGPoint(View.Center.X, View.Center.Y - 150); }); await Task.Delay(TimeSpan.FromSeconds(3.5)); } MoveToRestingPosition(amiibo, withDelay); }