Example #1
0
            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);
                        }
                    }
                }
            }
Example #2
0
 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)
     {
     }
 }
Example #3
0
        /// <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);
        }
Example #4
0
 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();
     }
 }
Example #5
0
            public BitmapWorkerTask GetBitmapWorkerTask()
            {
                BitmapWorkerTask holder = null;
                bool             result;

                result = bitmapWorkerTaskReference.TryGetTarget(out holder);

                if (result)
                {
                    return(holder);
                }
                else
                {
                    return(null);
                }
            }
Example #6
0
        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);
        }
Example #7
0
        // 別インスタンスから復旧
        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);
                    }
                }
            }
        }
Example #8
0
 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);
 }