Android中调到相册剪切图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mr_GLY_di/article/details/53204256

第一步:定义一个工具类,用来跳转相册剪切图片

package com.gly.lvyouju.utils;

import com.gly.lvyouju.baseactivity.BaseActivity;
import android.content.Intent;
import android.net.Uri;

/**
 * 跳转相册裁剪图片的工具类
 * @author 高留洋
 * 需要传入上下文和图片保存的路径
 */
public class CropPictureUtil {

    public static void cropPicture(BaseActivity context,Uri uri){
        Intent intent = new Intent(Intent.ACTION_PICK, null);
        //类型
        intent.setType("image/*");
        // 剪切
        intent.putExtra("crop", "true");
        // 剪切比例
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        // 剪切的像素点
        intent.putExtra("outputX", 450);
        intent.putExtra("outputY", 450);

        intent.putExtra("scale", true);

        intent.putExtra("return-data", false);
        // 存放的位置
        intent.putExtra("output", uri);
        context.startActivityForResult(intent, 200);
    }
}

第二步:在Activity的onCreate方法中调用工具类

// 获取屏幕的宽度
        width = getWindowManager().getDefaultDisplay().getWidth() / 3;
        height = width / 3 * 2;
        // 动态的添加控件
        addPic = new ImageView(this);
        addPic.setLayoutParams(new LayoutParams(width, height));
        addPic.setImageResource(R.drawable.gather_send_img_add);

        // 给linearLayout动态的添加图片
        linearTop.addView(addPic);
// 给添加按钮添加点击事件,点击添加,跳到相册选择图片
        addPic.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                CropPictureUtil.cropPicture(AddActionActivity.this,
                        Uri.fromFile(actionPic));
            }
        });

第三步:在Activity的onActivityResult方法中接收
进入相册选择图片并剪切后,把处理后的图片显示到控件上

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // 剪切后的图片显示到控件上
        if (requestCode == 200) {
            if (data != null) {
                showPicture();//把图片显示到布局中
            }
        }
    }

在两个LinearLayout上动态添加图片

    /**
     * 把图片显示到布局中
     */
    private void showPicture() {

        // Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
        // R.drawable.jj);
        // 往list中添加图片
        Bitmap bitmap = BitmapFactory.decodeFile(actionPic.getAbsolutePath());
        // 压缩图片
        Bitmap compressMap = compressImage(bitmap);
//      Bitmap getMap = getThumbnail(compressMap);

        pics.add(compressMap);
        // 判断是否能放入
        if (pics.size() < 3) {// 放入第1、2张图片
            linearTop.removeAllViews();
            for (int i = 0; i < pics.size(); i++) {
                Bitmap currBitmap = pics.get(i);
                // 动态的添加控件
                ImageView imageView = new ImageView(AddActionActivity.this);
                imageView.setLayoutParams(new LayoutParams(width, height));
                imageView.setImageBitmap(currBitmap);
                linearTop.addView(imageView);

            }
            linearTop.addView(addPic);
        } else if (pics.size() == 3) {// 当放入第三张时,把添加的按钮清除
            linearTop.removeViewAt(2);
            Bitmap currBitmap = pics.get(2);
            ImageView imageView = new ImageView(AddActionActivity.this);
            imageView.setLayoutParams(new LayoutParams(width, height));
            imageView.setImageBitmap(currBitmap);
            linearTop.addView(imageView);
            linearButtom.addView(addPic);
        } else if (pics.size() < 6) {// 添加第4、5张照片
            linearButtom.removeAllViews();
            for (int i = 3; i < pics.size(); i++) {
                Bitmap currBitmap = pics.get(i);
                // 动态的添加控件
                ImageView imageView = new ImageView(AddActionActivity.this);
                imageView.setLayoutParams(new LayoutParams(width, height));
                imageView.setImageBitmap(currBitmap);
                linearButtom.addView(imageView);

            }
            linearButtom.addView(addPic);
        } else if (pics.size() == 6) {// 添加第六张时,把添加的按钮清除
            linearButtom.removeViewAt(2);
            Bitmap currBitmap = pics.get(5);
            ImageView imageView = new ImageView(AddActionActivity.this);
            imageView.setLayoutParams(new LayoutParams(width, height));
            imageView.setImageBitmap(currBitmap);
            linearButtom.addView(imageView);
        }
    }

效果:动态的添加图片

猜你喜欢

转载自blog.csdn.net/Mr_GLY_di/article/details/53204256