protected override void OnPostExecute(Java.Lang.Object result) { Bitmap bitmap = result as Bitmap; if (IsCancelled) { bitmap = null; } if (viewHolderReference != null && bitmap != null) { ImageView holder = null; bool res = false; res = viewHolderReference.TryGetTarget(out holder); if (res && holder != null) { BitmapWorkerTask bitmapWorkerTask = GetBitmapWorkerTask(holder); if (this == bitmapWorkerTask && holder != null) { holder.SetImageBitmap(bitmap); } } } }
private void loadBitmaps(int firstVisibleItem, int visibleItemCount) { try { for (int i = firstVisibleItem; i < firstVisibleItem + visibleItemCount; i++) { String imageUrl = Images.imageThumbUrls[i]; var bitmap = GetBitmapFromMemoryCache(imageUrl); if (bitmap == null) { BitmapWorkerTask task = new BitmapWorkerTask(); taskCollection.Add(task); task.Execute(imageUrl); } else { ImageView imageView = (ImageView)mPhotoWall.FindViewWithTag(imageUrl); if (imageView != null && bitmap != null) { imageView.SetImageBitmap(bitmap); } } } } catch (Exception e) { } }
/// <summary> /// Loads a non-scaled bitmap from the Assets folder on a background thread into an ImageView. /// </summary> /// <param name="maxPoolSize">The maximum limit of images to pool.</param> /// <param name="imageView">The ImageView for the bitmap to load into.</param> /// <param name="context">A context to get an AssetManager instance.</param> /// <param name="fileName">The image file path.</param> /// <param name="assetImageDir">The parent directory for <paramref name="fileName"/> path parameter.</param> public void LoadBitmapInImageViewAsync(int maxPoolSize, ImageView imageView, Context context, string fileName, string assetImageDir = null) { BitmapWorkerTask task = new BitmapWorkerTask(this, imageView); task.Execute(maxPoolSize, context, fileName, assetImageDir); }
public void DrawPageImageView(ImageView holder, int position) { if (CancelPotentialWork(holder, position)) { BitmapWorkerTask task = new BitmapWorkerTask(holder, position, this); AsyncDrawable asyncDrawable = new AsyncDrawable(mContext.Resources, mLoadingBitmap, task); holder.SetImageDrawable(asyncDrawable); task.Execute(); } }
public BitmapWorkerTask GetBitmapWorkerTask() { BitmapWorkerTask holder = null; bool result; result = bitmapWorkerTaskReference.TryGetTarget(out holder); if (result) { return(holder); } else { return(null); } }
public static bool CancelPotentialWork(ImageView holder, int position) { BitmapWorkerTask bitmapWorkerTask = GetBitmapWorkerTask(holder); if (bitmapWorkerTask != null) { int bitmapPosition = bitmapWorkerTask.position; if (bitmapPosition != position) { // Cancel previous task bitmapWorkerTask.Cancel(true); } else { // The same work is already in progress return(false); } } // No task associated with the ImageView, or an existing task was // cancelled return(true); }
// 別インスタンスから復旧 protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); //リクエストコードの判定(カメラ・フォトギャラリーかどうか) if (requestCode == 1) { if (resultCode == Result.Ok) { if (data.Data != null) { //画像のパスを取得 Android.Net.Uri uri = data.Data; //画像のメタデータをもとに画像の向きを確定する int orientation = getOrientation(uri); //バックグラウンドでbitmapの準備をする BitmapWorkerTask task = new BitmapWorkerTask(this.ContentResolver, uri); task.Execute(orientation); } } } }
public AsyncDrawable(Android.Content.Res.Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) : base(res, bitmap) { bitmapWorkerTaskReference = new WeakReference <BitmapWorkerTask>(bitmapWorkerTask); }
public static void FromUrlNonConcurency(this ImageView imageView, string url, Resources resources) { BitmapWorkerTask.StartNew(imageView, url, resources); }