当前位置:网站首页>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 } }
边栏推荐
- 多态和接口
- Swagger2显示get接口有问题,加注解就能解决
- redis的五种数据结构原理分析
- sqli-labs Basic Challenges Less1-10
- [GPLT] 2022 大众情人(floyd)
- Thick willow dustpan, thin willow bucket, who hates reptile man? Asynchronous synergism, half a second to strip away a novel
- Idea hot deployment
- idea 热部署
- 最短路问题 Bellman-Ford(单源最短路径)(图解)
- Data preprocessing
猜你喜欢
随机推荐
Reverse Integer
Understand why we should rewrite the equals method and hashcode method at the same time + example analysis
机器学习 —— Sklearn包中StandardScaler()、transform()、fit()的详细介绍
[WSN communication] optimize HWSN energy-saving clustering protocol based on MATLAB biogeography [including Matlab source code, 1989]
Detailed explanation of pipeline pipeline mechanism in redis
Go基础3
Floating point number exploration
深入解读C语言随机数函数和如何实现随机数
Redis数据库基础
一文搞懂为什么要同时重写equals方法和hashCode方法+实例分析
Redis string 结构命令
idea实用tips---如今将pom.xml(红色)改为pom.xml(蓝色)
~2 ccf 2022-03-1 未初始化警告
~1 ccf 2022-06-2 寻宝!大冒险!
抽象类和接口的区别(最详细)
&lt;T&gt;泛型方法演示
Redis set 结构命令
[selected] from simple to deep, you will understand MQ principles and application scenarios
Thick willow dustpan, thin willow bucket, who hates reptile man? Asynchronous synergism, half a second to strip away a novel
神经网络方法——美国波士顿房价(回归问题)








