Pārlūkot izejas kodu

1.修改RA Image Android照片列表,优化数据重复加载。

Pen Li 8 gadi atpakaļ
vecāks
revīzija
b2b01b84f3

+ 20 - 5
RA Image/app/src/main/java/com/usai/redant/raimage/PhotoList/PhotoGridActivity.java

@@ -26,9 +26,9 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 
-public class PhotoGridActivity extends AppCompatActivity {
+public class PhotoGridActivity extends AppCompatActivity implements RAGridView.GridViewMeasure {
 
-    private GridView gridView;
+    private RAGridView gridView;
     private GridViewAdapter adapter;
     private Button deleteBtn;
     private ArrayList<HashMap<String,String>> photoDic;
@@ -37,6 +37,8 @@ public class PhotoGridActivity extends AppCompatActivity {
     private static int portrait_col = 3;
     private int col;
 
+    private boolean measuring;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -55,9 +57,11 @@ public class PhotoGridActivity extends AppCompatActivity {
         }
 
 
-        gridView = (GridView) findViewById(R.id.photo_grid_view);
-        deleteBtn = (Button)findViewById(R.id.grid_photo_delete_btn);
+        gridView = (RAGridView) findViewById(R.id.photo_grid_view);
+        gridView.measureWorker = this;
 
+
+        deleteBtn = (Button)findViewById(R.id.grid_photo_delete_btn);
         deleteBtn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -164,6 +168,10 @@ public class PhotoGridActivity extends AppCompatActivity {
         return scaled;
     }
 
+    @Override
+    public void measuring(boolean m) {
+        this.measuring = m;
+    }
 
     /**Adapter*/
     private class GridViewAdapter extends BaseAdapter {
@@ -196,6 +204,7 @@ public class PhotoGridActivity extends AppCompatActivity {
 
         @Override
         public View getView(int position, View convertView, ViewGroup parent) {
+            /**系统多次调用以测量*/
 
             PhotoViewHolder holder = null;
             View cell;
@@ -208,6 +217,10 @@ public class PhotoGridActivity extends AppCompatActivity {
                 holder = (PhotoViewHolder)cell.getTag();
             }
 
+            if (measuring == true) {
+                measuring = false;
+                return cell;
+            }
 
 
             final HashMap<String,String> item = photoDic.get(position);
@@ -216,7 +229,9 @@ public class PhotoGridActivity extends AppCompatActivity {
 
 //            Bitmap bitmap = scaleImage(path);
 
-//            Bitmap bitmap = BitmapFactory.decodeFile(path);
+//            Log.d("Decode", "begin path: " + path);
+//             Bitmap bitmap = BitmapFactory.decodeFile(path);
+//            Log.d("Decode", "end path: " + path);
 //
 //            Bitmap scale = ThumbnailUtils.extractThumbnail(bitmap, 300, 300);
 //

+ 38 - 0
RA Image/app/src/main/java/com/usai/redant/raimage/PhotoList/RAGridView.java

@@ -0,0 +1,38 @@
+package com.usai.redant.raimage.PhotoList;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.widget.GridView;
+
+
+public class RAGridView extends GridView {
+
+    public interface GridViewMeasure {
+        void measuring(boolean m);
+    }
+
+    public GridViewMeasure measureWorker;
+
+    public RAGridView(Context context) {
+        this(context,null);
+    }
+
+    public RAGridView(Context ctx, AttributeSet attrs) {
+        this(ctx,attrs,0);
+    }
+
+    public RAGridView(Context ctx, AttributeSet attrs, int defStyleAttr) {
+        super(ctx,attrs,defStyleAttr);
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        if (measureWorker != null) {
+            measureWorker.measuring(true);
+        }
+        Log.d("Decode", "onMeasure: ------------------------------");
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        Log.d("Decode", "onMeasure: ------------------------------");
+    }
+}

+ 1 - 1
RA Image/app/src/main/res/layout/activity_photo_grid.xml

@@ -7,7 +7,7 @@
     android:orientation="vertical"
     tools:context="com.usai.redant.raimage.PhotoList.PhotoGridActivity">
 
-    <GridView
+    <com.usai.redant.raimage.PhotoList.RAGridView
         android:id="@+id/photo_grid_view"
         android:layout_width="match_parent"
         android:layout_height="0dp"