Ejemplo n.º 1
0
        public ExtendMedia ParseExtendMedia(JObject obj)
        {
            var extendMedia = new ExtendMedia
            {
                ID            = obj["id"].ToObject <long>(),
                Indices       = ParseIndices(obj["indices"].ToObject <JArray>()),
                MediaURL      = obj["media_url"].ToString(),
                MediaURLHttps = obj["media_url_https"].ToString(),
                URL           = ParseURL(obj),
                Type          = obj["type"].ToString()
            };

            if (obj.ContainsKey("video_info"))
            {
                var infoObj = obj["video_info"].ToObject <JObject>();
                var info    = new VideoInformation
                {
                    AspectRatio = ParseIndices(infoObj["aspect_ratio"].ToObject <JArray>()),
                    //animated_gif doesn't have duration_millis data
                    Duration = SafeGetLong(infoObj, "duration_millis")
                };
                var variantArray = infoObj["variants"].ToObject <JArray>();
                info.Variants = ParseArray(variantArray, ParseVideoVariant);

                extendMedia.Video = info;
            }

            return(extendMedia);
        }
Ejemplo n.º 2
0
            public MediaView(MediaPage parent, ExtendMedia media)
            {
                this.parent = parent;

                Image.Source            = media.MediaURLHttps;
                Image.DownloadProgress += Image_DownloadProgress;
                Image.Finish           += Image_Finish;

                ImageProgressBar.Progress = 0;

                Layout.Children.Add(Image);
                Layout.Children.Add(ImageProgressBar);

                AbsoluteLayout.SetLayoutBounds(Image, new Rectangle(0, 0, 1, 1));
                AbsoluteLayout.SetLayoutFlags(Image, AbsoluteLayoutFlags.All);

                AbsoluteLayout.SetLayoutBounds(ImageProgressBar, new Rectangle(0.1, 0.45, 0.8, 0.15));
                AbsoluteLayout.SetLayoutFlags(ImageProgressBar, AbsoluteLayoutFlags.All);

                var gesture = new PanGestureRecognizer();

                gesture.PanUpdated += (sender, e) =>
                {
                    switch (e.StatusType)
                    {
                    case GestureStatus.Running:
                        Image.TranslationX = e.TotalX;
                        Image.TranslationY = e.TotalY;
                        break;

                    case GestureStatus.Completed:
                        if (Math.Abs(Image.TranslationY) > (parent.Height / 8))
                        {
                            App.Navigation.RemovePage(parent);
                        }
                        Image.TranslateTo(0, 0);
                        break;
                    }
                };
                Image.GestureRecognizers.Add(gesture);
            }
Ejemplo n.º 3
0
        private View MakeMediaView(ExtendMedia media)
        {
            var view = new MediaView(this, media);

            return(view.Layout);
        }