BottomSheetBehavior 底部弹窗蓝牙分享

668 阅读1分钟

public class BackgroundNoteDialog extends BottomSheetDialogFragment {

private DialogBackgroundNoteBinding binding;



public void setStandard(Standard standard) {
    this.standard = standard;
}

private Standard standard;


@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    binding = DialogBackgroundNoteBinding.inflate(inflater, container, false);
    return binding.getRoot();
}

@SuppressLint("ClickableViewAccessibility")
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Light_NoTitleBar);

    binding.fab.setOnClickListener(v -> {
        Bitmap bitmap = getBitmapByView(binding.getRoot());

        /** * 分享图片 */

        Intent share_intent = new Intent();
        share_intent.setAction(Intent.ACTION_SEND);//设置分享行为
        share_intent.setType("image/*");  //设置分享内容的类型
        share_intent.setPackage("com.android.bluetooth");
        share_intent.putExtra(Intent.EXTRA_STREAM, saveBitmap(bitmap,"xxx文档"));
        //创建分享的Dialog
        requireActivity().startActivity(share_intent);
    });
    binding.fileName.setText(standard.getFileName());
    binding.methodName.setText(standard.getMethodName());
    binding.projectName.setText(standard.getProjectName());
    binding.FZname.setText(standard.getFZname());
    binding.serialNumber.setText(standard.getSerialNumber());
    binding.sampleName.setText(standard.getSampleName());
    binding.measuringTime.setText(standard.getMeasuringTime());
    binding.measuringResult.setText(standard.getMeasuringResult());
}

/** * 将图片存到本地 */
private static Uri saveBitmap(Bitmap bm, String picName) {
    try {
        String dir= Environment.getExternalStorageDirectory().getAbsolutePath()+"/renji/"+picName+".jpg";
        File f = new File(dir);
        if (!f.exists()) {
            f.getParentFile().mkdirs();
            f.createNewFile();
        }
        FileOutputStream out = new FileOutputStream(f);
        bm.compress(Bitmap.CompressFormat.PNG, 90, out);
        out.flush();
        out.close();
        Uri uri = Uri.fromFile(f);
        return uri;
    }  catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}


@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

// Objects.requireNonNull(getDialog()).setCancelable(false); // Objects.requireNonNull(getDialog()).setCanceledOnTouchOutside(false); Window window = getDialog().getWindow(); //window.setWindowAnimations(R.style.TopDialogAnimation); WindowManager.LayoutParams windowParams = window.getAttributes(); windowParams.dimAmount = 0.0f;//Dialog外边框透明 window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); //高度自适应,宽度全屏 windowParams.gravity = Gravity.TOP; //在顶部显示 window.setAttributes(windowParams); }

@Override
public void show(FragmentManager manager, String tag) {

    try {
        //在每个add事务前增加一个remove事务,防止连续的add
        manager.beginTransaction().remove(this).commit();
        super.show(manager, tag);
        //m.sendEmptyMessageDelayed(1,2000);
    } catch (Exception e) {
        //同一实例使用不同的tag会异常,这里捕获一下
        e.printStackTrace();
    }
}

/**
 * 函数描述: 获取行的内容和宽度
 * 参数描述:
 * 返回值:
 */
private String  getTextNeiRon(TextView edit){
    Layout layout = edit.getLayout();
    String text = edit.getText().toString();
    int start = layout.getLineEnd(0);
    int end;
    StringBuilder line= new StringBuilder();
    for (int i = 1; i < edit.getLineCount(); i++) {
        end = layout.getLineEnd(i);

        line.append(text.substring(start, end)); //指定行的内容
        start = end;
        //float width = layout.getLineWidth(i); //指定行的宽度

    }
    return line.toString();
}


private BottomSheetBehavior mBottomSheetBehavior;

@Override
public void onStart() {
    super.onStart();
    Dialog dialog = getDialog();
    WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();
    layoutParams.dimAmount = 0f;//调整透明度
    dialog.getWindow().setAttributes(layoutParams);

    if (dialog != null) {
        View bottomSheet = dialog.findViewById(R.id.design_bottom_sheet);
        bottomSheet.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
    }
    final View view = getView();
    view.post(new Runnable() {
        @Override
        public void run() {
            View parent = (View) view.getParent();
            CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) (parent).getLayoutParams();
            mBottomSheetBehavior = (BottomSheetBehavior) params.getBehavior();
            assert mBottomSheetBehavior != null;
            mBottomSheetBehavior.setPeekHeight(view.getMeasuredHeight() / 2);
        }
    });
}


public static Bitmap getBitmapByView(NestedScrollView scrollView) {
    int h = 0;
    Bitmap bitmap = null;
    for (int i = 0; i < scrollView.getChildCount(); i++) {
        h += scrollView.getChildAt(i).getHeight();
    }
    bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,Bitmap.Config.RGB_565);
    final Canvas canvas = new Canvas(bitmap);
    scrollView.draw(canvas);
    return bitmap;
}

}