Forráskód Böngészése

1.修改RA Image Android照片列表,增加图片缩略图缓存。

Pen Li 8 éve
szülő
commit
1d26c75242

+ 10 - 1
RA Image/app/app.iml

@@ -78,22 +78,31 @@
       <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard-rules" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
       <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
       <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
     </content>
-    <orderEntry type="inheritedJdk" />
+    <orderEntry type="jdk" jdkName="Android API 25 Platform (1)" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="library" exported="" name="core-2.3.0" level="project" />
     <orderEntry type="library" exported="" name="constraint-layout-solver-1.0.2" level="project" />

+ 2 - 0
RA Image/app/src/main/AndroidManifest.xml

@@ -115,6 +115,7 @@
         <activity
             android:name=".FullScreenLoginActivity"
             android:label="@string/title_activity_full_screen_login"
+            android:screenOrientation="portrait"
             android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
         </activity>
         <activity
@@ -160,6 +161,7 @@
             android:theme="@style/Theme.AppCompat.Light"/>
         <activity
             android:name=".SplashActivity"
+            android:screenOrientation="portrait"
             android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>

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

@@ -5,6 +5,7 @@ import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.media.ThumbnailUtils;
+import android.os.Environment;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
@@ -20,7 +21,11 @@ import android.widget.GridView;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 import com.usai.redant.raimage.R;
+
+import java.io.BufferedOutputStream;
 import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -219,7 +224,7 @@ public class PhotoGridActivity extends AppCompatActivity implements RAGridView.G
 
             if (measuring == true) {
                 measuring = false;
-                return cell;
+//                return cell;
             }
 
 
@@ -237,23 +242,34 @@ public class PhotoGridActivity extends AppCompatActivity implements RAGridView.G
 //
 //            holder.photoView.setImageBitmap(scale);
 
-            final String filePath = path;
-            final PhotoViewHolder photoHolder = holder;
-            new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    Bitmap bitmap = BitmapFactory.decodeFile(filePath);
+            if (thumbPhotoIsExists(path)) {
+                Bitmap bitmap = BitmapFactory.decodeFile(path);
+                holder.photoView.setImageBitmap(bitmap);
+            } else {
+                final String filePath = path;
+                final PhotoViewHolder photoHolder = holder;
+                new Thread(new Runnable() {
+                    @Override
+                    public void run() {
+                        Bitmap bitmap = BitmapFactory.decodeFile(filePath);
+
+                        final Bitmap scale = ThumbnailUtils.extractThumbnail(bitmap, 300, 300);
+
+                        File thumbFile = thumbFile(filePath);
+                        savePhotoToFile(scale,thumbFile);
+
+                        runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                photoHolder.photoView.setImageBitmap(scale);
+                            }
+                        });
+                    }
+                }).start();
+            }
+
 
-                    final Bitmap scale = ThumbnailUtils.extractThumbnail(bitmap, 300, 300);
 
-                    runOnUiThread(new Runnable() {
-                        @Override
-                        public void run() {
-                            photoHolder.photoView.setImageBitmap(scale);
-                        }
-                    });
-                }
-            }).start();
 
             holder.checkBtn.setBackgroundDrawable(getResources().getDrawable(R.drawable.check_none));
 
@@ -310,4 +326,56 @@ public class PhotoGridActivity extends AppCompatActivity implements RAGridView.G
 
 
     }
+
+    private void savePhotoToFile(Bitmap bitmap, File photoFile) {
+        if (photoFile == null || bitmap == null) {
+            return;
+        }
+        try {
+
+            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(photoFile));
+            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);
+            bos.flush();
+            bos.close();
+
+        } catch (IOException e) {
+            e.printStackTrace();
+
+        }
+    }
+
+    private String photoDirectory() {
+
+        String dir = Environment.getExternalStorageDirectory().getPath() + "/redant/.thumb/";
+        File file = new File(dir);
+        if (!file.exists()) {
+            if (file.mkdirs()) {
+                return dir;
+            } else {
+                return null;
+            }
+        }
+        return dir;
+    }
+
+    private File thumbFile(String path) {
+        File file = new File(path);
+        String name = file.getName();
+        String thumbDir = photoDirectory();
+        if (thumbDir != null) {
+            String thumbPath = thumbDir + name;
+            return new File(thumbPath);
+        }
+        return null;
+    }
+
+    private boolean thumbPhotoIsExists(String path) {
+
+        File thumbFile = thumbFile(path);
+        if (thumbFile != null && thumbFile.exists()) {
+            return true;
+        }
+
+        return false;
+    }
 }