布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/image"
android:src="@mipmap/ic_launcher"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn1"
android:text="相机"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn2"
android:text="相册"/>
</LinearLayout>
mainactivity代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView imageView;
private Button button1;
private Button button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.image);
button1 = findViewById(R.id.btn1);
button2 = findViewById(R.id.btn2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn1:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addCategory("android.intent.category.DEFAULT");
startActivityForResult(intent, 1);
break;
case R.id.btn2:
Intent intent1 = new Intent(Intent.ACTION_PICK);
intent1.setType("image/*");
startActivityForResult(intent1, 2);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case 1:
//拿到拍照的照片去裁剪
Bitmap bitmap = data.getParcelableExtra("data");
if (bitmap != null) {
Intent intent = Paicrop(bitmap);
startActivityForResult(intent, 3);
}
break;
case 2:
//拿到相册的照片去裁剪
Uri data1 = data.getData();
if (data1 != null) {
Intent intent = crop(data1);
startActivityForResult(intent, 4);
}
break;
case 3:
//拍照照片裁剪完之后赋值
Bitmap bitmap1 = data.getParcelableExtra("data");
if (bitmap1 != null) {
imageView.setImageBitmap(bitmap1);
}
break;
case 4:
//相册照片裁剪完之后赋值
Bitmap bitmap2 = (Bitmap) data.getExtras().get("data");
if (bitmap2 != null) {
imageView.setImageBitmap(bitmap2);
}
break;
}
}
}
/*
* 相册裁剪
* */
private Intent crop(Uri data1) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(data1,"image/*");
intent.putExtra("crop","true");
intent.putExtra("aspectX",1);
intent.putExtra("aspectY",1);
intent.putExtra("outputX",250);
intent.putExtra("outputY",250);
intent.putExtra("outputFormat","JPRG");
intent.putExtra("return-data",true);
return intent;
}
private Intent Paicrop(Bitmap bitmap) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");
intent.putExtra("data",bitmap);
intent.putExtra("crop",true);
intent.putExtra("aspectX",1);
intent.putExtra("aspectY",1);
intent.putExtra("outputX",170);
intent.putExtra("outputY",170);
intent.putExtra("return-data",true);
return intent;
}
}
权限
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>