Просмотр исходного кода

app渐进式启动页面初始化

everywindchase 1 год назад
Родитель
Сommit
80d6076d05

+ 55 - 0
app/src/main/java/jx/cn/escort/adapter/IndexBannerAdapter.kt

@@ -0,0 +1,55 @@
+package jx.cn.escort.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.appcompat.widget.AppCompatTextView
+import androidx.recyclerview.widget.RecyclerView
+import jx.cn.escort.R
+
+class IndexBannerAdapter():RecyclerView.Adapter<IndexBannerAdapter.IndexBannerViewHolder>() {
+
+    private var context: Context? =null
+    constructor(context:Context?):this(){
+        this.context=context
+    }
+
+
+
+
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):IndexBannerViewHolder {
+
+            val view=LayoutInflater.from(this@IndexBannerAdapter.context).inflate(R.layout.layout_banner,parent,false)
+            return IndexBannerViewHolder(view)
+
+
+
+    }
+
+
+    override fun onBindViewHolder(holder: IndexBannerViewHolder, position: Int) {
+       val  textView= holder.item?.findViewById<AppCompatTextView>(R.id.banner_txt)
+        textView?.text="第${position}位"
+
+
+    }
+
+    override fun getItemCount(): Int {
+        return 5
+    }
+
+
+
+
+
+
+    class    IndexBannerViewHolder:RecyclerView.ViewHolder{
+        var item: View?=null
+        constructor(itemView: View):super(itemView){
+            this.item=itemView
+        }
+    }
+}

+ 33 - 16
app/src/main/java/jx/cn/escort/ui/activity/MainActivity.kt

@@ -1,20 +1,21 @@
 package jx.cn.escort.ui.activity
 
-import android.content.Context
+
 import android.os.Bundle
-import android.view.LayoutInflater
 import android.view.MenuItem
 import android.view.View
 import android.view.ViewGroup
 import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
-import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentContainerView
 import androidx.fragment.app.FragmentTransaction
-import androidx.navigation.Navigation
-import com.google.android.material.navigation.NavigationView
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import com.google.android.material.navigation.NavigationBarView
 import com.xuexiang.xui.widget.actionbar.TitleBar
 import jx.cn.escort.R
+import jx.cn.escort.ui.fragment.BaseNavFragment
+
 
 class MainActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -32,24 +33,33 @@ class MainActivity : AppCompatActivity() {
         })
 
 
-       var layoutInflater=baseContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
-        var bottomNav= findViewById<NavigationView>(R.id.bottom_nav)
-        var navContent=findViewById<ViewGroup>(R.id.nav_content)
-        bottomNav.setNavigationItemSelectedListener(object:NavigationView.OnNavigationItemSelectedListener{
+
+        var bottomNav= findViewById<BottomNavigationView>(R.id.bottom_nav)
+
+
+
+        bottomNav.setOnItemSelectedListener(object: NavigationBarView.OnItemSelectedListener {
             override fun onNavigationItemSelected(item: MenuItem): Boolean {
                var id=item.itemId
                 when(id){
-                   R.id.index-> {
-                        val  fragment=  layoutInflater.inflate(R.layout.fragment_index,navContent)   as  Fragment
-                       switchFragment(fragment)
+                   jx.cn.escort.R.id.index-> {
+                       var  fragmentContainerView=findViewById<FragmentContainerView>(R.id.nav_content)
+
+                       var density=resources.displayMetrics.density
+                       fragmentContainerView.setPadding(
+                           fragmentContainerView.paddingLeft,
+                           (62*density+0.5f).toInt(),  // 设置paddingTop为50dp
+                           fragmentContainerView.paddingRight,
+                           fragmentContainerView.paddingBottom
+                       )
+                       fragmentContainerView.requestLayout()
+                       switchFragment(BaseNavFragment(R.layout.fragment_index, context = baseContext))
                    }
                     R.id.tasks->{
-                        val  fragment=  layoutInflater.inflate(R.layout.fragment_tasks,navContent)   as  Fragment
-                        switchFragment(fragment)
+                        switchFragment(BaseNavFragment(R.layout.fragment_tasks, context = baseContext))
                     }
                     R.id.mine->{
-                        val  fragment=  layoutInflater.inflate(R.layout.fragment_mine,navContent)   as  Fragment
-                        switchFragment(fragment)
+                        switchFragment(BaseNavFragment(R.layout.fragment_mine,context = baseContext))
                     }
                 }
 
@@ -57,9 +67,13 @@ class MainActivity : AppCompatActivity() {
             }
 
 
+
         })
 
 
+
+
+
     }
 
 
@@ -69,7 +83,10 @@ class MainActivity : AppCompatActivity() {
         var  transaction: FragmentTransaction =fm.beginTransaction()
         transaction.replace(R.id.nav_content,fragment)
          transaction.commitAllowingStateLoss()
+
     }
 
 
+
+
 }

+ 0 - 20
app/src/main/java/jx/cn/escort/ui/fragment/BaseFragment.kt

@@ -1,20 +0,0 @@
-package jx.cn.escort.ui.fragment
-
-
-import android.annotation.SuppressLint
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-import jx.cn.escort.R
-
-class BaseFragment:Fragment() {
-
-
-    @SuppressLint("ResourceType")
-    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
-        return   inflater.inflate(R.id.fragment_nav_index,container)
-
-    }
-}

+ 47 - 0
app/src/main/java/jx/cn/escort/ui/fragment/BaseNavFragment.kt

@@ -0,0 +1,47 @@
+package jx.cn.escort.ui.fragment
+
+
+
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.core.view.marginTop
+import androidx.fragment.app.Fragment
+import com.xuexiang.xui.widget.banner.recycler.BannerLayout
+import jx.cn.escort.R
+import jx.cn.escort.adapter.IndexBannerAdapter
+
+class BaseNavFragment(name:Int,context: Context?):Fragment() {
+    private var name: Int? = null
+    private var context: Context? = null
+    init {
+        this.name=name
+        this.context=context
+
+    }
+
+
+
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+        if(null!=name){
+           return inflater.inflate(name!!,container,false)
+        }else{
+            return super.onCreateView(inflater, container, savedInstanceState)
+        }
+
+
+    }
+
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        if(null!=name&&view.id==R.id.index_banner_card) {
+                var indexBanner=view.findViewById<BannerLayout>(R.id.index_banner)
+                var adapter = IndexBannerAdapter(this@BaseNavFragment.context)
+                indexBanner.setAdapter(adapter)
+
+        }
+    }
+}

BIN
app/src/main/res/drawable-hdpi/ic_nav_index.png


BIN
app/src/main/res/drawable-hdpi/ic_nav_mine.png


BIN
app/src/main/res/drawable-hdpi/ic_nav_tasks.png


+ 3 - 1
app/src/main/res/layout/activity_main.xml

@@ -6,7 +6,9 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/xui_config_color_gray_9"
-        tools:context=".ui.activity.MainActivity">
+        tools:context=".ui.activity.MainActivity"
+        android:id="@+id/main_layout"
+>
 
 
     <include android:id="@+id/top_bar"

+ 20 - 12
app/src/main/res/layout/fragment_index.xml

@@ -1,18 +1,26 @@
 <?xml version="1.0" encoding="utf-8"?>
-<com.xuexiang.xui.widget.alpha.XUIAlphaLinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/fragment_nav_index"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
+<androidx.cardview.widget.CardView 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="100dp"
+                                   app:cardCornerRadius="12dp"
+                                   android:id="@+id/index_banner_card"
 >
 
 
 
-    <androidx.appcompat.widget.AppCompatTextView
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:text="测试1"
-            android:textSize="16sp"
-    />
 
-</com.xuexiang.xui.widget.alpha.XUIAlphaLinearLayout>
+        <com.xuexiang.xui.widget.banner.recycler.BannerLayout
+                android:id="@+id/index_banner"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                app:bl_autoPlaying="true"
+                app:bl_centerScale="1.3"
+                app:bl_itemSpace="10dp"
+                app:bl_moveSpeed="1.8" />
+
+
+
+
+
+</androidx.cardview.widget.CardView>

+ 0 - 1
app/src/main/res/layout/fragment_mine.xml

@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <com.xuexiang.xui.widget.alpha.XUIAlphaLinearLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/fragment_nav_index"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
 >

+ 0 - 1
app/src/main/res/layout/fragment_tasks.xml

@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <com.xuexiang.xui.widget.alpha.XUIAlphaLinearLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/fragment_nav_tasks"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
 >

+ 21 - 0
app/src/main/res/layout/layout_banner.xml

@@ -0,0 +1,21 @@
+<?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="50dp"
+        android:background="@color/xui_config_color_red"
+       >
+
+
+       <androidx.appcompat.widget.AppCompatTextView
+               android:id="@+id/banner_txt"
+               android:layout_width="match_parent"
+               android:layout_height="match_parent"
+               android:gravity="center"
+               android:textSize="30sp"
+       />
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 7 - 7
app/src/main/res/layout/layout_nav_bar.xml

@@ -12,20 +12,20 @@
             android:id="@+id/top_nav"
             android:layout_width="match_parent"
             android:layout_height="62dp"
-            app:layout_constraintBottom_toTopOf="@+id/bottom_nav"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintBottom_toTopOf="@+id/nav_content"
             app:layout_constraintHorizontal_bias="0.0"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0"/>
+            app:layout_constraintTop_toTopOf="@id/top_nav" app:layout_constraintVertical_bias="0.161"/>
     <androidx.fragment.app.FragmentContainerView
             android:id="@+id/nav_content"
             android:layout_width="match_parent"
             android:layout_height="0dp"
-            app:layout_constraintBottom_toTopOf="@+id/bottom_nav"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintHorizontal_bias="0.0"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.0"/>
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/top_nav"
+            app:layout_constraintBottom_toTopOf="@+id/bottom_nav" app:layout_constraintTop_toTopOf="@+id/top_nav"
+           />
     <com.google.android.material.bottomnavigation.BottomNavigationView
             android:id="@+id/bottom_nav"
             android:layout_width="match_parent"

+ 3 - 0
app/src/main/res/menu/layout_nav_menu.xml

@@ -3,13 +3,16 @@
     <item
             android:id="@+id/index"
             android:title="首页"
+            android:icon="@drawable/ic_nav_index"
            />
     <item
             android:id="@+id/tasks"
             android:title="任务"
+            android:icon="@drawable/ic_nav_tasks"
             />
     <item
             android:id="@+id/mine"
             android:title="我的"
+            android:icon="@drawable/ic_nav_mine"
             />
 </menu>