Fix a number of lint issues (#2)

* Fix systemUiVisibility deprecation warnings

This commit extracts setSystemUiVisibility as
an extension and uses the new API depending on
the Build.VERSION

* Fix splash fragment vector issues

Clip-path isn't available before V24 and
width/height should not exceed 200 dp.

* Remove unused disclaimer fragment header

* Remove unused ic_launcher_round

* Ignore IconMissingDensityFolder lint

Ignoring it because all the images are vector

* Ignore UnusedAttribute lint

It warns about networkSecurityConfig which
is used only in debug builds to allow
user SSL certificates. Lint says it's not
available before v24. But it doesn't matter
since before v24 the user SSL certificates
were allowed by default.

* Use plurals for disclaimer count down
This commit is contained in:
Kirill Kamakin
2021-11-27 16:10:00 +03:00
committed by GitHub
parent dee0d00507
commit 44458dd146
17 changed files with 60 additions and 28 deletions

View File

@@ -1,5 +1,11 @@
package gq.kirmanak.mealient.ui
import android.app.Activity
import android.os.Build
import android.view.View
import android.view.WindowInsets
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.LiveData
import androidx.lifecycle.asLiveData
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
@@ -28,4 +34,30 @@ fun SwipeRefreshLayout.refreshesLiveData(): LiveData<Unit> {
}
}
return callbackFlow.asLiveData()
}
fun Activity.setSystemUiVisibility(isVisible: Boolean) {
Timber.v("setSystemUiVisibility() called with: isVisible = $isVisible")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) setSystemUiVisibilityV30(isVisible)
else setSystemUiVisibilityV1(isVisible)
}
@Suppress("DEPRECATION")
private fun Activity.setSystemUiVisibilityV1(isVisible: Boolean) {
Timber.v("setSystemUiVisibilityV1() called with: isVisible = $isVisible")
window.decorView.systemUiVisibility = if (isVisible) 0 else View.SYSTEM_UI_FLAG_FULLSCREEN
}
@RequiresApi(Build.VERSION_CODES.R)
private fun Activity.setSystemUiVisibilityV30(isVisible: Boolean) {
Timber.v("setSystemUiVisibilityV30() called with: isVisible = $isVisible")
val systemBars = WindowInsets.Type.systemBars()
window.insetsController?.apply { if (isVisible) show(systemBars) else hide(systemBars) }
?: Timber.w("setSystemUiVisibilityV30: insets controller is null")
}
fun AppCompatActivity.setActionBarVisibility(isVisible: Boolean) {
Timber.v("setActionBarVisibility() called with: isVisible = $isVisible")
supportActionBar?.apply { if (isVisible) show() else hide() }
?: Timber.w("setActionBarVisibility: action bar is null")
}

View File

@@ -59,11 +59,9 @@ class DisclaimerFragment : Fragment() {
}
viewModel.okayCountDown.observe(viewLifecycleOwner) {
Timber.d("onViewCreated: new count $it")
binding.okay.text = if (it > 0) {
getString(R.string.fragment_disclaimer_button_okay_timer, it)
} else {
getString(R.string.fragment_disclaimer_button_okay)
}
binding.okay.text = if (it > 0) resources.getQuantityString(
R.plurals.fragment_disclaimer_button_okay_timer, it, it
) else getString(R.string.fragment_disclaimer_button_okay)
binding.okay.isClickable = it == 0
}
viewModel.startCountDown()

View File

@@ -10,6 +10,8 @@ import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import gq.kirmanak.mealient.databinding.FragmentSplashBinding
import gq.kirmanak.mealient.ui.setActionBarVisibility
import gq.kirmanak.mealient.ui.setSystemUiVisibility
import timber.log.Timber
@AndroidEntryPoint
@@ -44,14 +46,7 @@ class SplashFragment : Fragment() {
private fun changeFullscreenState(isFullscreen: Boolean) {
Timber.v("changeFullscreenState() called with: isFullscreen = $isFullscreen")
val supportActionBar = (activity as? AppCompatActivity)?.supportActionBar
Timber.d("changeFullscreenState: action bar = $supportActionBar")
if (isFullscreen) supportActionBar?.hide()
else supportActionBar?.show()
val decorView = activity?.window?.decorView
Timber.d("changeFullscreenState: decorView = $decorView")
decorView?.systemUiVisibility = if (isFullscreen) View.SYSTEM_UI_FLAG_FULLSCREEN else 0
(activity as? AppCompatActivity)?.setActionBarVisibility(!isFullscreen)
activity?.setSystemUiVisibility(!isFullscreen)
}
}