zengjiebin пре 8 година
родитељ
комит
9e10eaaaef

+ 1 - 1
app/build.gradle

@@ -218,11 +218,11 @@ dependencies {
     compile files('libs/jackson-dataformat-xml-2.1.2.jar')
     compile 'io.reactivex:rxandroid:1.2.1'
     compile 'com.github.ithedan:TextViewDrawable:v1.0'
-    compile 'com.lzy.widget:imagepicker:0.6.1'
     compile 'com.github.zhangkexpz:LayoutScroll:v1.0'
     compile 'com.arialyy.aria:aria-core:3.3.14'
     annotationProcessor 'com.arialyy.aria:aria-compiler:3.3.14'
     compile 'me.iwf.photopicker:PhotoPicker:0.9.12@aar'
     compile 'com.github.bumptech.glide:glide:4.1.1'
+    compile 'com.github.yalantis:ucrop:2.2.1-native'
 
 }

+ 4 - 0
app/src/main/AndroidManifest.xml

@@ -367,6 +367,10 @@
             android:theme="@style/Theme.AppCompat.NoActionBar"
             android:screenOrientation="portrait"
             />
+        <activity
+            android:name="com.yalantis.ucrop.UCropActivity"
+            android:screenOrientation="portrait"
+            android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
 
         <!--友盟start-->
 

+ 1 - 16
app/src/main/java/com/sheep/gamegroup/util/GlideImageLoader.java

@@ -5,29 +5,14 @@ import android.widget.ImageView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.request.RequestOptions;
-import com.lzy.imagepicker.loader.ImageLoader;
-import com.sheep.jiuyan.samllsheep.R;
 
 /**
  * Created by realicing on 2018/3/26.
  * realicing@sina.com
  */
 
-public class GlideImageLoader implements ImageLoader {
-    @Override
-    public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) {
-        displayImage(activity, imageView, path, R.drawable.commit_wx_loadding);
-    }
-
-    @Override
-    public void displayImagePreview(Activity activity, String path, ImageView imageView, int width, int height) {
-        displayImage(activity, imageView, path, R.drawable.commit_wx_loadding);
-    }
+public class GlideImageLoader {
 
-    @Override
-    public void clearMemoryCache() {
-
-    }
     public static void displayImage(Activity activity, ImageView imageView, String path, int id){
         Glide.with(activity)
                 .load(path)

+ 2 - 6
app/src/main/java/com/sheep/gamegroup/view/activity/PersionInfoAct.java

@@ -11,8 +11,6 @@ import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.request.RequestOptions;
-import com.lzy.imagepicker.bean.ImageItem;
-import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.event.ImageHeadChange;
 import com.sheep.gamegroup.event.UserNameChange;
 import com.sheep.gamegroup.model.entity.UserInfoEntity;
@@ -20,7 +18,6 @@ import com.sheep.gamegroup.model.entity.UserInfoEntity;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.base.AbsChooseImageActivity;
-import com.sheep.jiuyan.samllsheep.page.entry.User;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import com.uuzuche.lib_zxing.activity.CodeUtils;
@@ -32,7 +29,6 @@ import org.greenrobot.eventbus.ThreadMode;
 import butterknife.BindView;
 import butterknife.OnClick;
 
-import static com.sheep.jiuyan.samllsheep.utils.G.mUser;
 
 
 /**
@@ -182,8 +178,8 @@ public class PersionInfoAct extends AbsChooseImageActivity {
     }
 
     @Override
-    protected void onGetImage(ImageItem image) {
-        GlideImageLoader.displayImage(this, ivHeadRight, image.path, R.drawable.logoin_head);
+    protected void onGetImage(String path) {
+        GlideImageLoader.displayImage(this, ivHeadRight, path, R.drawable.logoin_head);
     }
 
     @Override

+ 1 - 8
app/src/main/java/com/sheep/gamegroup/view/dialog/DialogChooseImage.java

@@ -1,6 +1,5 @@
 package com.sheep.gamegroup.view.dialog;
 
-import android.content.Intent;
 import android.support.v7.app.AlertDialog;
 import android.view.Gravity;
 import android.view.View;
@@ -8,14 +7,11 @@ import android.view.Window;
 import android.view.WindowManager;
 
 import com.kfzs.duanduan.utils.dlg.ViewFindUtils;
-import com.lzy.imagepicker.ui.ImageGridActivity;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.base.AbsChooseImageActivity;
 
 import me.iwf.photopicker.PhotoPicker;
 
-import static com.sheep.jiuyan.samllsheep.base.AbsChooseImageActivity.REQUEST_CODE_CAMERA;
-import static com.sheep.jiuyan.samllsheep.base.AbsChooseImageActivity.REQUEST_CODE_SELECT;
 
 public class DialogChooseImage {
 
@@ -30,9 +26,6 @@ public class DialogChooseImage {
                     @Override
                     public void onClick(View v) {
                         mAlertDialog.dismiss();
-                        Intent intent = new Intent(activity, ImageGridActivity.class);
-                        intent.putExtra(ImageGridActivity.EXTRAS_TAKE_PICKERS,true); // 是否是直接打开相机
-                        activity.startActivityForResult(intent, REQUEST_CODE_CAMERA);
                     }
                 });
         ViewFindUtils.find(view, R.id.dialog_close)
@@ -51,7 +44,7 @@ public class DialogChooseImage {
                         PhotoPicker.builder()
                                 .setPhotoCount(1)
                                 .setShowCamera(true)
-                                .setShowGif(true)
+                                .setShowGif(false)
                                 .setPreviewEnabled(false)
                                 .start(activity, PhotoPicker.REQUEST_CODE);
                     }

+ 0 - 21
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -3,13 +3,10 @@ package com.sheep.jiuyan.samllsheep;
 import android.app.Activity;
 import android.content.Context;
 import android.os.Bundle;
-import android.os.Environment;
 import android.support.multidex.MultiDex;
 import android.util.DisplayMetrics;
 
 import com.liulishuo.filedownloader.FileDownloader;
-import com.lzy.imagepicker.ImagePicker;
-import com.lzy.imagepicker.view.CropImageView;
 import com.sheep.gamegroup.di.components.DaggerNetComponent;
 import com.sheep.gamegroup.di.components.NetComponent;
 import com.sheep.gamegroup.di.modules.NetModule;
@@ -18,12 +15,9 @@ import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.tencent.bugly.Bugly;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
-import com.tencent.mm.opensdk.openapi.WXAPIFactory;
-import com.umeng.commonsdk.UMConfigure;
 
 import org.wlf.filedownloader.FileDownloadConfiguration;
 
-import java.io.File;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -57,7 +51,6 @@ public class SheepApp extends BaseApplication {
         initGoble();
         Bugly.init(getApplicationContext(), Config.BUGLY_APPID, true);
         initNet();
-        initImagePicker();
         createFileDownloader();//创建FileDownloader
     }
 
@@ -84,20 +77,6 @@ public class SheepApp extends BaseApplication {
         org.wlf.filedownloader.FileDownloader.init(configuration);
     }
 
-    private void initImagePicker() {
-        ImagePicker imagePicker = ImagePicker.getInstance();
-        imagePicker.setImageLoader(new GlideImageLoader());   //设置图片加载器
-        imagePicker.setShowCamera(false);  //显示拍照按钮
-        imagePicker.setCrop(true);        //允许裁剪(单选才有效)
-        imagePicker.setSaveRectangle(true); //是否按矩形区域保存
-//        imagePicker.setSelectLimit(1);    //选中数量限制
-        imagePicker.setMultiMode(false);    //不是多选
-        imagePicker.setStyle(CropImageView.Style.RECTANGLE);  //裁剪框的形状
-        imagePicker.setFocusWidth(400);   //裁剪框的宽度。单位像素(圆形自动取宽高最小值)
-        imagePicker.setFocusHeight(400);  //裁剪框的高度。单位像素(圆形自动取宽高最小值)
-        imagePicker.setOutPutX(500);//保存文件的宽度。单位像素
-        imagePicker.setOutPutY(500);//保存文件的高度。单位像素
-    }
 
     public static void removeAllActivity() {
 

+ 84 - 39
app/src/main/java/com/sheep/jiuyan/samllsheep/base/AbsChooseImageActivity.java

@@ -1,21 +1,22 @@
 package com.sheep.jiuyan.samllsheep.base;
 
 import android.content.Intent;
+import android.net.Uri;
 import android.text.TextUtils;
-import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.kfzs.appstore.utils.string.HexUtils;
 import com.kfzs.duanduan.react.upfile.UpFileListener;
 import com.kfzs.duanduan.react.upfile.UpFileUtils;
-import com.lzy.imagepicker.ImagePicker;
-import com.lzy.imagepicker.bean.ImageItem;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.view.dialog.DialogChooseImage;
 import com.sheep.gamegroup.view.dialog.DialogShowLoading;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
+import com.yalantis.ucrop.UCrop;
+
+import org.w3c.dom.Text;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -31,41 +32,82 @@ import rx.schedulers.Schedulers;
  * realicing@sina.com
  */
 
-public abstract class AbsChooseImageActivity extends BaseActivity implements UpFileListener{
-    public static final int REQUEST_CODE_SELECT = 113;
-    public static final int REQUEST_CODE_CAMERA = 114;
+public abstract class AbsChooseImageActivity extends BaseActivity implements UpFileListener {
     private boolean isUpload = true;
+    private boolean isCrop = true;
     private DialogShowLoading dialogShowLoading;
-    private ImageItem imageItem;
-    public void showChooseDialog(){
-        DialogChooseImage.showDialog(this);
+
+    public void showChooseDialog() {
+        showChooseDialog(true, true);
     }
-    public void showChooseDialog(boolean isUpload){
+
+    public void showChooseDialog(boolean isCrop, boolean isUpload) {
         this.isUpload = isUpload;
-        DialogChooseImage.showDialog(this);
+        PhotoPicker.builder()
+                .setPhotoCount(1)
+                .setShowCamera(true)
+                .setShowGif(false)
+                .setPreviewEnabled(false)
+                .start(this, PhotoPicker.REQUEST_CODE);
     }
+
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
-        if (resultCode == RESULT_OK && requestCode == PhotoPicker.REQUEST_CODE) {
-            if (data != null) {
-                ArrayList<String> photos =
-                        data.getStringArrayListExtra(PhotoPicker.KEY_SELECTED_PHOTOS);
-                G.showToast(JSON.toJSONString(photos));
+        if (resultCode == RESULT_OK) {
+            if (requestCode == PhotoPicker.REQUEST_CODE) {//拍照或者选择照片
+                if (data != null) {
+                    ArrayList<String> photos = data.getStringArrayListExtra(PhotoPicker.KEY_SELECTED_PHOTOS);
+                    if (photos != null && !photos.isEmpty() && !TextUtils.isEmpty((path = photos.get(0)))) {
+                        if (isCrop) {
+                            UCrop.of(Uri.fromFile(new File(path)), Uri.fromFile(new File(new File(path).getParentFile(), "temp.png")))
+                                    .withAspectRatio(1, 1)
+                                    .withMaxResultSize(500, 500)
+                                    .start(AbsChooseImageActivity.this);
+                        } else {
+                            notCrop();
+                        }
+                        return;
+                    }
+                }
+                onNotGetImage("没有数据");
+            } else if (requestCode == UCrop.REQUEST_CROP) {//裁剪
+                Uri resultUri;
+                if (data != null && (resultUri = UCrop.getOutput(data))!=null) {
+                    String cropPath;
+                    if(!TextUtils.isEmpty(cropPath = resultUri.getPath())){
+                        path = cropPath;
+                        notCrop();
+                    }
+
+                } else if(!TextUtils.isEmpty(path)){
+                        notCrop();
+                }
             }
+        } else if (resultCode == UCrop.RESULT_ERROR) {//裁剪出错
+            if(!TextUtils.isEmpty(path))
+                notCrop();
+        }
+    }
+
+    private String path;
+
+    private void notCrop() {
+        onGetImage(path);
+        if (isUpload) {
+            AbsChooseImageActivity.this.dialogShowLoading = DialogShowLoading.showDialog(AbsChooseImageActivity.this);
+            UpFileUtils.upImage(new File(path), AbsChooseImageActivity.this);
         }
     }
 
     @Override
     public void Success(String msg) {
-        //{data: ""}
-
-        String json = null;
-        if(TextUtils.isEmpty(msg)){
+        String json;
+        if (TextUtils.isEmpty(msg)) {
             updateError("失败");
-           return;
+            return;
         }
-        if(msg.startsWith("{")){
+        if (msg.startsWith("{")) {
             json = msg;
         } else {
             try {
@@ -79,7 +121,7 @@ public abstract class AbsChooseImageActivity extends BaseActivity implements UpF
             }
         }
         UploadResult uploadResult = JSON.parseObject(json, UploadResult.class);
-        if(uploadResult != null){
+        if (uploadResult != null) {
             final String data = uploadResult.getData().getUrl();
             dialogShowLoading.getTextView().setText("更新中");
             JSONObject jsonObject = new JSONObject();
@@ -87,19 +129,19 @@ public abstract class AbsChooseImageActivity extends BaseActivity implements UpF
             SheepApp.get(this).getNetComponent().getApiService().changeBaseInfo(jsonObject)
                     .subscribeOn(Schedulers.io())
                     .observeOn(AndroidSchedulers.mainThread())
-            .subscribe(new Action1<BaseMessage>() {
-                @Override
-                public void call(BaseMessage baseMessage) {
-                    dialogShowLoading.getTextView().setText("完成");
-                    onGetNetImageUrl(data);
-                    dialogShowLoading.getAlertDialog().dismiss();
-                }
-            }, new Action1<Throwable>() {
-                @Override
-                public void call(Throwable throwable) {
-                    updateError("失败");
-                }
-            });
+                    .subscribe(new Action1<BaseMessage>() {
+                        @Override
+                        public void call(BaseMessage baseMessage) {
+                            dialogShowLoading.getTextView().setText("完成");
+                            onGetNetImageUrl(data);
+                            dialogShowLoading.getAlertDialog().dismiss();
+                        }
+                    }, new Action1<Throwable>() {
+                        @Override
+                        public void call(Throwable throwable) {
+                            updateError("失败");
+                        }
+                    });
         }
     }
 
@@ -119,13 +161,16 @@ public abstract class AbsChooseImageActivity extends BaseActivity implements UpF
     public void Failure(String err) {
         onNotGetImage(err);
     }
+
     protected abstract void onNotGetImage(String msg);//失败后回调
 
-    protected abstract void onGetImage(ImageItem image);//获取图片成功后回调
+    protected abstract void onGetImage(String path);//获取图片成功后回调
+
     protected abstract void onGetNetImageUrl(String url);//获取图片、上传成功并更新后回调
 
 }
-class Data{
+
+class Data {
     private String url;
 
     public String getUrl() {
@@ -137,7 +182,7 @@ class Data{
     }
 }
 
-class UploadResult{
+class UploadResult {
     private int status;
     private String error;
     private String error_message;

+ 1 - 1
app/src/main/res/layout/dialog_choose_image.xml

@@ -42,7 +42,7 @@
                     android:textColor="@color/selector_color_choose_head"
                     android:textSize="14sp"
                     android:gravity="center"
-                    android:text="相册"
+                    android:text=""
                     android:padding="@dimen/content_padding_10"/>
 
             </LinearLayout>