添加jar包picasso-2.5.2.jar
1.MianActivity
private Uri imageUri;
private int from = -1;
在onCreate中添加
initViews();
private void initViews() {
photoList = new ArrayList<>();
photoList.add("拍照");
photoList.add("从相册中选择");
}
private void dialogListShow(final int i) {
View photoView = View.inflate(MyZiliaoActivity.this, R.layout.item_listview_dialog, null);//填充ListView布局
ListView listView = (ListView) photoView.findViewById(R.id.lv_item_listview_dialog);//初始化ListView控件
listView.setAdapter(new DialogListViewAdapter(MyZiliaoActivity.this, photoList));//ListView设置适配器
final AlertDialog dialog2 = new AlertDialog.Builder(MyZiliaoActivity.this)
.setView(photoView)//在这里把写好的这个listview的布局加载dialog中
.create();
dialog2.show();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {//响应listview中的item的点击事件
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
TextView tv = (TextView) arg1.findViewById(R.id.tv_item_listview_dialog_text);//取得每条item中的textview控件
String aiche = tv.getText().toString();
if ("拍照".equals(aiche)) {
File outputImage = new File(getExternalCacheDir(),
"output_image"+i+".jpg");
try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
if (Build.VERSION.SDK_INT >= 24) {
imageUri = FileProvider.getUriForFile(MyZiliaoActivity.this,
"com.example.administrator.ydxcfwpt.fileprovider", outputImage);
} else {
imageUri = Uri.fromFile(outputImage);
}
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
from = i;
startActivityForResult(intent, TAKE_PHOTO);
} else if ("从相册中选择".equals(aiche)) {
Intent intent = new Intent("android.intent.action.GET_CONTENT");
intent.setType("image/*");
from = i;
startActivityForResult(intent, CHOOSE_PHOTO);
}
dialog2.dismiss();
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case TAKE_PHOTO:
if (resultCode == RESULT_OK) {
beginCrop(imageUri,from);
}
break;
case CHOOSE_PHOTO:
if (resultCode == RESULT_OK) {
if (Build.VERSION.SDK_INT >= 19) {
handleImageOnKatKit(data);
} else {
handleImageBeforKatKit(data);
}
}
break;
case Crop.REQUEST_PICK:
if (resultCode == RESULT_OK) {
beginCrop(data.getData(),from);
}
break;
case Crop.REQUEST_CROP:
handleCrop(resultCode, data);
}
}
// 将裁剪回来的数据进行处理
private void handleCrop(int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri uri = Crop.getOutput(data);
try {
if (from == 1) {
iv_touxiang.setImageBitmap(null);
touxiangFile = new File(ImageUtils.saveBitmap(MyZiliaoActivity.this, uri.getPath()));
Uri image = Uri.fromFile(touxiangFile);
Picasso.with(MyZiliaoActivity.this).load(image)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.networkPolicy(NetworkPolicy.NO_CACHE)
.error(R.drawable.morentouxiang)
.into(iv_touxiang);
Log.i("image", "touxiangFile=" + touxiangFile.getAbsolutePath());
} else if (from == 2) {
iv_zhengmian.setImageBitmap(null);
zhengmianFile = new File(ImageUtils.saveBitmap(MyZiliaoActivity.this, uri.getPath()));
Uri image = Uri.fromFile(zhengmianFile);
Picasso.with(MyZiliaoActivity.this).load(image)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.networkPolicy(NetworkPolicy.NO_CACHE)
.error(R.drawable.zhanwei)
.into(iv_zhengmian);
Log.i("image", "zhengmianFile=" + zhengmianFile.getAbsolutePath());
}else if (from == 3) {
iv_fanmian.setImageBitmap(null);
fanmianFile = new File(ImageUtils.saveBitmap(MyZiliaoActivity.this, uri.getPath()));
Uri image = Uri.fromFile(fanmianFile);
Picasso.with(MyZiliaoActivity.this).load(image)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.networkPolicy(NetworkPolicy.NO_CACHE)
.error(R.drawable.beimian)
.into(iv_fanmian);
Log.i("image", "fanmianFile=" + fanmianFile.getAbsolutePath());
}else if (from == 4) {
iv_shouchi.setImageBitmap(null);
shouchiFile = new File(ImageUtils.saveBitmap(MyZiliaoActivity.this, uri.getPath()));
Uri image = Uri.fromFile(shouchiFile);
Picasso.with(MyZiliaoActivity.this).load(image)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.networkPolicy(NetworkPolicy.NO_CACHE)
.error(R.drawable.shouchi)
.into(iv_shouchi);
Log.i("image", "shouchiFile=" + shouchiFile.getAbsolutePath());
}
} catch (Exception e) {
e.printStackTrace();
}
} else if (resultCode == Crop.RESULT_ERROR) {
Toast.makeText(MyZiliaoActivity.this, Crop.getError(data).getMessage(),
Toast.LENGTH_SHORT).show();
}
}
// 开始裁剪
private void beginCrop(Uri uri,int i) {
Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped"+i+".jpg"));
// start() 方法根据其的需求选择不同的重载方法
Crop.of(uri, destination).withMaxSize(500,500).start(MyZiliaoActivity.this);
}
private void handleImageBeforKatKit(Intent data) {
Uri uri = data.getData();
String imagePath = getImagePath(uri, null);
disPlayImage(imagePath);
}
@TargetApi(19)
private void handleImageOnKatKit(Intent data) {
String imagePath = null;
Uri uri = data.getData();
if (DocumentsContract.isDocumentUri(MyZiliaoActivity.this, uri)) {
// 如果是Document类型的uri,则通过Document Id处理
String docId = DocumentsContract.getDocumentId(uri);
if ("com.android.providers.media.documents".equals(uri.getAuthority())) {
String id = docId.split(":")[1];
String selection = MediaStore.Images.Media._ID + "=" + id;
imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);
} else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())) {
Uri contentUri = ContentUris.withAppendedId(Uri.parse(
"content://downloads/public/_downloads"), Long.valueOf(docId));
imagePath = getImagePath(contentUri, null);
}
} else if ("content".equalsIgnoreCase(uri.getScheme())) {
//如果是content类型的uri,则使用普通方式处理
imagePath = getImagePath(uri, null);
} else if ("file".equalsIgnoreCase(uri.getScheme())) {
//如果是file类型的uri,则直接获取图片路径即可
imagePath = uri.getPath();
}
disPlayImage(imagePath);
}
private void disPlayImage(String imagePath) {
if (imagePath != null) {
Uri uri = Uri.fromFile(new File(imagePath));
beginCrop(uri,from);
} else {
Toast.makeText(MyZiliaoActivity.this, "图片选取失败", Toast.LENGTH_SHORT).show();
}
}
private String getImagePath(Uri uri, String selection) {
String path = null;
//通过uri和selection来获取图片的真是路径
Cursor cursor = getContentResolver().query(uri, null, selection, null, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
}
cursor.close();
}
return path;
在点击事件中添加方法
dialogListShow(1)