تصميم صفحة للمحادثات ببرنامج اندرويد ستوديو | Design a page for conversations in Android Studio

تصميم صفحة للمحادثات ببرنامج اندرويد ستوديو | Design a page for conversations in Android Studio

تصميم صفحة للمحادثات ببرنامج اندرويد ستوديو | Design a page for conversations in Android Studio

في هذا الدرس والذي يعد السابع من دروس بناء تطبيق شات باستخدام خدمة الفايربيز ببرنامج اندرويد ستوديو سوف نقوم ببناء وانشاء صفحة للمحادثات تكون بين طرفين وتحتوي اعلى الصفحة على اسم المستخدم الذي تقوم بالمحادثه معه وتكون الرسائل المرسله من طرف الشخص الاول على اليمين والشخص الاخر على اليسار كما تعونا عليها في مختلف تطبيقات المحادثات كتطبيف ماسنجر وواتساب وغيرها 


من اكثر البرامج التي قدمنا عليها شروحات في موقعنا هي برنامج اندرويد استوديو حيث شرحنا لكم اغلب تفاصيل البرنامج تقريبا وشرحنا لكم كيفيه تطوير تطبيقات الاندرويد من خلاله ايضا هذا البرنامج يعد واحد من اقوى البرامج التي تستخدم في تطوير وصناعه تطبيقات الاندرويد ايضا نحاول في موقعنا مشاركه كل مايهمك في هذا المجال وتقريبا كل شيء اتعلمه اقوم بتوينه لكم في هذا الموقع وفي هذه المقاله باذن الله تعالى سوف نتعرف مقالة مميزة وشرح مميز في هذا البرنامج الاكثر من رائع والذي يفضله المبرمجين في عمليات تطوير تطبيقات الاندرويد او اجهزة الموبايل بشكل كامل وذلك سهولته وبسبب توفير الكثير من الادوات التي تنظم العمل ونستطيع انجاز الاعمال من خلالها بشكل اكبر واسرع


اذا كنت تبحث عن شروحات في مجال تطوير تطبيقات الاندرويد والصناعه تطبيقات الهواتف الذكيه فانصحك جدا بمشاهده الموقع في هذا الموقع شاركت معكم مجموعه كبيره وضحمة من الاكواد والشروحات وتقريبا غطينا معكم البرنامج بشكل كامل و اغلب الاشياء التي تستخدم فيها ودائما نحاول تغذيه الموقع بشروحات جديده واكواد جديد وافكار جديدة دائما ونستطيع القول انك من خلال الشروحات التي قدمناها تستطيع بكل سهوله تطوير اي فكرة تطبيق تخطر ببالك حيث يمكنك البحث عن الشيء الذي تريد عمله في تطبيق و سوف تجده باذن الله في موقعنا واذا لم تجده حاول ترك لنا تعليق ليتم توفيرة 


تصميم صفحة chat بإستخدام xml


تصميم صفحة chat بإستخدام xml

في هذة الصفحة سنقوم بتصميم صفحة للمحادثه تكون في المربع الابيض وتحتوي في الاعلى على زر للارجاع للخلف وايضا اسم المستخدم الذي تقوم بالمحادثه معه وايضا في الاسفل تحتوي على مكان لكتابة النص وايقونة للارسال وهذا ما يتوفر في اغلب تطبيقات التواصل الاجتماعي والتي يمكنك استخدامها والتعديل عليها بالشكل والمظهر الذي تريد به الامر راجع لك .


chat_activity.xml


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:animateLayoutChanges="true"
    android:background="@color/primary"
    tools:context=".activities.ChatActivity">

    <View
        android:id="@+id/viewBack"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginBottom="@dimen/_10sdp"
        android:background="@drawable/background_content_top"
        app:layout_constraintBottom_toTopOf="@id/layout_send"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/imageBack"
        android:layout_width="@dimen/_30sdp"
        android:layout_height="@dimen/_30sdp"
        android:layout_margin="@dimen/_13sdp"
        android:padding="@dimen/_5sdp"
        android:src="@drawable/ic_back"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/image_info"
        android:layout_width="@dimen/_25sdp"
        android:layout_height="@dimen/_25sdp"
        android:layout_margin="@dimen/_14sdp"
        android:src="@drawable/ic_info"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/_10sdp"
        android:layout_marginTop="@dimen/_18sdp"
        android:layout_marginEnd="@dimen/_10sdp"
        android:ellipsize="end"
        android:gravity="center"
        android:maxLines="1"
        android:text="Name"
        android:textColor="@color/primary_text"
        android:textSize="@dimen/_14ssp"
        app:layout_constraintBottom_toBottomOf="@id/imageBack"
        app:layout_constraintEnd_toStartOf="@id/image_info"
        app:layout_constraintStart_toEndOf="@id/imageBack"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/chat_recyclerview"
        android:layout_width="match_parent"
        android:clipToPadding="false"
        android:orientation="vertical"
        android:overScrollMode="never"
        android:padding="@dimen/_20sdp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="@id/viewBack"
        app:layout_constraintTop_toBottomOf="@id/imageBack"
        android:layout_height="0dp" />

    <ProgressBar
        android:id="@+id/progress"
        app:layout_constraintBottom_toBottomOf="@id/viewBack"
        app:layout_constraintStart_toStartOf="@id/viewBack"
        app:layout_constraintTop_toTopOf="@id/viewBack"
        app:layout_constraintEnd_toEndOf="@id/viewBack"
        android:layout_width="@dimen/_25sdp"
        android:layout_height="@dimen/_25sdp" />

    <FrameLayout
        android:id="@+id/layout_send"
        android:layout_width="@dimen/_40sdp"
        android:layout_height="@dimen/_40sdp"
        android:layout_margin="@dimen/_13sdp"
        android:background="@drawable/background_chat_input"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent">

        <androidx.appcompat.widget.AppCompatImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginStart="@dimen/_4sdp"
            android:layout_marginLeft="@dimen/_4sdp"
            android:padding="@dimen/_8sdp"
            android:src="@drawable/ic_send" />


    </FrameLayout>

    <EditText
        android:layout_width="0dp"
        android:layout_height="@dimen/_40sdp"
        android:layout_margin="@dimen/_12sdp"
        android:background="@drawable/background_chat_input"
        android:hint="Type a message"
        android:imeOptions="actionDone"
        android:importantForAutofill="no"
        android:inputType="text"
        android:paddingStart="@dimen/_16sdp"
        android:paddingEnd="@dimen/_16sdp"
        android:textColor="@color/white"
        android:textColorHint="@color/secondary_text"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@id/layout_send"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>



تصميم ايقونة لارستقبال الرسائل من مختلف المستخدمين

في هذا الجزء سنقوم بعمل تصميم بسيط لاستقبال الرسائل ويكون هذا المكان يحتوي على صورة المستخدم وايضا الرساله التي قام بإرسالها لك .


تصميم ايقونة لارستقبال الرسائل من مختلف المستخدمين

item_container_received_message


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="@dimen/_4sdp">

    <com.makeramen.roundedimageview.RoundedImageView
        android:id="@+id/imageProfile"
        android:layout_width="@dimen/_25sdp"
        android:layout_height="@dimen/_25sdp"
        android:background="@drawable/background_image"
        android:scaleType="centerCrop"
        app:layout_constraintBottom_toBottomOf="@id/textMessage"
        app:layout_constraintStart_toStartOf="parent"
        app:riv_oval="true" />

    <TextView
        android:id="@+id/textMessage"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/_4sdp"
        android:layout_marginLeft="@dimen/_4sdp"
        android:background="@drawable/background_received_message"
        android:padding="@dimen/_12sdp"
        android:textColor="@color/white"
        android:textSize="@dimen/_13ssp"
        app:layout_constraintStart_toEndOf="@id/imageProfile"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintWidth_percent="0.75" />

    <TextView
        android:id="@+id/textDataTime"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/_4sdp"
        android:textColor="@color/secondary_text"
        app:layout_constraintStart_toStartOf="@id/textMessage"
        app:layout_constraintTop_toBottomOf="@id/textMessage"
        android:textSize="@dimen/_10ssp" />


</androidx.constraintlayout.widget.ConstraintLayout>


تصميم شكل لارسال الرسائل للطرف الاخر

في هذا الجزء سوف نقوم بعمل نفس التصميم السابق ولكن مع اختلاف اتجاه الرساله بدلا من اليسار ستكون من اليمين وايضا سوف نجعلها بلون مختلف ولن نحتاج لعرض صورة المستخدم هنا .


item_container_send_message


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:padding="@dimen/_4sdp"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/textMessage"
        android:background="@drawable/backgound_sent_message"
        android:layout_width="0dp"
        android:padding="@dimen/_12sdp"
        android:textColor="@color/white"
        android:textSize="@dimen/_13ssp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintWidth_percent="0.8"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/textDataTime"
        android:layout_width="0dp"
        android:layout_marginTop="@dimen/_4sdp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@id/textMessage"
        android:textColor="@color/secondary_text"
        android:textSize="@dimen/_10ssp"
        android:layout_height="wrap_content" />

</androidx.constraintlayout.widget.ConstraintLayout>


التصاميم المستخدمه في الاكواد السابقة

في هذا الجزء هو عبارة عن بعص التصميمات التي قمنا بها في هذا التطبيق مثل ارسال الرسائل او استقبالها وايضا صفحة الشات بين الطرف الاول والثاني , بإختصار التصميمات التي توجد في هذا المقاله هي متوفره هنا في هذا الجزء .


التصاميم المستخدمه في الاكواد السابقة

//  background_received_message


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

    <solid android:color="@color/received_message_background" />
    <corners android:bottomRightRadius="@dimen/_24sdp"
        android:topLeftRadius="@dimen/_24sdp"
        android:topRightRadius="@dimen/_24sdp" />

</shape>

// backgound_sent_message

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

    <solid android:color="@color/primary" />
    <corners android:bottomLeftRadius="@dimen/_24sdp"
        android:topLeftRadius="@dimen/_24sdp"
        android:topRightRadius="@dimen/_24sdp" />

</shape>

// background_content_top

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

    <solid android:color="@color/white" />
    <corners android:bottomLeftRadius="@dimen/_32sdp"
        android:bottomRightRadius="@dimen/_32sdp" />

</shape>

// background_chat_input

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

    <solid android:color="@color/primary_drk" />
    <corners android:radius="@dimen/_24sdp" />

</shape>

تعليقات