<全屏>
<主界面>
底部导航,bottombar
->添加依赖
implementation ‘com.roughike:bottom-bar:2.3.1‘
->主界面布局
<com.roughike.bottombar.BottomBar android:id="@+id/bottomBar" android:layout_width="match_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" app:bb_tabXmlResource="@xml/bottombar_tabs" />
->创建布局文件xml/bottombar_tabs.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<tabs>
<tab
id="@+id/tab_home"
icon="@drawable/ic_home"
title="主页" />
<tab
id="@+id/tab_favorites"
icon="@drawable/ic_favorites"
title="收藏" />
<tab
id="@+id/tab_message"
icon="@drawable/ic_message"
title="消息" />
<tab
id="@+id/tab_my"
icon="@drawable/ic_my"
title="个人中心" />
</tabs>
</PreferenceScreen>
(PreferenceScreen提示已被弃用)
->设置点击监听,切换Fragment
1.创建BaseFragment基类
import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment abstract class BaseFragment:Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) init() } open protected fun init() { } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return initView() } abstract fun initView(): View? override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) onListener() } open protected fun onListener() { } }
2.创建四个Fragment类继承自BaseFragment,并配置布局文件
import android.view.View import com.vocus.playertest.R import com.vocus.playertest.base.BaseFragment class FavoritesFragment:BaseFragment() { override fun initView(): View? { return View.inflate(context,R.layout.fragment_home,null) } }
3.创建FragmentUtil管理各个fragment
import com.vocus.playertest.R import com.vocus.playertest.base.BaseFragment import com.vocus.playertest.fragment.FavoritesFragment import com.vocus.playertest.fragment.HomeFragment import com.vocus.playertest.fragment.MessageFragment import com.vocus.playertest.fragment.MyFragment class FragmentUtil private constructor(){ //单例模式 val homeFragment by lazy{ HomeFragment()} val favoritesFragment by lazy{ FavoritesFragment()} val messageFragment by lazy{ MessageFragment() } val myFragment by lazy{ MyFragment() } companion object{ val fragmentUtil by lazy{ FragmentUtil() } } fun getFragment(tabId:Int):BaseFragment?{ when(tabId){ R.id.tab_home->return homeFragment R.id.tab_favorites->return favoritesFragment R.id.tab_message->return messageFragment R.id.tab_my->return myFragment } return null } }
4.设置监听
override fun setOnListener() { bottomBar.setOnTabSelectListener{ val transaction=supportFragmentManager.beginTransaction() transaction.replace(R.id.container,FragmentUtil.fragmentUtil.getFragment(it)!!,it.toString()) transaction.commit() }
顶部<Toolbar>
->activity_main.xml中
<include layout="@layout/toobar"/>
->添加布局文件toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorPrimary"
android:id="@+id/toolBar"
app:titleTextColor="#fff"></androidx.appcompat.widget.Toolbar>
->创建ToolbarMananger接口管理toolbar
1.添加设置按钮
2.设置按钮点击监听,跳转到设置页面
ToolbarMananger.kt
import android.content.Intent import android.view.MenuItem import androidx.appcompat.widget.Toolbar import com.vocus.playertest.R import com.vocus.playertest.ui.activity.SettingActivity interface ToolbarMananger { val toolbar: Toolbar fun initMainToolbar() { toolbar.setTitle("一出好戏") toolbar.inflateMenu(R.menu.main) toolbar.setOnMenuItemClickListener(object :Toolbar.OnMenuItemClickListener{ override fun onMenuItemClick(item: MenuItem?): Boolean { when(item?.itemId){ R.id.setting->toolbar.context.startActivity(Intent(toolbar.context, SettingActivity::class.java)) } return true } }) } }
MainActivity.kt
class MainActivity : BaseActivity() ,ToolbarMananger{ override val toolbar: Toolbar by lazy{ find<Toolbar>(R.id.toolBar) } override fun getLayoutId(): Int { return R.layout.activity_main } override fun init() { initMainToolbar() } }
menu/main.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/setting" android:icon="@drawable/menu_setting1" android:title="设置" app:showAsAction="always"/> </menu>
3.设置界面布局
(1)添加toolbar
(2)添加fragment
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/toobar"/> <fragment android:id="@+id/settingFragment" android:layout_width="match_parent" android:layout_height="match_parent" class="com.vocus.playertest.fragment.SettingFragment"/> </LinearLayout>
->SettingFragment类
package com.vocus.playertest.fragment import android.os.Bundle import android.preference.Preference import android.preference.PreferenceFragment import android.preference.PreferenceScreen import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.vocus.playertest.R import org.jetbrains.anko.toast class SettingFragment :PreferenceFragment(){ override fun onCreateView( inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle? ): View? { addPreferencesFromResource(R.xml.fragment_setting) return super.onCreateView(inflater, container, savedInstanceState) } override fun onPreferenceTreeClick( preferenceScreen: PreferenceScreen?, preference: Preference? ): Boolean { val key=preference?.key when(key){ "about"->toast("点击了关于") } return true } }
->xml/fragment_setting.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <Preference android:key="clear_cache" android:title="清除缓存"/> <SwitchPreference android:key="push" android:title="推送文章"/> <SwitchPreference android:key="no_wifi" android:title="非wifi环境加载图片"/> <Preference android:key="about" android:title="关于"/> </PreferenceScreen>
->判断SwitchPreference是否选中,在SettingActivity.kt中
val ps= PreferenceManager.getDefaultSharedPreferences(this)
val push=ps.getBoolean("push",false)
println("push=$push")
<一些特效>
图片轮播
原文:https://www.cnblogs.com/vocus/p/12254437.html