diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/MainActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/MainActivity.kt
index 1654d2ba..67b27929 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/activities/MainActivity.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/MainActivity.kt
@@ -16,9 +16,8 @@ import android.widget.Toast
import androidx.viewpager.widget.ViewPager.OnPageChangeListener
import butterknife.BindView
import com.google.android.material.bottomnavigation.BottomNavigationItemView
-import com.google.android.material.bottomnavigation.BottomNavigationMenuView
-import com.google.android.material.bottomnavigation.BottomNavigationView
-import com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemReselectedListener
+import com.google.android.material.navigation.NavigationBarMenuView
+import com.google.android.material.navigation.NavigationBarView
import com.google.android.material.snackbar.Snackbar
import com.huanchengfly.tieba.post.*
import com.huanchengfly.tieba.post.adapters.ViewPagerAdapter
@@ -43,15 +42,16 @@ import kotlinx.coroutines.launch
import java.text.SimpleDateFormat
import java.util.*
-open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemSelectedListener, OnNavigationItemReselectedListener {
+open class MainActivity : BaseActivity(), NavigationBarView.OnItemSelectedListener,
+ NavigationBarView.OnItemReselectedListener {
var mAdapter: ViewPagerAdapter = ViewPagerAdapter(supportFragmentManager)
@BindView(R.id.mViewPager)
lateinit var mViewPager: MyViewPager
@BindView(R.id.navbar)
- lateinit var mBottomNavigationView: BottomNavigationView
- private var menuView: BottomNavigationMenuView? = null
+ lateinit var navigationView: NavigationBarView
+ private var menuView: NavigationBarMenuView? = null
private var lastTime: Long = 0
private val navigationHelper: NavigationHelper = NavigationHelper.newInstance(this)
@@ -68,7 +68,7 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
public override fun onResume() {
super.onResume()
ThemeUtil.setTranslucentThemeBackground(findViewById(R.id.background))
- mBottomNavigationView.elevation = if (ThemeUtil.isTranslucentTheme(this)) {
+ navigationView.elevation = if (ThemeUtil.isTranslucentTheme(this)) {
0f
} else {
4f.dpToPxFloat()
@@ -107,7 +107,7 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
}
private fun findView() {
- menuView = mBottomNavigationView.getChildAt(0) as BottomNavigationMenuView
+ menuView = navigationView.getChildAt(0) as NavigationBarMenuView
}
protected fun initView() {
@@ -115,7 +115,7 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
val badge = layoutInflater.inflate(R.layout.layout_badge, hideExploreItemView, true)
badgeTextView = badge.findViewById(R.id.tv_msg_count)
if (hideExplore) {
- mBottomNavigationView.menu.removeItem(R.id.navbar_explore)
+ navigationView.menu.removeItem(R.id.navbar_explore)
}
mAdapter.addFragment(MainForumListFragment())
if (!hideExplore) {
@@ -130,8 +130,8 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
}
private fun initListener() {
- mBottomNavigationView.setOnNavigationItemSelectedListener(this)
- mBottomNavigationView.setOnNavigationItemReselectedListener(this)
+ navigationView.setOnItemSelectedListener(this)
+ navigationView.setOnItemReselectedListener(this)
mViewPager.addOnPageChangeListener(object : OnPageChangeListener {
override fun onPageScrolled(
position: Int,
@@ -142,7 +142,7 @@ open class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemS
@SuppressLint("RestrictedApi")
override fun onPageSelected(position: Int) {
- mBottomNavigationView.menu.getItem(position).isChecked = true
+ navigationView.menu.getItem(position).isChecked = true
if (position == msgNavPosition) {
badgeTextView!!.visibility = View.GONE
}
diff --git a/app/src/main/java/com/huanchengfly/tieba/post/widgets/theme/TintNavigationRailView.java b/app/src/main/java/com/huanchengfly/tieba/post/widgets/theme/TintNavigationRailView.java
new file mode 100644
index 00000000..6683ba69
--- /dev/null
+++ b/app/src/main/java/com/huanchengfly/tieba/post/widgets/theme/TintNavigationRailView.java
@@ -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();
+ }
+}
diff --git a/app/src/main/res/layout-sw600dp/activity_main.xml b/app/src/main/res/layout-sw600dp/activity_main.xml
new file mode 100644
index 00000000..7a453ad8
--- /dev/null
+++ b/app/src/main/res/layout-sw600dp/activity_main.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index d07a1b5f..9280e4f4 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -87,6 +87,12 @@
+
+
+
+
+
+