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 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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="TintNavigationRailView">
|
||||
<attr name="backgroundTint" />
|
||||
<attr name="itemIconTintList" />
|
||||
<attr name="itemTextTintList" />
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="TintToolbar">
|
||||
<attr name="toolbarBackgroundTint" format="color" />
|
||||
<attr name="itemTint" format="color" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue