1、权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
2、PopWindow.XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/paizhao"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="拍照"
android:gravity="center"
android:layout_marginTop="@dimen/dp_10"/>
<TextView
android:id="@+id/xiangce"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="相册"
android:gravity="center"
android:layout_marginTop="@dimen/dp_10"/>
<TextView
android:id="@+id/cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消"
android:gravity="center"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_30"/>
</LinearLayout>
3、MainActivity
icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View view = View.inflate(MyInfoActivity.this, R.layout.pop, null);
pop = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
pop.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
pop.showAtLocation(view, Gravity.BOTTOM, 0, 0);
TextView paizhao = (TextView) view.findViewById(R.id.paizhao);
TextView xiangce = (TextView) view.findViewById(R.id.xiangce);
TextView cancel = (TextView) view.findViewById(R.id.cancel);
//拍照
paizhao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addCategory("android.intent.category.DEFAULT");
startActivityForResult(intent, 1000);
}
});
//相册
xiangce.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, 2000);
}
});
//取消
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pop.dismiss();
}
});
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1000) {
Bitmap bitmap = data.getParcelableExtra("data");
icon.setImageBitmap(bitmap);
pop.dismiss();
}
if (requestCode == 2000) {
Uri uri = data.getData();
icon.setImageURI(uri);
pop.dismiss();
}
if (requestCode == 3000) {
Bitmap bitmap = data.getParcelableExtra("data");
icon.setImageBitmap(bitmap);
}
}
//裁剪
private void crop(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
//裁减比例1:1
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//裁剪后图片大小
intent.putExtra("outputX", 250);
intent.putExtra("outputY", 250);
intent.putExtra("outputFormat", "JPEG");
intent.putExtra("noFaceDatection", false);
intent.putExtra("return-data", true);
startActivityForResult(intent, 3000);
}