【发布时间】:2022-02-08 15:17:15
【问题描述】:
某些功能需要很长时间才能执行。我想让用户等待一个进度条。 不幸的是,当我运行这个时,它只会在我的函数结束时运行,而不是在我想要的时候。 让我解释一下,我使用“sendloading()”方法启动我的进度条,但在我的测试期间,该条仅在处理其他函数“copyAssets”或“createOnClicBtnInsert()”后显示。 谁能给我解释一下为什么?
这是我的代码:
@Override
public void onViewCreated(@NonNull final View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
view.findViewById(R.id.btnInsertDataset2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!hasPermissions(getContext(),Permissions)){
lay_dataset2 = view.findViewById(R.id.lay_dataset2);
messagePerm();
}else {
sendLoading(); //MY PROGRESS BAR
btnInsert = view.findViewById(R.id.btnInsertDataset2);
/** if perm ok -> insert*/
copyAssets();
createOnClicBtnInsert();
view.findViewById(R.id.btnDeleteDataset2).setEnabled(true);
Toast.makeText(getContext(), "Insert Success", Toast.LENGTH_SHORT).show();
}
}
});
}
这是我的进度条代码:
public void sendLoading() {
int llPadding = 30;
LinearLayout ll = new LinearLayout(getContext());
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.setPadding(llPadding, llPadding, llPadding, llPadding);
ll.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams llParam = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
llParam.gravity = Gravity.CENTER;
ll.setLayoutParams(llParam);
ProgressBar progressBar = new ProgressBar(getContext());
progressBar.setIndeterminate(true);
progressBar.setPadding(0, 0, llPadding, 0);
progressBar.setLayoutParams(llParam);
llParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
llParam.gravity = Gravity.CENTER;
TextView tvText = new TextView(getContext());
tvText.setText("Loading ...");
tvText.setTextColor(Color.parseColor("#000000"));
tvText.setTextSize(20);
tvText.setLayoutParams(llParam);
ll.addView(progressBar);
ll.addView(tvText);
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setCancelable(true);
builder.setView(ll);
AlertDialog dialog = builder.create();
dialog.show();
Window window = dialog.getWindow();
if (window != null) {
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.copyFrom(dialog.getWindow().getAttributes());
layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT;
layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(layoutParams);
}
}
【问题讨论】:
标签: java android progress-bar