设置头像

本文详细介绍如何在Android应用中使用PopupWindow和Dialog实现图片选择功能,包括从相册选择和使用相机拍摄,并进行图片裁剪处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//popuwindow方法
public class MainActivity extends Activity implements OnClickListener {

private ImageView img_view;
private Button btn_icon;
private PopupWindow popupWindow;
private View parent;
private Button btn_xiangce;
private Button btn_paizhao;
private String path = Environment.getExternalStorageDirectory()+"/head.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    parent = View.inflate(MainActivity.this, R.layout.activity_main, null);	
    //初始化控件
    img_view = (ImageView) findViewById(R.id.img_view);
    btn_icon = (Button) findViewById(R.id.btn_icon);
	//创建popupwindow对象
    View contentView = View.inflate(MainActivity.this, R.layout.pop_layout, null);
    popupWindow = new PopupWindow(contentView, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    popupWindow.setTouchable(true);
    popupWindow.setFocusable(true);
    popupWindow.setOutsideTouchable(true);
    popupWindow.setBackgroundDrawable(new BitmapDrawable());
    //通过popupwindow的视图对象去找到里面的控件
    btn_xiangce = (Button) contentView.findViewById(R.id.btn_xiangce);
    btn_paizhao = (Button) contentView.findViewById(R.id.btn_paizhao);
    //点击按钮,,弹出popupwindow
    btn_icon.setOnClickListener(this);
    btn_xiangce.setOnClickListener(this);
    btn_paizhao.setOnClickListener(this);
}

@Override
public void onClick(View v) {
	switch (v.getId()) {
	case R.id.btn_icon:
		//显示popupwindow
		popupWindow.showAtLocation(parent, Gravity.BOTTOM, 0, 0);
		break;
	case R.id.btn_xiangce:
		//打开相册
		Intent intent = new Intent(Intent.ACTION_PICK);
		intent.setType("image/*");
		startActivityForResult(intent, 99);
		//关闭窗口
		popupWindow.dismiss();
		break;
	case R.id.btn_paizhao:
		//打开相机
		Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		intent2.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
		startActivityForResult(intent2, 89);
		//关闭窗口
		popupWindow.dismiss();
		break;

	default:
		break;
	}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	// TODO Auto-generated method stub
	super.onActivityResult(requestCode, resultCode, data);
	if (requestCode == 99 && resultCode == RESULT_OK) {
		//裁剪
		crop(data.getData());
	}
	if (requestCode == 100 && resultCode == RESULT_OK) {
		//获取裁剪以后的图片
		Bitmap bitmap = data.getParcelableExtra("data");
		img_view.setImageBitmap(bitmap);
	}
	if (requestCode == 89 && resultCode == RESULT_OK) {
		Uri uri = Uri.fromFile(new File(path));
		crop(uri);
	}
}
/*
 * 裁剪的方法
 */
private void crop(Uri data) {
	Intent intent = new Intent("com.android.camera.action.CROP");
	intent.setDataAndType(data, "image/*");
	intent.putExtra("crop", "true");
	intent.putExtra("aspectX", 1);
	intent.putExtra("aspectY", 1);
	intent.putExtra("outputX", 251);
	intent.putExtra("outputY", 251);
	intent.putExtra("return-data", true);
	startActivityForResult(intent, 100);
}

}
——————————————————————————————————
//Dialog方法
public class WoFragment extends Fragment implements OnClickListener {
private ImageView img_view;

private View view;

private Builder builder;

private AlertDialog alertDialog;

private View diogView;

private Button btn_paizhao;

private TextView txtView;

private Button btn_xiangce;

private String path=Environment.getExternalStorageDirectory()+"/head.jpg";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
view = inflater.inflate(R.layout.fragment_wode, container,false);
img_view = (ImageView) view.findViewById(R.id.img_view);
txtView = (TextView) view.findViewById(R.id.txtView);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
//添加点击事件
img_view.setOnClickListener(this);
}
private void creatediog() {
// TODO Auto-generated method stub
builder = new AlertDialog.Builder(getActivity());
alertDialog = builder.create();
alertDialog.setTitle(“请选择”);
diogView = View.inflate(getActivity(), R.layout.dialog_layout, null);
alertDialog.setView(diogView);
btn_paizhao = (Button) diogView.findViewById(R.id.btn_paizhao);
btn_xiangce = (Button) diogView.findViewById(R.id.btn_xiangce);
btn_paizhao.setOnClickListener(this);
btn_xiangce.setOnClickListener(this);
alertDialog.show();

}
   @Override
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		if (requestCode==89) {
			Crop(Uri.fromFile(new File(path)));
		}
		if (requestCode==99) {
			
			Crop(data.getData());
		}
		if (requestCode==100) {
			img_view.setImageBitmap((Bitmap)data.getParcelableExtra("data"));
		}
	}
@Override
public void onClick(View v) {
	// TODO Auto-generated method stub
	switch (v.getId()) {
	case R.id.img_view:
		creatediog();
		break;
	case R.id.btn_paizhao:
		Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
		startActivityForResult(intent, 89);
		alertDialog.dismiss();
		break;
	case R.id.btn_xiangce:
		Intent intent2 = new Intent(Intent.ACTION_PICK);
		intent2.setType("image/*");
		startActivityForResult(intent2, 99);
		alertDialog.dismiss();
		break;

	default:
		break;
	}
}
private  void Crop(Uri data) {
	// TODO Auto-generated method stub
  Intent intent = new Intent("com.android.camera.action.CROP");
  intent.setDataAndType(data, "image/*");
  intent.putExtra("crop", "true");
  intent.putExtra("aspectX", 1);
  intent.putExtra("aspectY", 1);
  intent.putExtra("outputX", 251);
  intent.putExtra("outputY", 251);
  intent.putExtra("return-data", true);
  startActivityForResult(intent, 100);
  
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值