Kaynağa Gözat

二维码分享与保存修改

zengjiebin 8 yıl önce
ebeveyn
işleme
7d5f726ac9

+ 3 - 126
app/src/main/java/com/kfzs/duanduan/fragment/FgtPersonalCenter.java

@@ -33,10 +33,12 @@ import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.MyDbManager;
 import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.UMConfigUtils;
+import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.activity.AskGetMoneyAct;
 import com.sheep.gamegroup.view.activity.PersonalCenterAct;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
 import org.xutils.ex.DbException;
@@ -173,7 +175,7 @@ public class FgtPersonalCenter extends BaseCompatFragment {
                 break;
             case R.id.recommend_friend_layout://推荐给好友
                 if(Ety!= null){
-                    shardFriend(getActivity(),Ety.getShare_link());
+                    ViewUtil.shareLink(getActivity(),Ety.getShare_link());
                 }
                 break;
             case R.id.tv_submit://注销
@@ -183,84 +185,6 @@ public class FgtPersonalCenter extends BaseCompatFragment {
     }
 
 
-    /**
-     * 分享对话框
-     * @param activity
-     * @param link
-     */
-    private void shardFriend(final Activity activity, final String link) {
-        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
-        View view = View.inflate(activity, R.layout.x_recommend_dialog, null);
-        builder.setView(view);
-
-        final AlertDialog dialog = builder.create();
-        ImageView iv = view.findViewById(R.id.iv_close);
-        TextView withdrawal = view.findViewById(R.id.withdrawal);
-        TextView tv_link = view.findViewById(R.id.tv_link);
-        TextView save_pic = view.findViewById(R.id.save_pic);
-        ImageView iv_qr = view.findViewById(R.id.iv_qr);
-        ImageView iv_qr_small = view.findViewById(R.id.iv_qr_small);
-
-        tv_link.setText(link);
-
-        Glide.with(activity)
-                .load(AppUtil.getQRLink(link, 800))
-                .apply(new RequestOptions().override(800, 800))
-                .into(iv_qr);
-        Glide.with(activity)
-                .load("http://cdngame.kuaifazs.com/icon.png")
-                .apply(new RequestOptions().override(G.WIDTH/5))
-                .into(iv_qr_small);
-        dialog.show();
-        Window window = dialog.getWindow();
-        if(window != null) {
-            android.view.WindowManager.LayoutParams p = window.getAttributes();
-            p.height = WindowManager.LayoutParams.WRAP_CONTENT;
-//            p.height = G.WIDTH;
-            p.width = G.WIDTH;
-            dialog.getWindow().setAttributes(p);     //设置生效
-        }
-        iv.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                dialog.dismiss();
-            }
-        });
-
-        withdrawal.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                StringUtils.CopyText(activity,Ety.getShare_link());
-                showToast("复制链接成功");
-            }
-        });
-
-        save_pic.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-
-                new Thread(new Runnable() {
-                    @Override
-                    public void run() {
-                        String imagePath =  Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + new Date().toString() +".png";
-                        String path =   getImagePath(AppUtil.getQRLink(link, 800));
-                        /**
-                         * 拷贝到指定路径
-                         */
-                        copyFile(path, imagePath);
-                        Intent intentBroadcast = new Intent(
-                                Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
-                        File file = new File(imagePath);
-                        intentBroadcast.setData(Uri.fromFile(file));
-                        activity.sendBroadcast(intentBroadcast);
-                    }
-                }).start();
-                showToast("已保存");
-            }
-        });
-
-    }
-
     FriendAndAwardEntity Ety;
 
     /**
@@ -290,51 +214,4 @@ public class FgtPersonalCenter extends BaseCompatFragment {
     }
 
 
-    /**
-     * 获取Glide显示图片的缓存路径
-     * @param imgUrl
-     * @return
-     */
-    private String getImagePath(String imgUrl) {
-        String path = null;
-        FutureTarget<File> future = Glide.with(this)
-                .load(imgUrl)
-                .downloadOnly(Target.SIZE_ORIGINAL,Target.SIZE_ORIGINAL);
-        try {
-            File cacheFile = future.get();
-            path = cacheFile.getAbsolutePath();
-        } catch (InterruptedException | ExecutionException e) {
-            e.printStackTrace();
-        }
-        return path;
-    }
-
-    /**
-     * 保存图片
-     * @param oldPath
-     * @param newPath
-     */
-    public void copyFile(String oldPath, String newPath) {
-        try {
-            int bytesum = 0;
-            int byteread = 0;
-            File oldfile = new File(oldPath);
-            if (oldfile.exists()) { //文件存在时
-                InputStream inStream = new FileInputStream(oldPath); //读入原文件
-                FileOutputStream fs = new FileOutputStream(newPath);
-                byte[] buffer = new byte[1024];
-                while ( (byteread = inStream.read(buffer)) != -1) {
-                    bytesum += byteread; //字节数 文件大小
-                    fs.write(buffer, 0, byteread);
-                }
-                inStream.close();
-            }
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-
-        }
-
-    }
-
 }

+ 144 - 0
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -0,0 +1,144 @@
+package com.sheep.gamegroup.util;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.provider.MediaStore;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
+import com.sheep.jiuyan.samllsheep.utils.G;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * Created by realicing on 2018/5/11.
+ * realicing@sina.com
+ */
+public class ViewUtil {
+
+    /**
+     * 分享对话框
+     * @param activity
+     * @param link
+     */
+    public static void shareLink(final Activity activity, final String link) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+        View view = View.inflate(activity, R.layout.x_recommend_dialog, null);
+        builder.setView(view);
+
+        final AlertDialog dialog = builder.create();
+        ImageView iv = view.findViewById(R.id.iv_close);
+        TextView withdrawal = view.findViewById(R.id.withdrawal);
+        TextView tv_link = view.findViewById(R.id.tv_link);
+        TextView save_pic = view.findViewById(R.id.save_pic);
+        final ImageView iv_qr = view.findViewById(R.id.iv_qr);
+        ImageView iv_qr_small = view.findViewById(R.id.iv_qr_small);
+
+        tv_link.setText(link);
+
+        Glide.with(activity)
+                .load(AppUtil.getQRLink(link, 800))
+                .apply(new RequestOptions().override(800, 800))
+                .into(iv_qr);
+        dialog.show();
+        Window window = dialog.getWindow();
+        if(window != null) {
+            android.view.WindowManager.LayoutParams p = window.getAttributes();
+            p.height = WindowManager.LayoutParams.WRAP_CONTENT;
+//            p.height = G.WIDTH;
+            p.width = G.WIDTH;
+            dialog.getWindow().setAttributes(p);     //设置生效
+        }
+        iv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dialog.dismiss();
+            }
+        });
+
+        withdrawal.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                StringUtils.CopyText(activity, link);
+                G.showToast("复制链接成功");
+            }
+        });
+
+        save_pic.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+
+                File file = ViewUtil.saveImage((View) iv_qr.getParent(), ClassFileHelper.DIR, System.currentTimeMillis()+".jpg");
+                if(file != null) {
+                    Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
+                    Uri uri = Uri.fromFile(file);
+                    intent.setData(uri);
+                    activity.sendBroadcast(intent); // 发送广播通知相册
+                } else {
+                    ViewUtil.sysSaveImage((View) iv_qr.getParent(), "小绵羊", "二维码分享");
+                }
+                G.showToast("已保存");
+            }
+        });
+
+    }
+
+    /**
+     * 获取一个 View 的缓存视图
+     *
+     * @param view
+     * @return
+     */
+    public static Bitmap getCacheBitmapFromView(View view) {
+        final boolean drawingCacheEnabled = true;
+        view.setDrawingCacheEnabled(drawingCacheEnabled);
+        view.buildDrawingCache(drawingCacheEnabled);
+        final Bitmap drawingCache = view.getDrawingCache();
+        Bitmap bitmap;
+        if (drawingCache != null) {
+            bitmap = Bitmap.createBitmap(drawingCache);
+            view.setDrawingCacheEnabled(false);
+        } else {
+            bitmap = null;
+        }
+        return bitmap;
+    }
+    public static void sysSaveImage(View view, String title, String description) {
+        MediaStore.Images.Media.insertImage(view.getContext().getContentResolver(), getCacheBitmapFromView(view), title, description);
+    }
+    public static File saveImage(View view, String dir, String fileName) {
+        return saveImage(getCacheBitmapFromView(view), dir, fileName);
+    }
+    public static File saveImage(Bitmap bmp, String dir, String fileName) {
+        File appDir = new File(dir);
+        if (!appDir.exists()) {
+            appDir.mkdir();
+        }
+        File file = new File(appDir, fileName);
+        try {
+            FileOutputStream fos = new FileOutputStream(file);
+            bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
+            fos.flush();
+            fos.close();
+            return file;
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}

+ 4 - 3
app/src/main/res/layout/x_recommend_dialog.xml

@@ -119,9 +119,10 @@
 
             <ImageView
                 android:id="@+id/iv_qr_small"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_centerInParent="true" />
+                android:layout_width="36dp"
+                android:layout_height="36dp"
+                android:layout_centerInParent="true"
+                android:src="@drawable/icon"/>
 
         </RelativeLayout>