MultiImageSelector設置頭像調用

1.android studio  Gradle配置

//MultiImageSelector
compile 'com.github.lovetuzitong:MultiImageSelector:1.2'
compile 'com.squareup.picasso:picasso:2.5.2'

repositories {
    //用來清除無用資源的插件
    maven { url "https://jitpack.io" }
}

2.直接貼代碼,具體看代碼註釋

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.generic.RoundingParams;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.core.ImagePipeline;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import api.status;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import data.DataManager;
import me.nereo.multi_image_selector.MultiImageSelector;
import me.nereo.multi_image_selector.MultiImageSelectorActivity;
import tool.OkHttp3ClientManager;
import tool.PUB;
import tool.PermissionUtils;
import tool.ToastUtil;

import static com.dykj.hongchunshu.MainActivity.mLogin;

/************************************************************
 * Explain:設置頭像
 * Create by [email protected]
 ***********************************************************/
public class SetHeadActivity extends Activity {

    @Bind(R.id.icon_activity_change_icon)
    TextView mIconChange;
    @Bind(R.id.icon_activity_save)
    TextView mIconSave;
    @Bind(R.id.icon_activity_cancle)
    TextView mIconCancle;
    @Bind(R.id.img_main_back)
    ImageView imgMainBack;
    @Bind(R.id.tv_title)
    TextView tvTitle;
    @Bind(R.id.icon_activity_civ)
    SimpleDraweeView iconActivityCiv;

    private Activity mActivity;
    private String mPhotopath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/tempphoto.jpg";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivity = this;
        setContentView(R.layout.activity_icon);
        ButterKnife.bind(this);
        //android 6.0 申請權限
        PermissionUtils.requestPermission(this, PermissionUtils.CODE_WRITE_EXTERNAL_STORAGE, new PermissionUtils.PermissionGrant() {
            @Override
            public void onPermissionGranted(int requestCode) {
//                Toast.makeText(mActivity, "Result Permission Grant CODE_WRITE_EXTERNAL_STORAGE", Toast.LENGTH_SHORT).show();
            }
        });


        InitDta();
    }

    /*
    * Explain:綁定視圖
    * Create by [email protected]
    */
    private void InitDta() {

        tvTitle.setText("設置頭像");
        /*返回*/
        imgMainBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });


        //綁定頭像
        Uri uri = Uri.parse(DataManager.Domain + mLogin.getResult().getHead_pic());
        iconActivityCiv.setImageURI(uri);
        //圓形展示
        RoundingParams roundingParams = RoundingParams.fromCornersRadius(5f);
        roundingParams.setBorder(R.color.red, 0.1f);
        roundingParams.setRoundAsCircle(true);
        iconActivityCiv.getHierarchy().setRoundingParams(roundingParams);

    }

    /**
     * 拍照和選擇
     *
     * @param view
     */
    @OnClick({R.id.icon_activity_change_icon, R.id.icon_activity_save, R.id.icon_activity_cancle})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.icon_activity_change_icon:


                MultiImageSelector.create(mActivity)
                        .showCamera(true) // 是否顯示相機. 默認爲顯示
                        .count(10) // 最大選擇圖片數量, 默認爲9. 只有在選擇模式爲多選時有效
                        .single() // 單選模式
//                        .multi() // 多選模式, 默認模式;
//                        .origin(null) // 默認已選擇圖片. 只有在選擇模式爲多選時有效
                        .start(mActivity, 0);

                break;
        }
    }


    /**
     * 裁剪圖片
     *
     * @param uri
     */
    public void startPhotoZoom(Uri uri) {

        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        intent.putExtra("crop", "true");// crop=true 有這句才能出來最後的裁剪頁面.
        intent.putExtra("aspectX", 4);// 這兩項爲裁剪框的比例.
        intent.putExtra("aspectY", 4);// x:y=1:2
        intent.putExtra("outputX", 200);
        intent.putExtra("outputY", 200);
        intent.putExtra("output", Uri.fromFile(new File(mPhotopath)));
        intent.putExtra("outputFormat", "JPEG");// 返回格式
        intent.putExtra("return-data", true);
        startActivityForResult(intent, 1);

    }


    /**
     * 返回接收數據處理
     *
     * @param requestCode
     * @param resultCode
     * @param data
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case 0://選擇或拍照後返回
                try {
                    // 獲取返回的圖片列表(存放的是圖片路徑)
                    List<String> path = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
                    if (path.size() > 0) {
                        // 處理你自己的邏輯 ....
                        PUB.tlog.d(path);

                        File mFile = new File(path.get(0).toString());
                        if (mFile.exists()) {
                            //裁剪
                            startPhotoZoom(Uri.fromFile(mFile));
                        } else {
                            ToastUtil.show(getApplicationContext(), "文件不存在!");
                        }
                    }
                }
                catch (Exception ex){
                    PUB.tlog.i(ex);
                }

                break;
            case 1://裁剪圖片後
                 if (data == null) {
                    return;
                 }

                Uri uri = Uri.parse("file://" + mPhotopath);
                iconActivityCiv.setImageURI(uri);

                //上傳照片
                File file = new File(mPhotopath);
                DoUpload(file);

                break;

        }


        super.onActivityResult(requestCode, resultCode, data);
    }


    /**
     * 上傳照片
     *
     * @param file
     */
    private void DoUpload(File file) {

        Map<String, Object> map = new HashMap<String, Object>();
        map.put("user_id", MainActivity.mLogin.getResult().getUser_id());

        Handler mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                if (msg.what == 0) {// 請求成功
                    status api = new status();
                    api = (status) msg.obj;

                    if (api.status == 1) {
                        //成功
                        mLogin.getResult().setHead_pic(api.result.toString());

                        Uri uri = Uri.parse(DataManager.Domain + mLogin.getResult().getHead_pic());
                        ImagePipeline imagePipeline = Fresco.getImagePipeline();
                        imagePipeline.evictFromMemoryCache(uri);
                        imagePipeline.evictFromDiskCache(uri);
                        // combines above two lines
                        imagePipeline.evictFromCache(uri);

                        //刪除照片
                        File file = new File(mPhotopath);
                        if (file.exists()) {
                            file.delete();
                            //文件刪除
                            PUB.tlog.d("刪除文件:" + mPhotopath);
                        }

                        finish();

                    }
                    ToastUtil.show(getApplicationContext(), api.msg);

                } else {
                    ToastUtil.show(getApplicationContext(), msg.obj.toString());
                }

            }
        };
        OkHttp3ClientManager.getInstance().photoUploadExecute(DataManager.API("update_pic"), map, "file", file, mHandler, status.class);
    }

}



發佈了25 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章