OSDN Git Service

Fix async loading of borders
authornicolasroard <nicolasroard@google.com>
Fri, 1 Feb 2013 21:48:21 +0000 (13:48 -0800)
committernicolasroard <nicolasroard@google.com>
Fri, 1 Feb 2013 21:48:21 +0000 (13:48 -0800)
bug:8099597
Change-Id: I62584c87eff03539ec50aafafda4238850b4f743

src/com/android/gallery3d/filtershow/FilterShowActivity.java

index 4354914..83ea06d 100644 (file)
@@ -306,7 +306,8 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
         mImageLoader.setAdapter(mMasterImage.getHistory());
 
         fillListImages(listFilters);
-        fillListBorders(listBorders);
+        LoadBordersTask loadBorders = new LoadBordersTask(listBorders);
+        loadBorders.execute();
 
         SeekBar seekBar = (SeekBar) findViewById(R.id.filterSeekBar);
         seekBar.setMax(SEEK_BAR_MAX);
@@ -380,6 +381,58 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
         mLoadBitmapTask.execute(uri);
     }
 
+    private class LoadBordersTask extends AsyncTask<Void, Boolean, Boolean> {
+        Vector<ImageFilter> mBorders;
+        LinearLayout mList;
+
+        public LoadBordersTask(LinearLayout list) {
+            mList = list;
+            mBorders = new Vector<ImageFilter>();
+        }
+
+        @Override
+        protected Boolean doInBackground(Void... params) {
+            mBorders.add(new ImageFilterBorder(null));
+            Drawable npd1 = getResources().getDrawable(R.drawable.filtershow_border_4x5);
+            mBorders.add(new ImageFilterBorder(npd1));
+            Drawable npd2 = getResources().getDrawable(R.drawable.filtershow_border_brush);
+            mBorders.add(new ImageFilterBorder(npd2));
+            Drawable npd3 = getResources().getDrawable(R.drawable.filtershow_border_grunge);
+            mBorders.add(new ImageFilterBorder(npd3));
+            Drawable npd4 = getResources().getDrawable(R.drawable.filtershow_border_sumi_e);
+            mBorders.add(new ImageFilterBorder(npd4));
+            Drawable npd5 = getResources().getDrawable(R.drawable.filtershow_border_tape);
+            mBorders.add(new ImageFilterBorder(npd5));
+            mBorders.add(new ImageFilterParametricBorder(Color.BLACK, mImageBorderSize, 0));
+            mBorders.add(new ImageFilterParametricBorder(Color.BLACK, mImageBorderSize,
+                    mImageBorderSize));
+            mBorders.add(new ImageFilterParametricBorder(Color.WHITE, mImageBorderSize, 0));
+            mBorders.add(new ImageFilterParametricBorder(Color.WHITE, mImageBorderSize,
+                    mImageBorderSize));
+            int creamColor = Color.argb(255, 237, 237, 227);
+            mBorders.add(new ImageFilterParametricBorder(creamColor, mImageBorderSize, 0));
+            mBorders.add(new ImageFilterParametricBorder(creamColor, mImageBorderSize,
+                    mImageBorderSize));
+            return true;
+        }
+
+        @Override
+        protected void onPostExecute(Boolean result) {
+            if (!result) {
+                return;
+            }
+            for (int i = 0; i < mBorders.size(); i++) {
+                ImageFilter filter = mBorders.elementAt(i);
+                filter.setName(getString(R.string.borders));
+                FilterIconButton b = setupFilterButton(filter, mList, mBorderButton);
+                if (i == 0) {
+                    mNullBorderFilter = b;
+                    mNullBorderFilter.setSelected(true);
+                }
+            }
+        }
+    }
+
     private class LoadBitmapTask extends AsyncTask<Uri, Boolean, Boolean> {
         View mTinyPlanetButton;
         int mBitmapSize;
@@ -722,44 +775,6 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
         mMasterImage.setPreset(preset, true);
     }
 
-    private void fillListBorders(LinearLayout listBorders) {
-        // TODO: use listview
-        // TODO: load the borders straight from the filesystem
-        int p = 0;
-        ImageFilter[] borders = new ImageFilter[12];
-        borders[p++] = new ImageFilterBorder(null);
-
-        Drawable npd1 = getResources().getDrawable(R.drawable.filtershow_border_4x5);
-        borders[p++] = new ImageFilterBorder(npd1);
-        Drawable npd2 = getResources().getDrawable(R.drawable.filtershow_border_brush);
-        borders[p++] = new ImageFilterBorder(npd2);
-        Drawable npd3 = getResources().getDrawable(R.drawable.filtershow_border_grunge);
-        borders[p++] = new ImageFilterBorder(npd3);
-        Drawable npd4 = getResources().getDrawable(R.drawable.filtershow_border_sumi_e);
-        borders[p++] = new ImageFilterBorder(npd4);
-        Drawable npd5 = getResources().getDrawable(R.drawable.filtershow_border_tape);
-        borders[p++] = new ImageFilterBorder(npd5);
-        borders[p++] = new ImageFilterParametricBorder(Color.BLACK, mImageBorderSize, 0);
-        borders[p++] = new ImageFilterParametricBorder(Color.BLACK, mImageBorderSize,
-                mImageBorderSize);
-        borders[p++] = new ImageFilterParametricBorder(Color.WHITE, mImageBorderSize, 0);
-        borders[p++] = new ImageFilterParametricBorder(Color.WHITE, mImageBorderSize,
-                mImageBorderSize);
-        int creamColor = Color.argb(255, 237, 237, 227);
-        borders[p++] = new ImageFilterParametricBorder(creamColor, mImageBorderSize, 0);
-        borders[p++] = new ImageFilterParametricBorder(creamColor, mImageBorderSize,
-                mImageBorderSize);
-
-        for (int i = 0; i < p; i++) {
-            borders[i].setName(getString(R.string.borders));
-            FilterIconButton b = setupFilterButton(borders[i], listBorders, mBorderButton);
-            if (i == 0) {
-                mNullBorderFilter = b;
-                mNullBorderFilter.setSelected(true);
-            }
-        }
-    }
-
     // //////////////////////////////////////////////////////////////////////////////
     // Some utility functions
     // TODO: finish the cleanup.