feat: 平板首页变为侧栏
This commit is contained in:
parent
310ed1dbae
commit
3649e7e310
|
|
@ -16,9 +16,8 @@ import android.widget.Toast
|
||||||
import androidx.viewpager.widget.ViewPager.OnPageChangeListener
|
import androidx.viewpager.widget.ViewPager.OnPageChangeListener
|
||||||
import butterknife.BindView
|
import butterknife.BindView
|
||||||
import com.google.android.material.bottomnavigation.BottomNavigationItemView
|
import com.google.android.material.bottomnavigation.BottomNavigationItemView
|
||||||
import com.google.android.material.bottomnavigation.BottomNavigationMenuView
|
import com.google.android.material.navigation.NavigationBarMenuView
|
||||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
import com.google.android.material.navigation.NavigationBarView
|
||||||
import com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemReselectedListener
|
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import com.huanchengfly.tieba.post.*
|
import com.huanchengfly.tieba.post.*
|
||||||
import com.huanchengfly.tieba.post.adapters.ViewPagerAdapter
|
import com.huanchengfly.tieba.post.adapters.ViewPagerAdapter
|
||||||
|
|
@ -43,15 +42,16 @@ import kotlinx.coroutines.launch
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemSelectedListener, OnNavigationItemReselectedListener {
|
open class MainActivity : BaseActivity(), NavigationBarView.OnItemSelectedListener,
|
||||||
|
NavigationBarView.OnItemReselectedListener {
|
||||||
var mAdapter: ViewPagerAdapter = ViewPagerAdapter(supportFragmentManager)
|
var mAdapter: ViewPagerAdapter = ViewPagerAdapter(supportFragmentManager)
|
||||||
|
|
||||||
@BindView(R.id.mViewPager)
|
@BindView(R.id.mViewPager)
|
||||||
lateinit var mViewPager: MyViewPager
|
lateinit var mViewPager: MyViewPager
|
||||||
|
|
||||||
@BindView(R.id.navbar)
|
@BindView(R.id.navbar)
|
||||||
lateinit var mBottomNavigationView: BottomNavigationView
|
lateinit var navigationView: NavigationBarView
|
||||||
private var menuView: BottomNavigationMenuView? = null
|
private var menuView: NavigationBarMenuView? = null
|
||||||
|
|
||||||
private var lastTime: Long = 0
|
private var lastTime: Long = 0
|
||||||
private val navigationHelper: NavigationHelper = NavigationHelper.newInstance(this)
|
private val navigationHelper: NavigationHelper = NavigationHelper.newInstance(this)
|
||||||
|
|
@ -68,7 +68,7 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
|
||||||
public override fun onResume() {
|
public override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
ThemeUtil.setTranslucentThemeBackground(findViewById(R.id.background))
|
ThemeUtil.setTranslucentThemeBackground(findViewById(R.id.background))
|
||||||
mBottomNavigationView.elevation = if (ThemeUtil.isTranslucentTheme(this)) {
|
navigationView.elevation = if (ThemeUtil.isTranslucentTheme(this)) {
|
||||||
0f
|
0f
|
||||||
} else {
|
} else {
|
||||||
4f.dpToPxFloat()
|
4f.dpToPxFloat()
|
||||||
|
|
@ -107,7 +107,7 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun findView() {
|
private fun findView() {
|
||||||
menuView = mBottomNavigationView.getChildAt(0) as BottomNavigationMenuView
|
menuView = navigationView.getChildAt(0) as NavigationBarMenuView
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun initView() {
|
protected fun initView() {
|
||||||
|
|
@ -115,7 +115,7 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
|
||||||
val badge = layoutInflater.inflate(R.layout.layout_badge, hideExploreItemView, true)
|
val badge = layoutInflater.inflate(R.layout.layout_badge, hideExploreItemView, true)
|
||||||
badgeTextView = badge.findViewById(R.id.tv_msg_count)
|
badgeTextView = badge.findViewById(R.id.tv_msg_count)
|
||||||
if (hideExplore) {
|
if (hideExplore) {
|
||||||
mBottomNavigationView.menu.removeItem(R.id.navbar_explore)
|
navigationView.menu.removeItem(R.id.navbar_explore)
|
||||||
}
|
}
|
||||||
mAdapter.addFragment(MainForumListFragment())
|
mAdapter.addFragment(MainForumListFragment())
|
||||||
if (!hideExplore) {
|
if (!hideExplore) {
|
||||||
|
|
@ -130,8 +130,8 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initListener() {
|
private fun initListener() {
|
||||||
mBottomNavigationView.setOnNavigationItemSelectedListener(this)
|
navigationView.setOnItemSelectedListener(this)
|
||||||
mBottomNavigationView.setOnNavigationItemReselectedListener(this)
|
navigationView.setOnItemReselectedListener(this)
|
||||||
mViewPager.addOnPageChangeListener(object : OnPageChangeListener {
|
mViewPager.addOnPageChangeListener(object : OnPageChangeListener {
|
||||||
override fun onPageScrolled(
|
override fun onPageScrolled(
|
||||||
position: Int,
|
position: Int,
|
||||||
|
|
@ -142,7 +142,7 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
|
||||||
|
|
||||||
@SuppressLint("RestrictedApi")
|
@SuppressLint("RestrictedApi")
|
||||||
override fun onPageSelected(position: Int) {
|
override fun onPageSelected(position: Int) {
|
||||||
mBottomNavigationView.menu.getItem(position).isChecked = true
|
navigationView.menu.getItem(position).isChecked = true
|
||||||
if (position == msgNavPosition) {
|
if (position == msgNavPosition) {
|
||||||
badgeTextView!!.visibility = View.GONE
|
badgeTextView!!.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
package com.huanchengfly.tieba.post.widgets.theme;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.res.ColorStateList;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
|
||||||
|
import com.google.android.material.navigationrail.NavigationRailView;
|
||||||
|
import com.huanchengfly.tieba.post.R;
|
||||||
|
import com.huanchengfly.tieba.post.ui.theme.interfaces.Tintable;
|
||||||
|
import com.huanchengfly.tieba.post.ui.theme.utils.ColorStateListUtils;
|
||||||
|
import com.huanchengfly.tieba.post.ui.theme.utils.ThemeUtils;
|
||||||
|
|
||||||
|
public class TintNavigationRailView extends NavigationRailView implements Tintable {
|
||||||
|
private int mBackgroundTintResId;
|
||||||
|
private int mItemIconTintResId;
|
||||||
|
private int mItemTextTintResId;
|
||||||
|
|
||||||
|
public TintNavigationRailView(Context context) {
|
||||||
|
this(context, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TintNavigationRailView(Context context, AttributeSet attrs) {
|
||||||
|
this(context, attrs, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("CustomViewStyleable")
|
||||||
|
public TintNavigationRailView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||||
|
super(context, attrs, defStyleAttr);
|
||||||
|
if (isInEditMode()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (attrs == null) {
|
||||||
|
mBackgroundTintResId = R.color.transparent;
|
||||||
|
mItemIconTintResId = 0;
|
||||||
|
mItemTextTintResId = 0;
|
||||||
|
applyTintColor();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TypedArray array = getContext().obtainStyledAttributes(attrs, R.styleable.TintNavigationRailView, defStyleAttr, 0);
|
||||||
|
mBackgroundTintResId = array.getResourceId(R.styleable.TintNavigationRailView_backgroundTint, R.color.transparent);
|
||||||
|
mItemIconTintResId = array.getResourceId(R.styleable.TintNavigationRailView_itemIconTintList, 0);
|
||||||
|
mItemTextTintResId = array.getResourceId(R.styleable.TintNavigationRailView_itemTextTintList, 0);
|
||||||
|
array.recycle();
|
||||||
|
applyTintColor();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyTintColor() {
|
||||||
|
if (getBackground() == null) {
|
||||||
|
setBackgroundColor(ThemeUtils.getColorById(getContext(), mBackgroundTintResId));
|
||||||
|
} else {
|
||||||
|
setBackgroundTintList(ColorStateList.valueOf(ThemeUtils.getColorById(getContext(), mBackgroundTintResId)));
|
||||||
|
}
|
||||||
|
if (mItemIconTintResId != 0) {
|
||||||
|
setItemIconTintList(ColorStateListUtils.createColorStateList(getContext(), mItemIconTintResId));
|
||||||
|
}
|
||||||
|
if (mItemTextTintResId != 0) {
|
||||||
|
setItemTextColor(ColorStateListUtils.createColorStateList(getContext(), mItemTextTintResId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tint() {
|
||||||
|
applyTintColor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<com.huanchengfly.tieba.post.widgets.theme.TintCoordinatorLayout 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/background"
|
||||||
|
app:backgroundTint="@color/default_color_window_background"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".activities.MainActivity">
|
||||||
|
|
||||||
|
<com.huanchengfly.tieba.post.widgets.theme.TintNavigationRailView
|
||||||
|
android:id="@+id/navbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:bottomNavigationBackgroundTint="@color/default_color_nav"
|
||||||
|
app:elevation="4dp"
|
||||||
|
app:itemIconTintList="@color/bottom_item_icon_tint_list"
|
||||||
|
app:itemTextTintList="@color/bottom_item_icon_tint_list"
|
||||||
|
app:labelVisibilityMode="unlabeled"
|
||||||
|
app:menu="@menu/navbar_main" />
|
||||||
|
|
||||||
|
<com.huanchengfly.tieba.post.widgets.MyViewPager
|
||||||
|
android:id="@+id/mViewPager"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
</com.huanchengfly.tieba.post.widgets.theme.TintCoordinatorLayout>
|
||||||
|
|
@ -87,6 +87,12 @@
|
||||||
<attr name="itemTextTintList" format="color" />
|
<attr name="itemTextTintList" format="color" />
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
|
<declare-styleable name="TintNavigationRailView">
|
||||||
|
<attr name="backgroundTint" />
|
||||||
|
<attr name="itemIconTintList" />
|
||||||
|
<attr name="itemTextTintList" />
|
||||||
|
</declare-styleable>
|
||||||
|
|
||||||
<declare-styleable name="TintToolbar">
|
<declare-styleable name="TintToolbar">
|
||||||
<attr name="toolbarBackgroundTint" format="color" />
|
<attr name="toolbarBackgroundTint" format="color" />
|
||||||
<attr name="itemTint" format="color" />
|
<attr name="itemTint" format="color" />
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue