当前位置:网站首页>How to write Android switching interface with kotlin
How to write Android switching interface with kotlin
2022-07-25 09:32:00 【Program Yuan who just wants to make money】
1. Create a new folder , Name it navigation, Then create a... Under this folder .xml file

2.layout In the catalog activity_main Code and rendering , Write a main page , Write a box inside that is easy to jump
<?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"
tools:context="com.fos.arfilemanager.activity.main.MainActivity">
<fragment
android:id="@+id/nav_host_container"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintTop_toTopOf="@id/gl_h_09"
app:navGraph="@navigation/nav_home"
tools:layout="@layout/fragment_recently" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/gl_h_09"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.09" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tl"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/black"
app:layout_constraintBottom_toBottomOf="@+id/gl_h_09"
app:layout_constraintTop_toTopOf="parent"
app:tabIndicatorColor="@color/color_ff3877e0"
app:tabIndicatorFullWidth="true"
app:tabTextColor="@color/white">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/home_1" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/home_2"
/>
</com.google.android.material.tabs.TabLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
3. stay Fragment Draw two pages that need to jump in the class

①recently Class is to write the initial page class
package com.fos.arfilemanager.fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.fos.arfilemanager.databinding.FragmentRecentlyBinding
class RecentlyFragment :AbstractFileManagerFragment<FragmentRecentlyBinding>(){
override fun bindObserver() {
}
override fun unbindObserver() {
}
override fun createViewBinding(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): FragmentRecentlyBinding {
return FragmentRecentlyBinding.inflate(inflater,container,false)
}
override fun initView(view: View, savedInstanceState: Bundle?) {
}
override fun onRenderView() {
}
override fun onRestoreState(savedInstanceState: Bundle) {
}
override fun onSaveState(outState: Bundle) {
}
}②classfiy Class is the page that needs to jump later
package com.fos.arfilemanager.fragment
import android.graphics.BitmapFactory
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
import com.fos.arfilemanager.R
import com.fos.arfilemanager.adapter.ClassifyAdapter
import com.fos.arfilemanager.bean.ClassifyBean
import com.fos.arfilemanager.databinding.FragmentClassifyBinding
class ClassifyFragment :AbstractFileManagerFragment<FragmentClassifyBinding>(){
private val classAdapter = ClassifyAdapter()
override fun bindObserver() {
}
override fun unbindObserver() {
}
override fun createViewBinding(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): FragmentClassifyBinding {
return FragmentClassifyBinding.inflate(inflater,container,false)
}
override fun initView(view: View, savedInstanceState: Bundle?) {
val list:MutableList<ClassifyBean> = mutableListOf()
list.add(ClassifyBean(R.mipmap.ic_picture,getString(R.string.classify_1)))
list.add(ClassifyBean(R.mipmap.ic_video,getString(R.string.classify_2)))
list.add(ClassifyBean(R.mipmap.ic_document,getString(R.string.classify_3)))
list.add(ClassifyBean(R.mipmap.ic_voice,getString(R.string.classify_4)))
list.add(ClassifyBean(R.mipmap.ic_application,getString(R.string.classify_5)))
list.add(ClassifyBean(R.mipmap.ic_apk,getString(R.string.classify_6)))
// list.add(ClassifyBean(getString(R.string.classify_2),"${R.mipmap.ic_video}"))
// list.add(ClassifyBean(getString(R.string.classify_3),"${R.mipmap.ic_document}"))
// list.add(ClassifyBean(getString(R.string.classify_4),"${R.mipmap.ic_video}"))
// list.add(ClassifyBean(getString(R.string.classify_5),"${R.mipmap.ic_application}"))
// list.add(ClassifyBean(getString(R.string.classify_6),"${R.mipmap.ic_apk}"))
classAdapter.list = list
bind.rvClassify.adapter = classAdapter
bind.rvClassify.layoutManager = GridLayoutManager(requireContext(),3)
// bind.vv.setImageBitmap(BitmapFactory.decodeFile("storage/emulated/0/DCIM/Camera/IMG_20220702_003011_0.jpg"))
}
override fun onRenderView() {
}
override fun onRestoreState(savedInstanceState: Bundle) {
}
override fun onSaveState(outState: Bundle) {
}
}4.navigation Under the folder nav_home.xml Document contents and renderings , Write the two switched pages
<?xml version="1.0" encoding="utf-8"?>
<navigation 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:id="@+id/nav_home"
app:startDestination="@id/recentlyFragment"> // binding Fragment
<fragment
android:id="@+id/recentlyFragment"
android:name="com.fos.arfilemanager.fragment.RecentlyFragment"
android:label="RecentlyFragment"
tools:layout="@layout/fragment_recently" />
<fragment
android:id="@+id/classifyFragment"
android:name="com.fos.arfilemanager.fragment.ClassifyFragment"
android:label="ClassifyFragment"
tools:layout="@layout/fragment_classify" />
</navigation>

5. stay activity.main Under folder MainActivity Write page logic ,RecyclerView Built in page number listener

package com.fos.arfilemanager.activity.main import android.annotation.SuppressLint import android.os.Bundle import android.view.KeyEvent import android.view.MotionEvent import android.view.View import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.navigation.NavController import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import com.fos.arfilemanager.R import com.fos.arfilemanager.databinding.ActivityMainBinding import com.google.android.material.tabs.TabLayout class MainActivity : AppCompatActivity() { private lateinit var bind: ActivityMainBinding lateinit var navController:NavController companion object { private const val TAG = "MainActivity" } @SuppressLint("NewApi") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) bind = ActivityMainBinding.inflate(layoutInflater) setContentView(bind.root) bind.tl.addOnTabSelectedListener(object :TabLayout.OnTabSelectedListener{ override fun onTabSelected(tab: TabLayout.Tab?) { when(tab?.position){ 0 ->{ findNavController(R.id.nav_host_container).navigate(R.id.recentlyFragment) } 1 ->{findNavController(R.id.nav_host_container).navigate(R.id.classifyFragment) } } } override fun onTabUnselected(tab: TabLayout.Tab?) { } override fun onTabReselected(tab: TabLayout.Tab?) { } }) } interface OnKeyListener { fun dispatchKeyEvent(event: KeyEvent?): Boolean } }
边栏推荐
猜你喜欢
随机推荐
梦想启航(第一篇博客)
Prim 最小生成树(图解)
Idea practical tips --- now change pom.xml (red) to pom.xml (blue)
How to deploy the jar package to the server? Note: whether the startup command has nohup or not has a lot to do with it
粗柳簸箕细柳斗,谁嫌爬虫男人丑 之 异步协程半秒扒光一本小说
Data query language (DQL)
C language and SQL Server database technology
基本的网络知识
卷积神经网络的兴趣简单介绍
正奇边形可划分成多少区域
[GKCTF 2021]easynode
抽象类和接口的区别(最详细)
[GPLT] 2022 大众情人(floyd)
What is the difference between mongodb and redis
~4.1 剑指 Offer 05. 替换空格
那天帮妹纸装了个数据库。。。就又帮她整理了篇快捷键
【代码源】每日一题 三段式
What is anemia model and congestion model?
微信小程序中的列点击隐藏,再点击显示
@1-1 CCF 2021-04-1 灰度直方图









