ProgressDialog không được dùng nữa. Cái nào thay thế để sử dụng?


213

Tôi đã đi qua để thấy rằng ProgressDialogbây giờ không được chấp nhận. Cái gì sẽ thay thế một cái để sử dụng thay cho cái đó ngoài ProgressBar. Tôi đang sử dụng phiên bản android studio 2.3.3.

ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.show();

Câu trả lời:


196

Vâng, API level 26nó không được dùng nữa. Thay vào đó, bạn có thể sử dụng progressBar.

Để tạo nó theo chương trình:

Đầu tiên hãy tham khảo bố cục gốc

RelativeLayout layout = findViewById(R.id.display);  //specify here Root layout Id

hoặc là

RelativeLayout layout = findViewById(this);

Sau đó thêm thanh tiến trình

progressBar = new ProgressBar(youractivity.this, null, android.R.attr.progressBarStyleLarge);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100, 100);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(progressBar, params);

Để hiển thị thanh tiến trình

progressBar.setVisibility(View.VISIBLE);

Để ẩn thanh tiến trình

progressBar.setVisibility(View.GONE);

Để vô hiệu hóa tương tác người dùng, bạn chỉ cần thêm đoạn mã sau

getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
                           WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

Để lấy lại tương tác người dùng, bạn chỉ cần thêm đoạn mã sau

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

Chỉ để tham khảo trong tương lai, thay đổi android.R.attr.progressBarStyleSmallthành android.R.attr.progressBarStyleHorizontal.

Mã dưới đây chỉ hoạt động ở trên API level 21

progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));

Để tạo nó thông qua xml:

<ProgressBar
        android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:max="100"
        android:backgroundTint="@color/white"
        android:layout_below="@+id/framelauout"
        android:indeterminateTint="#1a09d6"
        android:layout_marginTop="-7dp"/>

Trong hoạt động của bạn

progressBar = (ProgressBar) findViewById(R.id.progressbar);

Hiển thị / ẩn thanh tiến trình là như nhau

 progressBar.setVisibility(View.VISIBLE); // To show the ProgressBar 
 progressBar.setVisibility(View.INVISIBLE); // To hide the ProgressBar

Đây là một hình ảnh mẫu của nó sẽ trông như thế nào:

Để biết thêm chi tiết:
1. Tham khảo một
2. Tham khảo Hai


Giống như bạn đang sử dụng cái này và bạn đi như yeah cuối cùng hộp thoại tiến bộ bị phản đối, vì vậy tôi có thể cho thấy tiềm năng của mình với thế giới: D, đùa thôi, cảm ơn rất nhiều vì câu trả lời chi tiết đó.
Mohamed Hajr

1
nhưng làm thế nào để thiết lậpMessage () cho nó?
Reverie_ss


vui lòng cập nhật mã xml thành "@android: color / white"
musterjunk

Để có được thanh ngang, vui lòng sử dụng: ProgressBar ProgressBar = new ProgressBar (youractivity.this, null, android.R.attr.proTHERBarStyleHTHER); ProgressBar.setInetermine (đúng);
taranjeetsapra

43

bạn có thể sử dụng AlertDialognhư ProgressDialogmã dưới đây cho ProgressDialog. Chức năng này bạn cần gọi bất cứ khi nào bạn hiển thị hộp thoại tiến trình.

Mã số:

    public void setProgressDialog() {

    int llPadding = 30;
    LinearLayout ll = new LinearLayout(this);
    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(this);
    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(this);
    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(this);
    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);
    }
}

Đầu ra:

nhập mô tả hình ảnh ở đây


Làm thế nào để loại bỏ nó?
Jay Dangar

1
tạo một lớp cơ sở như BaseActivity sau đó sau khi thêm đoạn mã này, cũng thêm một hộp thoại loại bỏ một phương thức, nhưng đối với đó, bạn cần xác định đối tượng 'AlertDialog' trên toàn cầu
Kishan Donga

sau đó chỉ cần gọi phương thức hộp thoại.dismiss () bên trong phương thức hộp thoại ẩn của bạn.
Kishan Donga

1
Mọi thứ đều ổn nhưng khi chạm vào bất cứ nơi nào trên hộp thoại trên màn hình sẽ bị loại bỏ. Các cuộc gọi dịch vụ đang diễn ra và người khởi kiện có thể loại bỏ nó và chơi với ui không tốt. Có giải pháp nào không?
Vivek Kumar

Bạn có thể đặt thiết bị không thể hủy được, nhưng xoay thiết bị hoặc sử dụng màn hình chia nhỏ thì dù sao nó cũng sẽ bị loại bỏ và người dùng có thể tương tác với giao diện người dùng chưa sẵn sàng. Có lẽ AlertDialogkhông nên sử dụng ở đây.
Mèo Meow 2012

30

Lớp này không được dùng ở cấp độ API 26. ProgressDialog là hộp thoại theo chế độ, ngăn người dùng tương tác với ứng dụng. Thay vì sử dụng lớp này, bạn nên sử dụng một chỉ báo tiến trình như ProgressBar, có thể được nhúng trong giao diện người dùng của ứng dụng. Ngoài ra, bạn có thể sử dụng thông báo để thông báo cho người dùng về tiến trình của nhiệm vụ. liên kết

Nó không được chấp nhận Android OGoogletiêu chuẩn UI mới


1
"Lớp này không được dùng trong API cấp 26" được sử dụng thay vì ngày. Họ không muốn bạn sử dụng nó nữa. Vâng, đó là vì các tiêu chuẩn giao diện người dùng mới, nhưng họ áp dụng cho mọi cấp độ API ...
creativecreatorormaybenot

28
"Nó không được dùng ở Android O vì tiêu chuẩn UI mới của Google" - liên kết vui lòng chuẩn UI mới
Ajay S

22
Và lý do để phản đối nó là vì nó chặn đầu vào của người dùng? Đôi khi tôi tự hỏi loại kỹ sư Google đang khịt mũi. Sử dụng hộp thoại chặn dễ dàng hơn nhiều so với việc phải ẩn / tắt các điều khiển đầu vào và sau đó kích hoạt thanh tiến trình. Suy nghĩ dại dột về phần của Google.
TheRealChx101

@ TheRealChx101 Giao diện người dùng Android được thiết kế xung quanh khiến người dùng cảm thấy tự do sai lầm với chi phí cho các giải pháp đắt tiền để ngăn chặn các lỗi nghiêm trọng do nó gây ra. Đợi cho đến khi bạn nhận được quyền và những gì nhà mạng đã trả cho Google để nói rằng bạn có thể và không thể truy cập.
Giỏ hàng bị bỏ rơi

3
Tôi đoán họ quan tâm hơn đến việc ngăn chặn lạm dụng các hộp thoại phương thức: đôi khi chúng được hiển thị để khiến người dùng chờ kết thúc một thao tác trong trường hợp người dùng không cần phải chờ đợi, nhưng có thể tiếp tục làm những việc khác , do đó làm cho họ chờ đợi làm giảm trải nghiệm người dùng một cách không cần thiết. Mặc dù vậy, có rất nhiều tình huống trong đó người dùng không có lựa chọn nào khác ngoài việc chờ đợi một thao tác hoàn tất, vì vậy tôi đồng ý rằng nên có một phương pháp tiêu chuẩn không được chấp nhận cho những trường hợp này thay vì buộc mỗi nhà phát triển tự thực hiện.
Fran Marzoa

25

Bạn có thể chỉ cần thiết kế giao diện xml cho thanh tiến trình của mình và chuyển nó dưới dạng chế độ xem sang AlertDialog, sau đó hiển thị hoặc loại bỏ hộp thoại bất cứ lúc nào bạn muốn.

lũy tiến

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:padding="13dp"
    android:layout_centerHorizontal="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ProgressBar
        android:id="@+id/loader"
        android:layout_marginEnd="5dp"
        android:layout_width="45dp"
        android:layout_height="45dp" />
    <TextView
        android:layout_width="wrap_content"
        android:text="Loading..."
        android:textAppearance="?android:textAppearanceSmall"
        android:layout_gravity="center_vertical"
        android:id="@+id/loading_msg"
        android:layout_toEndOf="@+id/loader"
        android:layout_height="wrap_content" />

</LinearLayout>

Mã mã hiển thị hộp thoại tiến trình. Chỉ cần sao chép mã này và dán nó đoạn của bạn.

  AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
       private void setDialog(boolean show){
            builder.setView(R.layout.progress);
            Dialog dialog = builder.create();
            if (show)dialog.show();
            else dialog.dismiss();
        }

Sau đó, chỉ cần gọi phương thức bất cứ khi nào bạn muốn hiển thị tiến trình và chuyển true thành đối số để hiển thị hoặc sai để loại bỏ hộp thoại.


2
@Alok Rajasukumaran có vẻ như bạn đang sử dụng hoạt động, chỉ cần thay thế nó bằng this, để nó trông như thế này. Hãy AlertDialog.Builder builder = new AlertDialog.Builder(this);chắc chắn rằng bạn đang sao chép đúng mã.
DevMike01

1
layout_toEndOfcó thể được gỡ bỏ vì không dành choLinearLayout
Đánh dấu

21

ProgressBar rất đơn giản và dễ sử dụng, tôi dự định thực hiện điều này giống như hộp thoại tiến trình đơn giản. Bước đầu tiên là bạn có thể tạo bố cục xml của hộp thoại mà bạn muốn hiển thị, giả sử chúng tôi đặt tên cho bố cục này

layout_loading_dialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="20dp">
    <ProgressBar
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="4"
        android:gravity="center"
        android:text="Please wait! This may take a moment." />
</LinearLayout>

Bước tiếp theo là tạo AlertDialog sẽ hiển thị bố cục này với ProgressBar

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCancelable(false); // if you want user to wait for some process to finish,
builder.setView(R.layout.layout_loading_dialog);
AlertDialog dialog = builder.create();

bây giờ tất cả những gì còn lại là hiển thị và ẩn hộp thoại này trong các sự kiện nhấp chuột của chúng tôi như thế này

dialog.show(); // to show this dialog
dialog.dismiss(); // to hide this dialog

và đó là nó, nó sẽ hoạt động, vì bạn có thể thấy nó rất đơn giản và dễ thực hiện ProgressBar thay vì ProgressDialog. bây giờ bạn có thể hiển thị / loại bỏ hộp thoại này trong Handler hoặc ASyncTask, tùy theo nhu cầu của bạn


Xin vui lòng, thay đổi progress_dialog.show();để builder.show();. Cảm ơn bạn.
Matheus Miranda

2
Tôi đã đổi tên thành đúng đối tượng AlertDialog, show()/ dismiss(), nhưng tôi đã không đặt builder.show()vì sau đó để loại bỏ chúng tôi sẽ phải làm điều dialog.dismiss()đó gây nhầm lẫn cho người thích giữ mã của họ đơn giản và dễ hiểu, và cũng bởi vì builder.show()trả về AlertDialogđối tượng và chúng ta sẽ phải lưu tham chiếu AlertDialog dialog = builder.show();đó như sau đó dialog.dismiss(), việc builder.create()quay trở lại trong một số AlertDialogđối tượng sẽ dễ dàng hơn và sau đó sử dụng đối tượng đó để hiển thị và ẩn hộp thoại
Syed Naeem

Chúng tôi có thể sử dụng "runOnUiThread (new Runnable () {@Override public void run () {hộp thoại.show / dismiss ();}});", nếu luồng gọi không phải là Chủ đề giao diện người dùng chính. (hữu ích khi chúng tôi sử dụng để gọi từ WebView - phương thức nên ghi lại.)
SHS

15

Có, ProgressDialog không được dùng nữa nhưng Dialog thì không.

Bạn có thể thổi phồng tệp XML của riêng bạn (chứa thanh tiến trình và tải văn bản) vào đối tượng hộp thoại của bạn và sau đó hiển thị hoặc ẩn tệp bằng cách sử dụng show()và các dismiss()hàm. Đây là một ví dụ (Kotlin):

Lớp ProgressDialog :

class ProgressDialog {
companion object {
    fun progressDialog(context: Context): Dialog{
        val dialog = Dialog(context)
        val inflate = LayoutInflater.from(context).inflate(R.layout.progress_dialog, null)
        dialog.setContentView(inflate)
        dialog.setCancelable(false)
        dialog.window!!.setBackgroundDrawable(
                ColorDrawable(Color.TRANSPARENT))
        return dialog
    }
  }
}

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:background="#fff"
android:padding="13dp"
android:layout_height="wrap_content">
<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyle"
    android:layout_width="100dp"
    android:layout_margin="7dp"
    android:layout_height="100dp"
    android:layout_above="@+id/no_jobs_pickups"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_margin="7dp"
    android:layout_toEndOf="@+id/progressBar"
    android:text="Loading..." />
</RelativeLayout>

Trong mã của bạn : Chỉ cần làmvar dialog = ProgressDialog.progressDialog(context)

Để hiển thị: dialog.show()

Trốn: dialog.dismiss()


11

Chà, nếu bạn thực sự muốn đi ngược lại ý muốn của họ, bạn vẫn có thể sử dụng Hộp thoại cảnh báo ngọt ngào hoặc tự tạo một hộp thoại .

progress_dialog_layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableRow
        android:layout_centerInParent="true"
        android:layout_width="match_parent"
        android:layout_height="64dp" >

        <ProgressBar
            android:id="@+id/progressBar2"
            style="?android:attr/progressBarStyle"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />

        <TextView
            android:gravity="center|left"
            android:id="@+id/textView9"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textColor="@color/black"
            android:textSize="18sp"
            android:text="Downloading data. Please wait.." />
    </TableRow>
</RelativeLayout>

Mã Java:

AlertDialog b;
AlertDialog.Builder dialogBuilder;

public void ShowProgressDialog() {
dialogBuilder = new AlertDialog.Builder(DataDownloadActivity.this);
LayoutInflater inflater = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE );
            View dialogView = inflater.inflate(R.layout.progress_dialog_layout, null);
            dialogBuilder.setView(dialogView);
            dialogBuilder.setCancelable(false);
            b = dialogBuilder.create();
            b.show();
        }

        public void HideProgressDialog(){

            b.dismiss();
        }

2
Tôi đã có những trải nghiệm khủng khiếp với SweetAlertDialog trong bối cảnh sản xuất, rất thận trọng khi nó rò rỉ từ cửa sổ này sang cửa sổ khác.
Jeremy

đối với tôi HideProgresskhông làm gì cả
Saeed Neamati

1
Tại sao để sử dụng một thư viện chỉ để hiển thị một hộp thoại tiến trình?
Khemraj


6

Bạn không cần phải nhập bất kỳ thư viện tùy chỉnh.

Tôi thích sử dụng hiện đại AlertDialogvì vậy đây là phiên bản Kotlin cho câu trả lời tuyệt vời được đăng bởi Kishan Donga trong trang này.

Mã Kotlin:

fun setProgressDialog(context:Context, message:String):AlertDialog {
    val llPadding = 30
    val ll = LinearLayout(context)
    ll.orientation = LinearLayout.HORIZONTAL
    ll.setPadding(llPadding, llPadding, llPadding, llPadding)
    ll.gravity = Gravity.CENTER
    var llParam = LinearLayout.LayoutParams(
                  LinearLayout.LayoutParams.WRAP_CONTENT,
                  LinearLayout.LayoutParams.WRAP_CONTENT)
    llParam.gravity = Gravity.CENTER
    ll.layoutParams = llParam

    val progressBar = ProgressBar(context)
    progressBar.isIndeterminate = true
    progressBar.setPadding(0, 0, llPadding, 0)
    progressBar.layoutParams = llParam

    llParam = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT)
    llParam.gravity = Gravity.CENTER
    val tvText = TextView(context)
    tvText.text = message
    tvText.setTextColor(Color.parseColor("#000000"))
    tvText.textSize = 20.toFloat()
    tvText.layoutParams = llParam

    ll.addView(progressBar)
    ll.addView(tvText)

    val builder = AlertDialog.Builder(context)
    builder.setCancelable(true)
    builder.setView(ll)

    val dialog = builder.create()
    val window = dialog.window
    if (window != null) {
        val layoutParams = WindowManager.LayoutParams()
        layoutParams.copyFrom(dialog.window?.attributes)
        layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT
        layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT
                dialog.window?.attributes = layoutParams
    }
    return dialog
}

Sử dụng:

val dialog = setProgressDialog(this, "Loading..")
dialog.show()

Đầu ra:

nhập mô tả hình ảnh ở đây


Làm thế nào để sử dụng trong đoạn? bối cảnh trong đoạn là gì?
roghayeh hosseini

Thông thường trong đoạn của bạn, bạn có thể có được chế độ xem hiện tại của mình, vì vậy bối cảnh nên là:view!!.context
Alessandro Ornano

4

Như đã đề cập trên trang tài liệu thay thế ProgressBar . ProgressDialogCái nhìn của có thể được nhân rộng bằng cách đặt một ProgressBarvào AlertDialog.

Bạn vẫn có thể sử dụng nó, nhưng Android không muốn bạn sử dụng nó, đó là lý do tại sao nó không được dùng nữa. Vì vậy, bạn nên xem xét giải quyết vấn đề của mình theo một cách khác, như nhúng một vấn đề ProgressBarvào Layout.


@PeterHaddad Nó hoạt động "bình thường" trong api 28 trong dự án của tôi và giống như trong apis thấp hơn. Như sự phản đối cho thấy, nó không còn được hỗ trợ và có thể không hoạt động trong tương lai.
DMonkey

3

ProgressDialog không được dùng trong API cấp 26.

"Deprecated" đề cập đến các chức năng hoặc các yếu tố đang trong quá trình được thay thế bởi các chức năng mới hơn.

ProgressDialog là một hộp thoại phương thức, ngăn người dùng tương tác với ứng dụng. Thay vì sử dụng lớp này, bạn nên sử dụng một chỉ báo tiến trình như ProgressBar, có thể được nhúng trong giao diện người dùng của ứng dụng.

Lợi thế

Cá nhân tôi sẽ nói rằng ProgressBarcó lợi thế hơn hai. ProgressBarlà một yếu tố giao diện người dùng cho biết tiến trình của một hoạt động. Hiển thị các thanh tiến trình cho người dùng theo cách không bị gián đoạn . Hiển thị thanh tiến trình trong giao diện người dùng của ứng dụng của bạn.


2

Tôi sử dụng DelayedProTHERDialog từ https://github.com/Q115/DelayedProTHERDialog Nó hoạt động tương tự như ProgressDialog với lợi ích bổ sung của độ trễ nếu cần.

Sử dụng nó tương tự như ProgressDialog trước Android O:

DelayedProgressDialog progressDialog = new DelayedProgressDialog();
progressDialog.show(getSupportFragmentManager(), "tag");

2

Bạn có thể sử dụng lớp này tôi đã viết. Nó chỉ cung cấp các chức năng cơ bản. Nếu bạn muốn có một ProgressDialog đầy đủ chức năng, thì hãy sử dụng thư viện gọn nhẹ này .

Cài đặt lớp

Thêm phụ thuộc sau vào module / build.gradle:

compile 'com.lmntrx.android.library.livin.missme:missme:0.1.5'

Làm thế nào để sử dụng nó?

Cách sử dụng tương tự như ProgressDialog ban đầu

ProgressDialog progressDialog = new 
progressDialog(YourActivity.this);
progressDialog.setMessage("Please wait");
progressDialog.setCancelable(false);
progressDialog.show();
progressDialog.dismiss();

NB : Bạn phải ghi đè hoạt độngonBackPressed()

Triển khai Java8:

@Override
public void onBackPressed() {
    progressDialog.onBackPressed(
            () -> {
                super.onBackPressed();
                return null;
            }
    );
}

Thực hiện Kotlin:

override fun onBackPressed() {
   progressDialog.onBackPressed { super.onBackPressed() }
}

1

Có lẽ hướng dẫn này có thể giúp bạn.

Thông thường tôi thích tạo AlertDialog tùy chỉnh với các chỉ số. Nó giải quyết các vấn đề như tùy chỉnh chế độ xem Ứng dụng.


1

Nó có thể giúp đỡ người khác.

Rất nhiều ứng dụng phổ biến có cách tiếp cận khác nhau để hiển thị tiến trình của mọi thứ như yêu cầu mạng, tải tệp, v.v. Tải spinner không hiển thị bao nhiêu nội dung đã được tải hoặc còn lại để tải. Có một khoảng thời gian không chắc chắn là xấu trong quan điểm của UI / UX. Rất nhiều ứng dụng phổ biến (Facebook, Linkedin, v.v.) đã giải quyết vấn đề này bằng cách hiển thị giao diện người dùng xương trần trước tiên. Sau đó, nội dung được tải dần dần được đưa vào màn hình.

Tôi đã sử dụng bộ lung linh cho các ứng dụng của mình để giải quyết vấn đề này.

Có một bài viết hay về điều này sẽ có ích cho người khác


0

Trong hộp thoại tiến trình, người dùng không thể thực hiện bất kỳ loại công việc nào. Tất cả các quá trình nền được dừng lại trong hộp thoại tiến trình. Vì vậy, nên sử dụng thanh tiến trình thay vì hộp thoại tiến trình.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.