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;
}
}