版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}
}
效果: