پوشه layout برای قرار گیری NavigationView را پیاده سازی میکنیم. رایاپارس این به عبارتی فایلی میباشد طراحی اپلیکیشن در مشهد که بایستی به وسیله HomeActivity یا این که DashboardActivity استعمال شود:
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/theme_color">
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="wrap_content"
android:id="@+id/im_hamburger"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_10"
android:padding="13dp"
app:srcCompat="@drawable/ic_left_menu"
tools:ignore="VectorDrawableCompat" />
......
android:id="@+id/side_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start">
android:id="@+id/side_nav_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:name="com.amani.SideNavFragment"
tools:layout="@layout/fragment_side_nav" />
در تگ FragmentContainerView میبینید application که صفتی با اسم name وجود داراست و مقدار آن اسم فرگمنتی میباشد که میزبانی می گردد. ما در آن اسم کلاس SideNavFragment را که در پی میسازیم و یک فرگمنت میباشد قرار داده ایم.
Activity به طور ذیل میباشد:
// Mohamadreza Amani
// Email: help4usr@gmail.com
package com.amani.sidenav
import android.سیستم عامل.Bundle
import androidx.appcompat.app.AppCompatActivity
class DashboardActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
im_hamburger?.setOnClickListener {
drawer_layout.openDrawer(GravityCompat.START)
}
}
fun closeDrawer(item: SideNavItem) {
drawer_layout?.closeDrawer(GravityCompat.START)
when (item.id) {
1 -> {
handleUpgrade()
}
2 -> {
rateUs()
}
3 -> {
shareApp()
}
4 -> {
handlesettings()
}
}
}
}
مرحله چهارم
طراحی پوشه layout برای SideNavFragment :
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:background="@color/white">
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/theme_color"
app:layout_constraintBottom_toBottomOf="@+id/txt_app_name"
app:layout_constraintTop_toTopOf="parent" />
android:id="@+id/txt_app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="70dp"
android:layout_marginTop="70dp"
android:textColor="@color/white"
android:textSize="40sp"
app:fontFamily="@font/sample"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="Side Nav" />
android:id="@+id/rv_side_nav_options"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="10dp"
android:clipToPadding="false"
app:layout_constraintTop_toBottomOf="@id/header"
tools:layout_editor_absoluteX="0dp" />
کد بالا را میتوانید به نحوه دلخواه خودتان هم پیاده فرمائید. این کد صرفا یک مثال بود. این به عبارتی برنامه ای میباشد که با کلیک روی منو یا این که کشیدن از سمت چپ ، آن را شاهد آن هستیم.
مرحله پنجم
اینک فرصت طراحی SideNavFragment فرا رسیده میباشد. درین کلاس ، شی از نوع آداپتور ساخت میکنیم که منوها را اکران میدهد:
// Mohamadreza Amani
// Email: help4usr@gmail.com
package com.amani.sidenav
import android.سیستم عامل.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.sidenav.SideNavAdapter
import com.example.sidenav.SideNavItem
import kotlinx.android.synthetic.main.fragment_side_nav.*
class SideNavFragment: Fragment(){
private val sideNavAdapter: SideNavAdapter = SideNavAdapter { position, item ->
onItemClick(position,item)
}
private fun onItemClick(position: Int, item: SideNavItem) {
Toast.makeText(requireContext(),"" + item.itemName,Toast.LENGTH_LONG).show()
(activity as MenuScreen).closeDrawer(item)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_side_nav, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setUpViews()
}
private fun setUpViews() {
rv_side_nav_options?.layoutManager = LinearLayoutManager(requireActivity(), LinearLayoutManager.VERTICAL, false)
rv_side_nav_options?.adapter = sideNavAdapter
sideNavAdapter.setNavItemsData(prrepareNavItems())
}
//در اینجا لیستی از گزینه هایی میسازیم که میخواهیم در منو اکران داده گردد
private fun prrepareNavItems(): List {
val menuItemsList = ArrayList()
menuItemsList.add(SideNavItem(1, "Upgrade", R.drawable.ic_upgrade))
menuItemsList.add(SideNavItem(2, "Rate us", R.drawable.ic_rate))
menuItemsList.add(SideNavItem(3, "Share", R.drawable.ic_share))
menuItemsList.add(SideNavItem(5, "Settings", R.drawable.ic_settings))
return menuItemsList
}
}
پوشه layout برای قرار گیری NavigationView را پیاده سازی میکنیم. رایاپارس این به عبارتی فایلی میباشد طراحی اپلیکیشن در مشهد که بایستی به وسیله HomeActivity یا این که DashboardActivity استعمال شود:
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/theme_color">
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="wrap_content"
android:id="@+id/im_hamburger"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_10"
android:padding="13dp"
app:srcCompat="@drawable/ic_left_menu"
tools:ignore="VectorDrawableCompat" />
......
android:id="@+id/side_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start">
android:id="@+id/side_nav_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:name="com.amani.SideNavFragment"
tools:layout="@layout/fragment_side_nav" />
در تگ FragmentContainerView میبینید application که صفتی با اسم name وجود داراست و مقدار آن اسم فرگمنتی میباشد که میزبانی می گردد. ما در آن اسم کلاس SideNavFragment را که در پی میسازیم و یک فرگمنت میباشد قرار داده ایم.
Activity به طور ذیل میباشد:
// Mohamadreza Amani
// Email: help4usr@gmail.com
package com.amani.sidenav
import android.سیستم عامل.Bundle
import androidx.appcompat.app.AppCompatActivity
class DashboardActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
im_hamburger?.setOnClickListener {
drawer_layout.openDrawer(GravityCompat.START)
}
}
fun closeDrawer(item: SideNavItem) {
drawer_layout?.closeDrawer(GravityCompat.START)
when (item.id) {
1 -> {
handleUpgrade()
}
2 -> {
rateUs()
}
3 -> {
shareApp()
}
4 -> {
handlesettings()
}
}
}
}
مرحله چهارم
طراحی پوشه layout برای SideNavFragment :
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:background="@color/white">
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/theme_color"
app:layout_constraintBottom_toBottomOf="@+id/txt_app_name"
app:layout_constraintTop_toTopOf="parent" />
android:id="@+id/txt_app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="70dp"
android:layout_marginTop="70dp"
android:textColor="@color/white"
android:textSize="40sp"
app:fontFamily="@font/sample"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="Side Nav" />
android:id="@+id/rv_side_nav_options"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="10dp"
android:clipToPadding="false"
app:layout_constraintTop_toBottomOf="@id/header"
tools:layout_editor_absoluteX="0dp" />
کد بالا را میتوانید به نحوه دلخواه خودتان هم پیاده فرمائید. این کد صرفا یک مثال بود. این به عبارتی برنامه ای میباشد که با کلیک روی منو یا این که کشیدن از سمت چپ ، آن را شاهد آن هستیم.
مرحله پنجم
اینک فرصت طراحی SideNavFragment فرا رسیده میباشد. درین کلاس ، شی از نوع آداپتور ساخت میکنیم که منوها را اکران میدهد:
// Mohamadreza Amani
// Email: help4usr@gmail.com
package com.amani.sidenav
import android.سیستم عامل.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.sidenav.SideNavAdapter
import com.example.sidenav.SideNavItem
import kotlinx.android.synthetic.main.fragment_side_nav.*
class SideNavFragment: Fragment(){
private val sideNavAdapter: SideNavAdapter = SideNavAdapter { position, item ->
onItemClick(position,item)
}
private fun onItemClick(position: Int, item: SideNavItem) {
Toast.makeText(requireContext(),"" + item.itemName,Toast.LENGTH_LONG).show()
(activity as MenuScreen).closeDrawer(item)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_side_nav, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setUpViews()
}
private fun setUpViews() {
rv_side_nav_options?.layoutManager = LinearLayoutManager(requireActivity(), LinearLayoutManager.VERTICAL, false)
rv_side_nav_options?.adapter = sideNavAdapter
sideNavAdapter.setNavItemsData(prrepareNavItems())
}
//در اینجا لیستی از گزینه هایی میسازیم که میخواهیم در منو اکران داده گردد
private fun prrepareNavItems(): List {
val menuItemsList = ArrayList()
menuItemsList.add(SideNavItem(1, "Upgrade", R.drawable.ic_upgrade))
menuItemsList.add(SideNavItem(2, "Rate us", R.drawable.ic_rate))
menuItemsList.add(SideNavItem(3, "Share", R.drawable.ic_share))
menuItemsList.add(SideNavItem(5, "Settings", R.drawable.ic_settings))
return menuItemsList
}
}

تفاوت بین وب سایت و اپلیکیشن