شرح كيفية إنشاء Custom Dialog واستدعاءه داخل الActivity في الاندرويد ستوديو

شرح كيفية إنشاء Custom Dialog واستدعاءه داخل الActivity في الاندرويد ستوديو


 شرح كيفية إنشاء Custom Dialog واستدعاءه داخل الActivity في الاندرويد ستوديو

في دروس سابقه قمنا معكم بشرح تصميم مربع حواري مخصص ولكن المشكلة التي قد تقابل البعض والاغلب منكم وهيا انه لا يعمل سوا في fragment فقط ولكن اذا كنت بداخل activity الامر سوف يكون معقد قليلا ولن تعرف ماذا تفعل ؟ ولكن لا تقلق في مقالة اليوم سوف نقوم بنفس الطريقة تقريبا ولكن بداخل الactivity لكي لا تقابلك مشاكل بعد ذلك ولا تقلق عندما تقع في اي مشكلة مستقبلا لا تتردد بالبحث في موقعنا .


مع إطارات اختبار JUNIT 4 و Winkal UI ، يوفر Android Studio أدوات قوية لمساعدتك في اختبار تطبيقات Android. يمكنك تطوير رمز اختبار واجهة المستخدم باستخدام مسجل اختبار Espresso عن طريق تسجيل ردود أفعالك على البرنامج على الجهاز أو المحاكي. يمكنك استخدام جهاز أو جهاز محاكاة ، أو بيئة تكامل متكاملة ، أو معمل اختبار FireBase لتنفيذ اختباراتك.


تصميم xml للdialog في الاندرويد ستوديو

قم بإنشاء اي صفحة xml فارغه وتصميم بداخلها الشكل الذي تريده وهنا قمت بجعل التصميم بسيط جدا عباره عن cardView وبداخله نص وزر لاغلاق الdialog يمنكك تصميم اي شكل تريده ويجعبك .


تصميم xml للdialog في الاندرويد ستوديو


dialog.xml


<androidx.cardview.widget.CardView
        android:id="@+id/cardView_dialog"
        app:cardCornerRadius="@dimen/_15sdp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

    <androidx.core.widget.NestedScrollView
        android:layout_margin="@dimen/_10sdp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:orientation="vertical"
            android:padding="@dimen/_10sdp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >


            <TextView
                android:id="@+id/text_qotof"
                android:layout_gravity="center"
                android:gravity="center"
                android:lineSpacingExtra="@dimen/_3sdp"
                android:text="test"
                android:layout_width="wrap_content"
                android:textSize="@dimen/_13ssp"
                android:layout_height="match_parent" />

            <com.google.android.material.button.MaterialButton
                android:id="@+id/exit"
                android:layout_marginTop="@dimen/_5sdp"
                android:text="idea"
                android:textColor="@color/white"
                app:cornerRadius="@dimen/_8sdp"
                android:layout_gravity="center"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>

    </androidx.core.widget.NestedScrollView>
    
    </androidx.cardview.widget.CardView>
    


إنشاء Class لتنفيذ اظهار الdialog واستقبال البيانات داخله

في هذه الصفحه سوف نقوم بإنشاء class فارغ وعمل methode بداخله كما هو موضح وبعدها سوف تستقبل منك الactivity والنص والcontext يمكنك استقبال اي بيانات تريدها الامر راجع لك وبعدها جعلنا التصميم عباره عن dialog واخبرناه بعدم اغلاق المربع نهائيا اذا تم النقر خارجه وبعدها يمكنك استخدام الامر setSoftInputMode و setLayout لكي نجعل التصميم بكامل الشاشه ولكن هنا قمنا بإيقافه وبعدها الlayout التي سوف يعمل عليها واسقلها قمنا بتعريف العناصر التي نريدها واستخدام الاوامر التي نريدها في عرض عمليات معينه او تنفيذ عمليات وايضا هنا استخدمنا PreferenceManager حيث حفظنا بداخله قيمة معينه وعند استدعائها يتم تغيير لون الcardview يمكنك ان تتغاظى عن هذه العملية وايضا الandroid.R.color.transparent لكي نجعل الcardView او التصميم عموما شفاف .


إنشاء Class لتنفيذ اظهار الdialog واستقبال البيانات داخله

CustomDialogClass.java


public class CustomDialogClass  {

    public void showDialog(Activity activity, String msg , Context context){
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setCanceledOnTouchOutside(false);

        // MATCH_PARENT
        // dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        // dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

        // color TRANSPARENT
        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        PreferenceManager preferenceManager = new PreferenceManager(context);

        dialog.setContentView(R.layout.fragment_qotof);
        Button dialogButton = dialog.findViewById(R.id.exit);
        CardView cardView = dialog.findViewById(R.id.cardView_dialog);


        TextView text = dialog.findViewById(R.id.text_qotof);
        text.setText(msg);

        if (preferenceManager.getBoolean(Constant.Key_DARK_MODE)) {
            cardView.setCardBackgroundColor(Color.parseColor("#062C30"));
        } else {
            cardView.setCardBackgroundColor(Color.parseColor("#F4FFF3"));
        }
        

        dialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        dialog.show();

    }

}

كيفية استدعاء الcustom dialog في الactivity وتمرير البيانات بداخلها


في هذا الكود قمنا بتعريف الCustomDialogClass وهو الclass الذي يحمل الdialog وبعدها قمنا بإستخدام الmethode الخاصه بعرض الdialog واخيرا قمنا بتمرير البيانات المطلوبه بداخله .

كيفية استدعاء الcustom dialog في الactivity وتمرير البيانات بداخلها


MainActivity.java

CustomDialogClass alert = new CustomDialogClass();
        alert.showDialog(this, "test" , this);
        


تعليقات