প্রগ্রেসডায়ালগ অবহেলা করা হয়েছে use বিকল্পটি কী ব্যবহার করবেন?


214

আমি ProgressDialogএখন অবমূল্যায়ন হয়েছে দেখতে এসেছি । এটির পরিবর্তে বিকল্পটিতে কী ব্যবহার করতে হবে ProgressBar। আমি অ্যান্ড্রয়েড স্টুডিও সংস্করণ ২.৩.৩ ব্যবহার করছি।

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

উত্তর:


196

হ্যাঁ, API level 26এতে অবমূল্যায়ন হয়েছে। পরিবর্তে, আপনি ব্যবহার করতে পারেন progressBar

প্রোগ্রামগতভাবে এটি তৈরি করতে:

প্রথমে মূল বিন্যাসের একটি রেফারেন্স পান

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

অথবা

RelativeLayout layout = findViewById(this);

তারপরে প্রগতি বারটি যুক্ত করুন

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

অগ্রগতি বারটি দেখানোর জন্য

progressBar.setVisibility(View.VISIBLE);

অগ্রগতি বারটি আড়াল করতে

progressBar.setVisibility(View.GONE);

ব্যবহারকারীর মিথস্ক্রিয়া অক্ষম করতে আপনাকে কেবল নিম্নলিখিত কোডটি যুক্ত করতে হবে

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

ব্যবহারকারীর মিথস্ক্রিয়া ফিরে পেতে আপনাকে কেবল নিম্নলিখিত কোডটি যুক্ত করতে হবে

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

শুধু ভবিষ্যতে উল্লেখের জন্য পরিবর্তন android.R.attr.progressBarStyleSmallকরতে android.R.attr.progressBarStyleHorizontal

নীচের কোডটি কেবল উপরে কাজ করে API level 21

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

এটি এক্সএমএল এর মাধ্যমে তৈরি করতে:

<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"/>

আপনার ক্রিয়াকলাপে

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

অগ্রগতি বারটি দেখানো / লুকিয়ে রাখা একই is

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

এটি দেখতে কেমন হবে তার একটি নমুনা চিত্র এখানে দেওয়া হয়েছে:

আরও তথ্যের জন্য:
1. রেফারেন্স এক
2. রেফারেন্স দুই


এটি যেমন আপনি এটি ব্যবহার করছেন এবং আপনি এগিয়ে যাচ্ছেন অবশেষে অগ্রগতি কথোপকথনটি হ্রাস পেয়েছে, তাই আমি বিশ্বের কাছে আমার সম্ভাবনাটি প্রদর্শন করতে পারি: ডি, খালি মজা করছি, বিস্তারিত উত্তরটির জন্য অনেক ধন্যবাদ।
মোহাম্মদ হাজর

1
তবে এটিতে কীভাবে সেট (মেসেজ) করবেন?
reverie_ss


অনুগ্রহ করে এক্সএমএল কোডটি "@ অ্যান্ড্রয়েড: রঙ / সাদা"
আপডেট করুন

অনুভূমিক বারটি পেতে দয়া করে ব্যবহার করুন: প্রগতিবার প্রগতি বার = নতুন প্রগতিবার (youractivity.this, নাল, android.R.attr.progressBarStyleHorizontal); progressBar.setIndeterminate (সত্য);
তারাঞ্জিৎসপ্রা

44

আপনি নীচের কোড AlertDialogহিসাবে ProgressDialogরেফারেন্স হিসাবে ব্যবহার করতে পারেন ProgressDialog। আপনি যখনই কোনও অগ্রগতি ডায়ালগ দেখান এই ফাংশনটি আপনাকে কল করতে হবে।

কোড:

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

আউটপুট:

এখানে চিত্র বর্ণনা লিখুন


কীভাবে বরখাস্ত করবেন?
জে ডাঙ্গার

1
বেসএকটিভিটির মতো একটি বেস ক্লাস তৈরি করুন তারপরে এই টুকরো কোড যুক্ত করার পরে একটি পদ্ধতি খারিজ ডায়ালগ যুক্ত করুন তবে তার জন্য আপনাকে বিশ্বব্যাপী 'সতর্কতা ডায়ালগ' অবজেক্টটি সংজ্ঞায়িত করতে হবে
কিশান দোঙ্গা

তারপরে আপনার আড়াল ডায়ালগ পদ্ধতির ভিতরে কেবল কথোপকথনকে বাতিল করুন () পদ্ধতিটি কল করুন।
কিশান দঙ্গা

1
সবকিছু ঠিক আছে তবে স্ক্রিন ডায়ালগের যে কোনও জায়গায় ট্যাপ করার পরে বরখাস্ত হচ্ছেন erviceসেসভিস কল চলছে এবং মামলা এটি বরখাস্ত করতে এবং ইউআইয়ের সাথে খেলতে সক্ষম যা কোনটা সঠিক নয়? কোন সমাধান?
বিবেক কুমার

আপনি এটি বাতিলযোগ্য নয়, তবে ডিভাইসটি ঘোরানো বা বিভক্ত স্ক্রিন ব্যবহার করে এটি যে কোনও উপায়ে খারিজ করা হবে এবং ব্যবহারকারী সেই ইউআইয়ের সাথে ইন্টারেক্ট করতে পারবেন যা প্রস্তুত নয়। হয়তো AlertDialogএখানে ব্যবহার করা উচিত নয়।
মেও বিড়াল 2012

30

এই শ্রেণিটি এপিআই স্তরের ২re এ অবমুক্ত করা হয়েছিল Prog এই শ্রেণিটি ব্যবহার করার পরিবর্তে, আপনার অগ্রগতি বারের মতো একটি অগ্রগতি সূচক ব্যবহার করা উচিত, যা আপনার অ্যাপের ইউআইতে এম্বেড করা যেতে পারে। বিকল্পভাবে, আপনি কাজের অগ্রগতি সম্পর্কে ব্যবহারকারীকে অবহিত করতে একটি বিজ্ঞপ্তি ব্যবহার করতে পারেন। লিংক

নতুন ইউআই স্ট্যান্ডার্ডের Android Oকারণে এটি হ্রাস পেয়েছেGoogle


1
"এই শ্রেণিটি এপিআই স্তরে 26 অবমূল্যায়ন করা হয়েছিল" একটি তারিখের পরিবর্তে ব্যবহৃত হয়। তারা আপনাকে আর এটি ব্যবহার করতে চায় না। হ্যাঁ, এটি নতুন ইউআই মানদণ্ডের কারণে, তবে তারা প্রতিটি এপিআই স্তরের জন্য আবেদন করে ...
ক্রিয়েটিভ ক্রিয়েটরঅর

28
"গুগল নতুন ইউআই স্ট্যান্ডার্ডের কারণে এটি অ্যান্ড্রয়েড ও এ অবমূল্যায়ন করা হয়েছে" - লিঙ্কটি দয়া করে নতুন ইউআই স্ট্যান্ডার্ড
অজয় এস

22
এবং এটিকে অবজ্ঞা করার কারণ এটি ব্যবহারকারীর ইনপুটকে বাধা দেয়? কখনও কখনও আমি ভাবছি গুগল ইঞ্জিনিয়াররা কী ধরণের গুঁড়া গুটিয়ে নিচ্ছে। ইনপুট নিয়ন্ত্রণগুলি লুকিয়ে / অক্ষম করা এবং তারপরে একটি অগ্রগতি বার সক্ষম করার চেয়ে ব্লক করা ডায়ালগটি ব্যবহার করা অনেক সহজ। গুগলের পক্ষ থেকে বোকা চিন্তাভাবনা।
TheRealChx101

@ TheRealChx101 অ্যান্ড্রয়েড ইউআই এর চারপাশে ডিজাইন করা হয়েছে যাতে ব্যবহারকারীরা মারাত্মক ত্রুটিগুলি যাতে না ঘটে তার প্রতিরোধ করতে ব্যয়বহুল কাজের ব্যয়ে স্বাধীনতার মিথ্যা অনুভূতি বোধ করে। আপনি অনুমতি পেতে এবং ক্যারিয়াররা Google কে আপনাকে কীভাবে অ্যাক্সেস করতে পারবেন এবং করতে পারবেন না বলে কী অর্থ প্রদান করেছে ততক্ষণ অপেক্ষা করুন।
পরিত্যক্ত কার্ট

3
আমি অনুমান করি যে তারা মডেল সংলাপগুলির অপব্যবহার রোধে আরও আগ্রহী: কখনও কখনও তাদের এমন পরিস্থিতিতে দেখা যায় যে ব্যবহারকারীকে কোনও অপারেশনের সমাপ্তির জন্য অপেক্ষা করতে হবে যেখানে পরিস্থিতিতে কিছুক্ষণ অপেক্ষা করার দরকার নেই, তবে অন্য কাজগুলি চালিয়ে যেতে পারে সুতরাং তাদের অপ্রয়োজনীয়ভাবে অপেক্ষা করা ব্যবহারকারীর অভিজ্ঞতা হ্রাস করে। তবুও, প্রচুর পরিস্থিতি রয়েছে যেখানে ব্যবহারকারীর জন্য বিকল্প নেই তবে অপারেশনটি সম্পন্ন হওয়ার জন্য অপেক্ষা করুন, তাই আমি সম্মত হই যে প্রতিটি বিকাশকারীকে তাদের নিজস্ব প্রয়োগ করতে বাধ্য করার পরিবর্তে এই ক্ষেত্রেগুলির জন্য একটি অবহিত মানক পদ্ধতি থাকা উচিত।
ফ্রান মারজোয়া

25

আপনি কেবল আপনার প্রগতিবারের জন্য একটি এক্সএমএল ইন্টারফেস ডিজাইন করতে পারেন এবং এটিকে একটি সতর্কতা ডায়ালগের মতামত হিসাবে পাস করতে পারেন, তারপরে আপনি যে কোনও সময় ডায়ালগটি প্রদর্শন বা খারিজ করতে পারেন।

progress.xml

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

কোড কোড যা অগ্রগতি ডায়ালগ প্রদর্শন করে। এই কোডটি কেবল অনুলিপি করুন এবং এটি আপনার টুকরো টুকরো টুকরো করে দিন।

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

তারপরে আপনি যখনই প্রগতি ডায়ালগটি প্রদর্শন করতে চান তখন কেবল পদ্ধতিটি কল করুন এবং ডায়লগটি খারিজ করার জন্য এটি মিথ্যা বা মিথ্যা হিসাবে প্রদর্শন করার জন্য সত্য হিসাবে পাস করুন।


2
@ অলোক রাজাসুকুমরণ দেখে মনে হচ্ছে আপনি কার্যকলাপ ব্যবহার করছেন, কেবল এটির সাথে প্রতিস্থাপন করুন this, যাতে এটি দেখতে এটির মতো লাগে lease AlertDialog.Builder builder = new AlertDialog.Builder(this);দয়া করে নিশ্চিত হন যে আপনি সঠিক কোডটি অনুলিপি করছেন।
DevMike01

1
layout_toEndOfএর জন্য না থেকে অপসারণ করা যেতে পারেLinearLayout
চিহ্নিত করুন

21

প্রগতিবারটি খুব সহজ এবং সহজেই ব্যবহারযোগ্য, আমি এটিকে সাধারণ অগ্রগতি ডায়ালগ হিসাবে তৈরি করার ইচ্ছা করছি। প্রথম পদক্ষেপটি হ'ল যে ডায়ালগটি আপনি প্রদর্শন করতে চান তার xML বিন্যাস তৈরি করতে পারেন, যাক আমরা এই লেআউটটির নাম রাখি

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>

পরবর্তী পদক্ষেপটি সতর্কতা ডায়ালগ তৈরি করা হবে যা প্রগতিবারের সাথে এই বিন্যাসটি প্রদর্শন করবে

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();

এখন যা কিছু অবশিষ্ট রয়েছে তা আমাদের ক্লিক ইভেন্টগুলিতে এই ডায়ালগটি দেখানো এবং আড়াল করা

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

এবং এটি হ'ল এটি কাজ করা উচিত, আপনি দেখতে পাচ্ছেন যে এটি প্রগ্রেডায়ালগের পরিবর্তে প্রগ্রেসবার বাস্তবায়ন করা খুব সহজ এবং সহজ। এখন আপনি এই ডায়ালগ বাক্সটি হ্যান্ডলার বা এ্যাসিঙ্কটাস্কের মধ্যে আপনার প্রয়োজন অনুসারে প্রদর্শন / খারিজ করতে পারবেন


দয়া করে, এতে পরিবর্তন progress_dialog.show();করুন builder.show();। ধন্যবাদ.
ম্যাথিউস মিরান্ডা

2
আমি নামটি ডানদিকে সতর্কতা ডায়ালগ অবজেক্টে রুপান্তর করেছি, show()/ dismiss(), তবে আমি রাখিনি builder.show()কারণ তখন তা খারিজ করার জন্য আমাদের এমন কাজ করতে হবে dialog.dismiss()যা তাদের কোডকে সহজ এবং সহজেই বুঝতে সহজতর করতে পছন্দ করে এমন ব্যক্তির পক্ষে বিভ্রান্তিকর ঘটনা, এবং এছাড়াও কারণ builder.show()রিটার্ন AlertDialogঅবজেক্ট, এবং আমাদের সেই রেফারেন্সটি সেভাবে সংরক্ষণ করতে AlertDialog dialog = builder.show();হবে dialog.dismiss(), builder.create()কোনও AlertDialogকিছুতে ফিরে আসা সহজ , এবং তারপরে ডায়লগটি দেখানোর জন্য এবং লুকানোর জন্য সেই অবজেক্টটি ব্যবহার করতে হবে
সৈয়দ না

কলিং থ্রেড মেইন ইউআই থ্রেড না হলে আমরা "রানঅনুআইথ্রেড (নতুন রান্নেবল () {@ ওভাররাইড পাবলিক শূন্যতম রান () {কথোপকথন / ডিসমিসন ();}});" ব্যবহার করতে পারি। (দরকারী যখন আমরা ওয়েবউইউ থেকে কল করতে ব্যবহার করি - shouldoverride পদ্ধতি।)
এসএইচএস

15

হ্যাঁ, প্রগ্রেসডায়ালগ হ্রাস করা হয়েছে তবে ডায়ালগটি নেই।

আপনি আপনার নিজস্ব এক্সএমএল ফাইল (একটি অগ্রগতি বার এবং একটি লোডিং পাঠ্য সমন্বিত) আপনার ডায়ালগ অবজেক্টে স্ফীত করতে পারেন এবং তারপরে show()এবং dismiss()ফাংশনগুলি ব্যবহার করে এটি প্রদর্শন বা আড়াল করতে পারেন । এখানে একটি উদাহরণ (কোটলিন):

অগ্রগতি ডায়ালগ শ্রেণি :

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

আপনার কোডে : ঠিক করুনvar dialog = ProgressDialog.progressDialog(context)

দেখানো: dialog.show()

আড়াল করতে: dialog.dismiss()


11

আচ্ছা আপনি যদি সত্যিই তাদের ইচ্ছার বিরুদ্ধে যেতে চান তবে এখনও আপনি মিষ্টি সতর্কতা ডায়ালগ ব্যবহার করতে পারেন বা একটি নিজস্ব তৈরি করতে পারেন।

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>

জাভা কোড:

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
প্রোডাকশন সেটিংয়ে সুইটএলার্টডায়ালগের সাথে আমার ভয়ানক অভিজ্ঞতা হয়েছে, উইন্ডো থেকে উইন্ডোতে ফাঁস হওয়ায় খুব সতর্ক থাকুন।
জেরেমি

আমার জন্য HideProgressকিছুই করে না।
সা Saeedদ নেমতি

1
শুধু একটি অগ্রগতি ডায়ালগ দেখানোর জন্য কেন একটি লাইব্রেরি ব্যবহার করবেন?
খেমরাজ

6

প্রগ্রেসবারটি অগ্রগতি ডায়ালগের জন্য সেরা বিকল্প। একটি ব্যবহারকারী ইন্টারফেস উপাদান যা অপারেশনের অগ্রগতি নির্দেশ করে।

আরও তথ্যের জন্য এই গুগল ডকটি দেখুন: https://developer.android.com/references/android/widget/ProgressBar.html


16
তিনি "প্রগতিবার ছাড়াও" বলেছিলেন।
ক্রিয়েটিভ ক্রিয়েটোরমায়াবেনোট

6

আপনার কোনও কাস্টম লাইব্রেরি আমদানি করার দরকার নেই।

আমি আধুনিকটি ব্যবহার করতে পছন্দ করি AlertDialogতাই কিশন ডঙ্গা পোস্ট করেছেন দুর্দান্ত উত্তরের এটিই কোটলিন সংস্করণ এই পৃষ্ঠায় ।

কোটলিন কোড:

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
}

ব্যবহার:

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

আউটপুট:

এখানে চিত্র বর্ণনা লিখুন


খণ্ডে কীভাবে ব্যবহার করবেন? খণ্ডে প্রসঙ্গ কী?
রোঘেহে হোসেইনি

সাধারণত আপনার খণ্ডে আপনি আপনার বর্তমান দর্শন পেতে পারেন, সুতরাং প্রসঙ্গটি হওয়া উচিত:view!!.context
আলেসান্দ্রো ওর্নানো

4

ডকুমেন্টেশন পৃষ্ঠায় উল্লিখিত বিকল্পটি হ'ল ProgressBarProgressDialogএর বর্ণন একটি স্থাপন দ্বারা প্রতিলিপি করা যেতে পারে ProgressBarএকটি মধ্যেAlertDialog

আপনি এখনও এটি ব্যবহার করতে পারেন, তবে অ্যান্ড্রয়েড আপনি এটি ব্যবহার করতে চান না, এজন্যই এটি হ্রাস করা হয়েছে। সুতরাং আপনার নিজের সমস্যাটিকে অন্যভাবে সমাধান করার কথা বিবেচনা করা উচিত, যেমন কোনও নিজের মধ্যে এম্বেড ProgressBarকরা Layout


@ পিটারহাদদাদ এটি আমার প্রকল্পের এপিআই 28-তে "সাধারণভাবে" এবং নিম্ন এপিএসের মতোই কাজ করে। অবমূল্যায়নের পরামর্শ অনুসারে, এটি আর সমর্থিত নয় এবং ভবিষ্যতে কাজ নাও করতে পারে।
ডিএমনকি

3

ProgressDialog এপিআই 26 স্তরে অবনতি হয়েছে।

"Deprecated" নতুন ক্রিয়াকলাপগুলি প্রতিস্থাপনের প্রক্রিয়াধীন ফাংশন বা উপাদানগুলিকে বোঝায়।

প্রগ্রেসডায়ালগ হ'ল একটি মডেল ডায়লগ, যা ব্যবহারকারীকে অ্যাপের সাথে ইন্টারঅ্যাক্ট করতে বাধা দেয়। এই শ্রেণিটি ব্যবহার করার পরিবর্তে, আপনার মতো অগ্রগতি সূচক ব্যবহার করা উচিত ProgressBar, যা আপনার অ্যাপের ইউআইতে এমবেড করা যেতে পারে।

সুবিধা

আমি ব্যক্তিগতভাবে বলতে চাই যে ProgressBarদুটি এর প্রান্ত আছে। ProgressBarএকটি ব্যবহারকারী ইন্টারফেস উপাদান যা অপারেশনের অগ্রগতি নির্দেশ করে। কোনও ব্যবহারকারীর কাছে অ-বাধাজনক উপায়ে অগ্রগতি বারগুলি প্রদর্শন করুন । আপনার অ্যাপ্লিকেশনটির ইউজার ইন্টারফেসে অগ্রগতি বারটি দেখান।


2

আমি https://github.com/Q115/DelayedProgressDialog থেকে বিলম্বিত প্রোগ্রেস ডায়ালগ ব্যবহার করি এটি প্রয়োজনে বিলম্বের অতিরিক্ত সুবিধা সহ প্রগ্রেসডায়ালগের মতোই।

এটি ব্যবহার করা অ্যান্ড্রয়েড ও এর আগে প্রগ্রেস ডায়ালগের অনুরূপ:

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

2

আমার লেখা এই ক্লাসটি আপনি ব্যবহার করতে পারেন । এটি কেবলমাত্র প্রাথমিক কার্যাদি সরবরাহ করে। আপনি যদি একটি সম্পূর্ণ ক্রিয়ামূলক প্রগ্রেস ডায়ালগ চান তবে এই হালকা ওজনের লাইব্রেরিটি ব্যবহার করুন ।

গ্রেডল সেটআপ

মডিউল / build.gradle এ নিম্নলিখিত নির্ভরতা যুক্ত করুন:

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

এটি কিভাবে ব্যবহার করতে?

ব্যবহার মূল প্রগ্রেসডায়ালগের মতো

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

নোট : আপনার অবশ্যই কার্যকলাপের ওভাররাইড করতে হবেonBackPressed()

জাভা 8 বাস্তবায়ন:

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

কোটলিন বাস্তবায়ন:

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

1

হতে পারে এই গাইড আপনাকে সাহায্য করতে পারে।

সাধারণত আমি সূচকগুলি সহ কাস্টম সতর্কতা ডায়ালগগুলি তৈরি করতে পছন্দ করি। এটি অ্যাপের ভিউকে অনুকূলিতকরণের মতো সমস্যার সমাধান করে।


1

এটি অন্য লোকেদের সহায়তা করতে পারে।

নেটওয়ার্ক অ্যাপ্লিকেশন, ফাইল লোডিং ইত্যাদির মতো কোনও কিছুর অগ্রগতি দেখানোর জন্য প্রচুর জনপ্রিয় অ্যাপ্লিকেশনের আলাদা পদ্ধতির রয়েছে লোডিং স্পিনার দেখায় না যে কতগুলি সামগ্রী লোড করা হয়েছে বা লোড হওয়া বাকি রয়েছে। অনিশ্চয়তার একটি সময়কাল থাকে যা ইউআই / ইউএক্সের দৃষ্টিকোণে খারাপ। প্রচুর জনপ্রিয় অ্যাপস (ফেসবুক, লিংকডিন ইত্যাদি) প্রথমে খালি হাড়ের ইউআই প্রদর্শন করে এই সমস্যাটি সমাধান করেছে। তারপরে লোড হওয়া সামগ্রী ধীরে ধীরে অন স্ক্রিনে পপুলেশন হয়।

আমি শিহরণ ব্যবহার করেছি আমার অ্যাপ্লিকেশানগুলি এই সমস্যা সমাধানের জন্য।

এটি সম্পর্কে একটি ভাল নিবন্ধ আছে যা অন্যান্য মানুষের জন্য উপকারী হবে


0

অগ্রগতি সংলাপে, ব্যবহারকারী কোনও ধরণের কাজ করতে পারবেন না। অগ্রগতি সংলাপ চলাকালীন সমস্ত পটভূমি প্রক্রিয়া বন্ধ হয়ে যায়। সুতরাং, এটি অগ্রগতি ডায়ালগের পরিবর্তে ব্যবহারকারীর অগ্রগতি বারের পরামর্শ দেওয়া হয়।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.