internal static void SetBitmap(ImageView target, Context context, Bitmap bitmap, LoadedFrom loadedFrom, FadeMode fadeMode)
        {
            Drawable placeholder = target.Drawable;
            var      drawable    = new PicassoDrawable(context, bitmap, placeholder, loadedFrom, fadeMode);

            target.SetImageDrawable(drawable);
        }
        protected override void OnComplete(Bitmap bitmap, LoadedFrom loadedFrom)
        {
            if (bitmap == null)
            {
                throw new Exception(String.Format("Attempted to complete action with no result!\n{0}", this));
            }

            var target = this.Target as ImageView;

            if (target == null || target.Handle == IntPtr.Zero)
            {
                return;
            }

            PicassoDrawable.SetBitmap(target, m_Picasso.Context, bitmap, loadedFrom, FadeMode);
        }
Exemple #3
0
        public void Into(ImageView target)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            if (!m_Data.HasImage)
            {
                m_Picasso.CancelRequest(target);
                return;
            }

            if (m_OnStartListener != null)
            {
                m_OnStartListener();
            }

            if (m_Deferred)
            {
                if (m_Data.HasSize)
                {
                    throw new InvalidOperationException("Fit cannot be used with resize.");
                }

                int width  = target.Width;
                int height = target.Height;
                if (width == 0 || height == 0)
                {
                    PicassoDrawable.SetPlaceholder(target, m_PlaceholderDrawable);
                    m_Picasso.Defer(target, new DeferredRequestCreator(this, target));
                    return;
                }
                m_Data.Resize(width, height);
            }

            Request <Bitmap> request = CreateRequest();
            string           key     = Utils.CreateKey(request);

            var action = new ImageViewAction(
                m_Picasso,
                target,
                request,
                m_SkipCache,
                m_FadeMode,
                key,
                m_ErrorDrawable,
                m_OnSuccessListener,
                m_OnFailureListener,
                m_OnFinishListener);

            if (!m_SkipCache)
            {
                Bitmap cachedImage = m_Picasso.QuickMemoryCacheCheck(key);
                if (cachedImage != null && !cachedImage.IsRecycled)
                {
                    m_Picasso.CancelRequest(target);
                    action.Complete(cachedImage, LoadedFrom.Memory);
                    return;
                }
            }

            PicassoDrawable.SetPlaceholder(target, m_PlaceholderDrawable);

            m_Picasso.EnqueueAndSubmit(action);
        }