protected override void setImageScaleType(ScaleType scaleType)
            {
                //Note: we don't implement a "GetScaleType" because we just don't need it.

                // take the scaleType provided, and convert it to the appropriate android version.
                Android.Widget.ImageView.ScaleType type = Android.Widget.ImageView.ScaleType.FitCenter;
                switch (scaleType)
                {
                case ScaleType.Center:
                {
                    type = Android.Widget.ImageView.ScaleType.Center;
                    break;
                }

                case ScaleType.ScaleAspectFill:
                {
                    type = Android.Widget.ImageView.ScaleType.CenterCrop;
                    break;
                }

                case ScaleType.ScaleAspectFit:
                {
                    type = Android.Widget.ImageView.ScaleType.FitCenter;
                    break;
                }
                }

                ImageView.SetScaleType(type);
            }
Esempio n. 2
0
 public override void SetScaleType(Android.Widget.ImageView.ScaleType scaleType)
 {
     if (scaleType != SCALE_TYPE)
     {
         throw new IllegalArgumentException(string.Format("ScaleType %s not supported.", scaleType));
     }
 }
Esempio n. 3
0
        public bool IsCached(String requestUrl, int maxWidth, int maxHeight, Android.Widget.ImageView.ScaleType scaleType)
        {
            ThrowIfNotOnMainThread();
            String cacheKey = GetCacheKey(requestUrl, maxWidth, maxHeight, scaleType);

            return(mCache.GetBitmap(cacheKey) != null);
        }
Esempio n. 4
0
        public void SetScaleType(ImageView.ScaleType scaleType)
        {
            if (IsSupportedScaleType(scaleType) && scaleType != mScaleType)
            {
                mScaleType = scaleType;

                // Finally update
                Update();
            }
        }
 public ImageRequest(String url, IListener listener, int maxWidth, int maxHeight, Android.Widget.ImageView.ScaleType scaleType,
                     Android.Graphics.Bitmap.Config decodeConfig, IErrorListener errorListener)
     : base(Method.GET, url, errorListener)
 {
     SetRetryPolicy(new DefaultRetryPolicy(IMAGE_TIMEOUT_MS, IMAGE_MAX_RETRIES, IMAGE_BACKOFF_MULT));
     mListener     = listener;
     mDecodeConfig = decodeConfig;
     mMaxWidth     = maxWidth;
     mMaxHeight    = maxHeight;
     mScaleType    = scaleType;
 }
 public ImageRequest(String url, IListener listener, int maxWidth, int maxHeight, Android.Widget.ImageView.ScaleType scaleType,
     Android.Graphics.Bitmap.Config decodeConfig, IErrorListener errorListener)
     : base(Method.GET, url, errorListener)
 {
     SetRetryPolicy(new DefaultRetryPolicy(IMAGE_TIMEOUT_MS, IMAGE_MAX_RETRIES, IMAGE_BACKOFF_MULT));
     mListener = listener;
     mDecodeConfig = decodeConfig;
     mMaxWidth = maxWidth;
     mMaxHeight = maxHeight;
     mScaleType = scaleType;
 }
        private static int GetResizedDimension(int maxPrimary, int maxSecondary, int actualPrimary,
                                               int actualSecondary, Android.Widget.ImageView.ScaleType scaleType)
        {
            if ((maxPrimary == 0) && (maxSecondary == 0))
            {
                return(actualPrimary);
            }

            if (scaleType == Android.Widget.ImageView.ScaleType.FitXy)
            {
                if (maxPrimary == 0)
                {
                    return(actualPrimary);
                }
                return(maxPrimary);
            }

            double ratio = 0;

            if (maxPrimary == 0)
            {
                ratio = (double)maxSecondary / (double)actualSecondary;
                return((int)(actualPrimary * ratio));
            }

            if (maxSecondary == 0)
            {
                return(maxPrimary);
            }

            ratio = (double)actualSecondary / (double)actualPrimary;
            int resized = maxPrimary;

            if (scaleType == Android.Widget.ImageView.ScaleType.CenterCrop)
            {
                if ((resized * ratio) < maxSecondary)
                {
                    resized = (int)(maxSecondary / ratio);
                }
                return(resized);
            }

            if ((resized * ratio) > maxSecondary)
            {
                resized = (int)(maxSecondary / ratio);
            }
            return(resized);
        }
Esempio n. 8
0
 private static bool IsSupportedScaleType(Android.Widget.ImageView.ScaleType scaleType)
 {
     if (null == scaleType)
     {
         return(false);
     }
     if (scaleType.Name().Equals(Android.Widget.ImageView.ScaleType.Matrix.Name()))
     {
         throw new Java.Lang.IllegalArgumentException(scaleType.Name()
                                                      + " is not supported in PhotoView");
     }
     else
     {
         return(true);
     }
 }
Esempio n. 9
0
        public ImageContainer Get(String requestUrl, int maxWidth, int maxHeight, Android.Widget.ImageView.ScaleType scaleType,
                                  Action <ImageContainer, bool> successResponse, Action <VolleyError> errorResponse)
        {
            ThrowIfNotOnMainThread();
            if (successResponse == null)
            {
                throw new ArgumentNullException("successResponse不能为null,必须提供请求成功的委托。");
            }

            String cacheKey = GetCacheKey(requestUrl, maxWidth, maxHeight, scaleType);

            //缓存命中直接响应请求
            Bitmap cachedBitmap = mCache.GetBitmap(cacheKey);

            if (cachedBitmap != null)
            {
                ImageContainer container = new ImageContainer(cachedBitmap, requestUrl, null, mInFlightRequests,
                                                              mBatchedResponses);
                successResponse(container, true);
                return(container);
            }

            //缓存未命中添加到请求中
            ImageContainer imageContainer = new ImageContainer(null, requestUrl, cacheKey, mInFlightRequests,
                                                               mBatchedResponses);

            imageContainer.ErrorResponse   += errorResponse;
            imageContainer.SuccessResponse += successResponse;

            successResponse(imageContainer, true);

            //是否存在相同的请求,存在则添加该请求,否则创建
            BatchedImageRequest request = null;

            mInFlightRequests.TryGetValue(cacheKey, out request);
            if (request != null)
            {
                request.AddContainer(imageContainer);
                return(imageContainer);
            }

            Request newRequest = MakeImageRequest(requestUrl, maxWidth, maxHeight, scaleType, cacheKey);

            mRequestQueue.Add(newRequest);
            mInFlightRequests.Add(cacheKey, new BatchedImageRequest(newRequest, imageContainer));
            return(imageContainer);
        }
Esempio n. 10
0
 public ImageContainer Get(String requestUrl, int maxWidth, int maxHeight, Android.Widget.ImageView.ScaleType scaleType,
                           ImageView view, int defaultImageResId, int errorImageResId)
 {
     return(Get(requestUrl, maxWidth, maxHeight, scaleType,
                (x, y) =>
     {
         if (x.Bitmap != null)
         {
             view.SetImageBitmap(x.Bitmap);
         }
         else if (defaultImageResId != 0)
         {
             view.SetImageResource(defaultImageResId);
         }
     }, (x) =>
     {
         if (errorImageResId != 0)
         {
             view.SetImageResource(errorImageResId);
         }
     }));
 }
Esempio n. 11
0
 private static String GetCacheKey(String url, int maxWidth, int maxHeight, Android.Widget.ImageView.ScaleType scaleType)
 {
     return(new StringBuilder(url.Length + 12).Append("#W").Append(maxWidth)
            .Append("#H").Append(maxHeight).Append("#S").Append(scaleType.Ordinal()).Append(url).ToString());
 }
Esempio n. 12
0
        protected Request MakeImageRequest(String requestUrl, int maxWidth, int maxHeight, Android.Widget.ImageView.ScaleType scaleType, String cacheKey)
        {
            var listener = new DefaultImageResponseListener()
            {
                CacheKey          = cacheKey,
                OnGetImageSuccess = OnGetImageSuccess
            };
            var errorListener = new DefaultErrorResponseListener()
            {
                CacheKey        = cacheKey,
                OnErrorResponse = OnGetImageError
            };

            return(new ImageRequest(requestUrl, listener, maxWidth, maxHeight, scaleType, Android.Graphics.Bitmap.Config.Rgb565, errorListener));
        }
        public void SetScaleType(ImageView.ScaleType scaleType)
        {
            if (IsSupportedScaleType(scaleType) && scaleType != mScaleType) {
                mScaleType = scaleType;

                // Finally update
                Update();
            }
        }