60eeff99a9ec

弹出框.jpg

1.依赖

dependencies {

compile 'com.guoqi.widget:actionsheet:1.0'

}

2.代码

//1.实现接口

implements ActionSheet.OnActionSheetSelected

//2.在某个点击事件中添加:

ActionSheet.showSheet(this, this, null);

//3.然后重写点击方法:

@Override

public void onClick(int whichButton) {

switch (whichButton) {

case ActionSheet.CHOOSE_PICTURE:

//相册

choosePic();

break;

case ActionSheet.TAKE_PICTURE:

//拍照

takePic();

break;

case ActionSheet.CANCEL:

//取消

break;

}

}

//加入自己的逻辑

//去寻找是否已经有了相机的权限

if (ContextCompat.checkSelfPermission(MineValidateActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {

//Toast.makeText(MainActivity.this,"您申请了动态权限",Toast.LENGTH_SHORT).show();

//如果有了相机的权限有调用相机

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");

// 判断存储卡是否可以用,可用进行存储

if (hasSdcard()) {

intent.putExtra(MediaStore.EXTRA_OUTPUT,

Uri.fromFile(new File(Environment.getExternalStorageDirectory(), ".jpg")));

}

startActivityForResult(intent, 2);

} else {

//否则去请求相机权限

ActivityCompat.requestPermissions(MineValidateActivity.this, new String[]{Manifest.permission.CAMERA}, 100);

//如果有了相机的权限有调用相机

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");

// 判断存储卡是否可以用,可用进行存储

if (hasSdcard()) {

intent.putExtra(MediaStore.EXTRA_OUTPUT,

Uri.fromFile(new File(Environment.getExternalStorageDirectory(), ".jpg")));

}

startActivityForResult(intent, 2);

}

//加入自己的逻辑

private void choosePic() {

Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

startActivityForResult(intent, 1);

}

@Override

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 1 && resultCode == RESULT_OK) {

Uri data1 = data.getData();

mIvImg1.setImageURI(data1);

if (ActionSheet.){

}

}

if (requestCode == 2 && resultCode == RESULT_OK) {

if (hasSdcard()) {

File tempFile = new File(Environment.getExternalStorageDirectory(), ".jpg");

Uri uri = Uri.fromFile(tempFile);

mIvImg2.setImageURI(uri);

} else {

Toast.makeText(MineValidateActivity.this, "未找到存储卡,无法存储照片!", Toast.LENGTH_SHORT).show();

}

}

}

private boolean hasSdcard() {

return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);

}

3.源码

public class ActionSheet {

public static final int CHOOSE_PICTURE = 100;

public static final int TAKE_PICTURE = 200;

public static final int CANCEL = 300;

public interface OnActionSheetSelected {

void onClick(int whichButton);

}

public ActionSheet() {

}

public static Dialog showSheet(Context context, final OnActionSheetSelected actionSheetSelected,

OnCancelListener cancelListener) {

final Dialog dialog = new Dialog(context, R.style.ActionSheet);

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.view_action_sheet, null);

final int cFullFillWidth = 10000;

layout.setMinimumWidth(cFullFillWidth);

TextView picTextView = (TextView) layout.findViewById(R.id.picTextView);

TextView camTextView = (TextView) layout.findViewById(R.id.camTextView);

TextView cancelTextView = (TextView) layout.findViewById(R.id.cancelTextView);

picTextView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

actionSheetSelected.onClick(CHOOSE_PICTURE);

dialog.dismiss();

}

});

camTextView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

actionSheetSelected.onClick(TAKE_PICTURE);

dialog.dismiss();

}

});

cancelTextView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

actionSheetSelected.onClick(CANCEL);

dialog.dismiss();

}

});

Window window = dialog.getWindow();

WindowManager.LayoutParams lp = window.getAttributes();

lp.x = 0;

final int cMakeBottom = -1000;

lp.y = cMakeBottom;

lp.gravity = Gravity.BOTTOM;

dialog.onWindowAttributesChanged(lp);

dialog.setCanceledOnTouchOutside(true);

if (cancelListener != null)

dialog.setOnCancelListener(cancelListener);

dialog.setContentView(layout);

dialog.show();

return dialog;

}

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐