From bbf110ee4e1552bbd48bd6f01e16ef820fe24ec1 Mon Sep 17 00:00:00 2001 From: Awesome <1760316362@qq.com> Date: Tue, 4 Jun 2019 16:39:08 +0800 Subject: [PATCH] TitleBar fitStatusBar --- .gitignore | 3 ++- .../java/io/legado/app/base/BaseActivity.kt | 11 +++++---- .../io/legado/app/ui/main/MainActivity.kt | 24 +++++++++---------- .../ui/main/bookshelf/BookshelfFragment.kt | 3 +++ .../ui/main/booksource/BookSourceFragment.kt | 2 ++ .../app/ui/main/findbook/FindBookFragment.kt | 2 ++ .../app/ui/main/myconfig/MyConfigFragment.kt | 2 ++ .../java/io/legado/app/ui/widget/TitleBar.kt | 15 ++++++++++-- .../io/legado/app/utils/ContextExtensions.kt | 5 ++++ app/src/main/res/layout/activity_main.xml | 4 ++-- .../main/res/layout/fragment_book_source.xml | 1 + .../main/res/layout/fragment_bookshelf.xml | 1 + .../main/res/layout/fragment_find_book.xml | 1 + .../main/res/layout/fragment_my_config.xml | 6 ++--- app/src/main/res/values/attrs.xml | 2 ++ gradle.properties | 5 ++++ 16 files changed, 62 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index 5f0e23e18..447666543 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ /captures .externalNativeBuild /release -/tmp \ No newline at end of file +/tmp +*.jks \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/base/BaseActivity.kt b/app/src/main/java/io/legado/app/base/BaseActivity.kt index 1b5f22bf6..baef971cb 100644 --- a/app/src/main/java/io/legado/app/base/BaseActivity.kt +++ b/app/src/main/java/io/legado/app/base/BaseActivity.kt @@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.menu.MenuBuilder import androidx.appcompat.view.menu.MenuItemImpl import androidx.core.content.ContextCompat +import androidx.core.view.forEach import androidx.lifecycle.ViewModel import io.legado.app.R import io.legado.app.lib.theme.ColorUtils @@ -29,7 +30,7 @@ abstract class BaseActivity : AppCompatActivity() { abstract fun onViewModelCreated(viewModel: VM, savedInstanceState: Bundle?) - override fun onCreateOptionsMenu(menu: Menu?): Boolean { + final override fun onCreateOptionsMenu(menu: Menu?): Boolean { return menu?.let { if (it is MenuBuilder) { it.setOptionalIconsVisible(true) @@ -37,12 +38,12 @@ abstract class BaseActivity : AppCompatActivity() { val bool = onCompatCreateOptionsMenu(it) val primaryTextColor = getPrimaryTextColor(ColorUtils.isColorLight(ThemeStore.primaryColor(this))) val defaultTextColor = ContextCompat.getColor(this, R.color.tv_text_default) - for (i in 0 until menu.size()) { - (menu.getItem(i) as MenuItemImpl).let { item -> + menu.forEach { item -> + (item as MenuItemImpl).let { impl -> //overflow:展开的item DrawableUtils.setTint( - item.icon, - if (item.requiresOverflow()) defaultTextColor else primaryTextColor + impl.icon, + if (impl.requiresOverflow()) defaultTextColor else primaryTextColor ) } } diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt index ea95d0256..936260ce6 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt @@ -6,6 +6,7 @@ import android.view.MenuItem import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter +import androidx.fragment.app.FragmentStatePagerAdapter import androidx.viewpager.widget.ViewPager import com.google.android.material.bottomnavigation.BottomNavigationView import io.legado.app.R @@ -22,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_main.* class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemSelectedListener, ViewPager.OnPageChangeListener { - private val mFragmentList: ArrayList = ArrayList() override val viewModel: MainViewModel get() = getViewModel(MainViewModel::class.java) @@ -31,12 +31,8 @@ class MainActivity : BaseActivity(), BottomNavigationView.OnNavig get() = R.layout.activity_main override fun onViewModelCreated(viewModel: MainViewModel, savedInstanceState: Bundle?) { - mFragmentList.add(BookshelfFragment()) - mFragmentList.add(FindBookFragment()) - mFragmentList.add(BookSourceFragment()) - mFragmentList.add(MyConfigFragment()) - view_pager_main.adapter = - TabFragmentPageAdapter(supportFragmentManager, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) + view_pager_main.offscreenPageLimit = 3 + view_pager_main.adapter = TabFragmentPageAdapter(supportFragmentManager) view_pager_main.addOnPageChangeListener(this) bottom_navigation_view.setOnNavigationItemSelectedListener(this) } @@ -81,17 +77,21 @@ class MainActivity : BaseActivity(), BottomNavigationView.OnNavig bottom_navigation_view.menu.getItem(position).isChecked = true } - inner class TabFragmentPageAdapter internal constructor(fm: FragmentManager, behavior: Int) : - FragmentPagerAdapter(fm, behavior) { + private inner class TabFragmentPageAdapter internal constructor(fm: FragmentManager) : + FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { override fun getItem(position: Int): Fragment { - return mFragmentList[position] + return when (position) { + 0 -> BookshelfFragment() + 1 -> FindBookFragment() + 2 -> BookSourceFragment() + else -> MyConfigFragment() + } } override fun getCount(): Int { - return mFragmentList.size + return 4 } - } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt index 587ea750f..3f9cf8179 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt @@ -1,6 +1,7 @@ package io.legado.app.ui.main.bookshelf import android.os.Bundle +import android.util.Log import android.view.View import androidx.fragment.app.Fragment import io.legado.app.R @@ -9,7 +10,9 @@ class BookshelfFragment : Fragment(R.layout.fragment_bookshelf) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + Log.e("TAG", "BookshelfFragment") } + } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index 5b384b0b2..7f0195ab9 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -1,6 +1,7 @@ package io.legado.app.ui.main.booksource import android.os.Bundle +import android.util.Log import android.view.View import androidx.fragment.app.Fragment import io.legado.app.R @@ -9,6 +10,7 @@ class BookSourceFragment : Fragment(R.layout.fragment_book_source) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + Log.e("TAG", "BookSourceFragment") } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt b/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt index 836edebd4..ce2140978 100644 --- a/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/findbook/FindBookFragment.kt @@ -1,6 +1,7 @@ package io.legado.app.ui.main.findbook import android.os.Bundle +import android.util.Log import android.view.View import androidx.fragment.app.Fragment import io.legado.app.R @@ -9,6 +10,7 @@ class FindBookFragment : Fragment(R.layout.fragment_find_book) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + Log.e("TAG", "FindBookFragment") } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/main/myconfig/MyConfigFragment.kt b/app/src/main/java/io/legado/app/ui/main/myconfig/MyConfigFragment.kt index d045344e0..052f1324a 100644 --- a/app/src/main/java/io/legado/app/ui/main/myconfig/MyConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/myconfig/MyConfigFragment.kt @@ -1,6 +1,7 @@ package io.legado.app.ui.main.myconfig import android.os.Bundle +import android.util.Log import android.view.View import androidx.fragment.app.Fragment import io.legado.app.R @@ -9,6 +10,7 @@ class MyConfigFragment : Fragment(R.layout.fragment_my_config) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + Log.e("TAG", "MyConfigFragment") } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt b/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt index 428500b6e..01597a940 100644 --- a/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt +++ b/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt @@ -14,6 +14,9 @@ import androidx.appcompat.widget.Toolbar import androidx.core.graphics.drawable.DrawableCompat import com.google.android.material.appbar.AppBarLayout import io.legado.app.R +import io.legado.app.utils.getStatusBarHeight +import org.jetbrains.anko.bottomPadding +import org.jetbrains.anko.topPadding class TitleBar(context: Context, attrs: AttributeSet?) : AppBarLayout(context, attrs) { @@ -84,6 +87,14 @@ class TitleBar(context: Context, attrs: AttributeSet?) : AppBarLayout(context, a } } + if (a.getBoolean(R.styleable.TitleBar_fitStatusBar, true)) { + topPadding = context.getStatusBarHeight() + } + + if (a.getBoolean(R.styleable.TitleBar_fitNavigationBar, false)) { + bottomPadding = context.getStatusBarHeight() + } + a.recycle() if (attachToActivity) { @@ -122,8 +133,8 @@ class TitleBar(context: Context, attrs: AttributeSet?) : AppBarLayout(context, a private fun attachToActivity(context: Context) { val activity = getCompatActivity(context) activity?.let { - activity.setSupportActionBar(toolbar) - activity.supportActionBar?.setDisplayHomeAsUpEnabled(mDisplayHomeAsUp) + it.setSupportActionBar(toolbar) + it.supportActionBar?.setDisplayHomeAsUpEnabled(mDisplayHomeAsUp) } } diff --git a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt index a94267fda..5713661ce 100644 --- a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt @@ -40,3 +40,8 @@ fun Context.putPrefStringSet(key: String, value: MutableSet) = fun Context.removePref(key: String) = defaultSharedPreferences.edit { remove(key) } + +fun Context.getStatusBarHeight(): Int { + val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android") + return resources.getDimensionPixelSize(resourceId) +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a0730b697..411c77428 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -3,13 +3,13 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true"> + android:layout_height="match_parent"> diff --git a/app/src/main/res/layout/fragment_bookshelf.xml b/app/src/main/res/layout/fragment_bookshelf.xml index 2360d6d70..28e40d31a 100644 --- a/app/src/main/res/layout/fragment_bookshelf.xml +++ b/app/src/main/res/layout/fragment_bookshelf.xml @@ -9,6 +9,7 @@ android:id="@+id/title_bar" android:layout_width="match_parent" android:layout_height="wrap_content" + app:attachToActivity="false" app:layout_constraintTop_toTopOf="parent" app:title="@string/bookshelf"/> diff --git a/app/src/main/res/layout/fragment_find_book.xml b/app/src/main/res/layout/fragment_find_book.xml index 4c8e1609e..c7eeea4da 100644 --- a/app/src/main/res/layout/fragment_find_book.xml +++ b/app/src/main/res/layout/fragment_find_book.xml @@ -9,6 +9,7 @@ android:id="@+id/title_bar" android:layout_width="match_parent" android:layout_height="wrap_content" + app:attachToActivity="false" app:layout_constraintTop_toTopOf="parent" app:title="@string/find"/> diff --git a/app/src/main/res/layout/fragment_my_config.xml b/app/src/main/res/layout/fragment_my_config.xml index 82d00c33c..9fe7b70f7 100644 --- a/app/src/main/res/layout/fragment_my_config.xml +++ b/app/src/main/res/layout/fragment_my_config.xml @@ -1,7 +1,6 @@ - @@ -9,8 +8,9 @@ android:id="@+id/title_bar" android:layout_width="match_parent" android:layout_height="wrap_content" + app:attachToActivity="false" app:layout_constraintTop_toTopOf="parent" app:title="我的"/> - \ No newline at end of file + \ 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 b60fcb652..75b4d171f 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -11,6 +11,8 @@ + + diff --git a/gradle.properties b/gradle.properties index 23339e0df..b510107bc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,3 +19,8 @@ android.useAndroidX=true android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official + +RELEASE_STORE_FILE=..\\Test.jks +RELEASE_KEY_PASSWORD=20190604 +RELEASE_KEY_ALIAS=test +RELEASE_STORE_PASSWORD=20190604 \ No newline at end of file