1. 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:onClick="paizhao"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="拍照"
/>
<Button
android:onClick="xiangce"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="相册"
/>
<ImageView
android:id="@+id/img_view"
android:layout_height="80dp"
android:layout_width="80dp"
android:src="@drawable/ic_launcher_background"
/>
</LinearLayout>
2.MainActivity
public class MainActivity extends AppCompatActivity {
private ImageView img_view;
private String path = Environment.getExternalStorageDirectory() + "/c.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img_view = (ImageView) findViewById(R.id.img_view);
}
public void paizhao(View view) {
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
startActivityForResult(intent, 999);
}
public void xiangce(View view){
Intent intent=new Intent();
intent.setAction(intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, 9999);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 999 && resultCode == RESULT_OK) {
crop(Uri.fromFile(new File(path)));
}
if (requestCode == 1000 && resultCode == RESULT_OK) {
Bitmap bitmap = data.getParcelableExtra("data");
img_view.setImageBitmap(bitmap);
}
if (requestCode==9999&&resultCode==RESULT_OK) {
Uri uri = data.getData();
img_view.setImageURI(uri);
}
}
private void crop(Uri fromFile) {
Intent intent = new Intent();
intent.setAction("com.android.camera.action.CROP");
intent.setDataAndType(fromFile, "image/*");
intent.putExtra("crop", "true");
//可以少些
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 249);
intent.putExtra("outputY", 249);
//少些
intent.putExtra("return-data", true);
startActivityForResult(intent, 1000);
}