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); }
public override void SetScaleType(Android.Widget.ImageView.ScaleType scaleType) { if (scaleType != SCALE_TYPE) { throw new IllegalArgumentException(string.Format("ScaleType %s not supported.", scaleType)); } }
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); }
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); }
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); } }
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); }
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); } })); }
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()); }
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(); } }