Commit ebee665f authored by Mygod's avatar Mygod

Migrate away from deprecated APIs with core 1.3.0-alpha05

parent f34226a4
...@@ -33,6 +33,7 @@ import android.widget.TextView ...@@ -33,6 +33,7 @@ import android.widget.TextView
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
import androidx.core.text.parseAsHtml import androidx.core.text.parseAsHtml
import androidx.core.view.ViewCompat
import com.github.shadowsocks.widget.ListHolderListener import com.github.shadowsocks.widget.ListHolderListener
import com.github.shadowsocks.widget.MainListListener import com.github.shadowsocks.widget.MainListListener
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
...@@ -43,10 +44,10 @@ class AboutFragment : ToolbarFragment() { ...@@ -43,10 +44,10 @@ class AboutFragment : ToolbarFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener) ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
toolbar.title = getString(R.string.about_title, BuildConfig.VERSION_NAME) toolbar.title = getString(R.string.about_title, BuildConfig.VERSION_NAME)
view.findViewById<TextView>(R.id.tv_about).apply { view.findViewById<TextView>(R.id.tv_about).apply {
setOnApplyWindowInsetsListener(MainListListener) ViewCompat.setOnApplyWindowInsetsListener(this, MainListListener)
text = SpannableStringBuilder(resources.openRawResource(R.raw.about).bufferedReader().readText() text = SpannableStringBuilder(resources.openRawResource(R.raw.about).bufferedReader().readText()
.parseAsHtml(HtmlCompat.FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM)).apply { .parseAsHtml(HtmlCompat.FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM)).apply {
for (span in getSpans(0, length, URLSpan::class.java)) { for (span in getSpans(0, length, URLSpan::class.java)) {
......
...@@ -39,6 +39,7 @@ import android.widget.SearchView ...@@ -39,6 +39,7 @@ import android.widget.SearchView
import androidx.annotation.UiThread import androidx.annotation.UiThread
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.util.set import androidx.core.util.set
import androidx.core.view.ViewCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
...@@ -240,7 +241,7 @@ class AppManager : AppCompatActivity() { ...@@ -240,7 +241,7 @@ class AppManager : AppCompatActivity() {
} }
initProxiedUids() initProxiedUids()
list.setOnApplyWindowInsetsListener(ListListener) ViewCompat.setOnApplyWindowInsetsListener(list, ListListener)
list.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false) list.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
list.itemAnimator = DefaultItemAnimator() list.itemAnimator = DefaultItemAnimator()
list.adapter = appsAdapter list.adapter = appsAdapter
......
...@@ -24,6 +24,7 @@ import android.os.Bundle ...@@ -24,6 +24,7 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.ViewCompat
import com.github.shadowsocks.widget.ListHolderListener import com.github.shadowsocks.widget.ListHolderListener
class GlobalSettingsFragment : ToolbarFragment() { class GlobalSettingsFragment : ToolbarFragment() {
...@@ -32,7 +33,7 @@ class GlobalSettingsFragment : ToolbarFragment() { ...@@ -32,7 +33,7 @@ class GlobalSettingsFragment : ToolbarFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener) ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
toolbar.setTitle(R.string.settings) toolbar.setTitle(R.string.settings)
} }
} }
...@@ -23,6 +23,7 @@ package com.github.shadowsocks ...@@ -23,6 +23,7 @@ package com.github.shadowsocks
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.core.view.ViewCompat
import androidx.preference.EditTextPreference import androidx.preference.EditTextPreference
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
...@@ -78,7 +79,7 @@ class GlobalSettingsPreferenceFragment : PreferenceFragmentCompat() { ...@@ -78,7 +79,7 @@ class GlobalSettingsPreferenceFragment : PreferenceFragmentCompat() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
listView.setOnApplyWindowInsetsListener(MainListListener) ViewCompat.setOnApplyWindowInsetsListener(listView, MainListListener)
} }
override fun onDestroy() { override fun onDestroy() {
......
...@@ -23,15 +23,17 @@ package com.github.shadowsocks ...@@ -23,15 +23,17 @@ package com.github.shadowsocks
import android.content.ActivityNotFoundException import android.content.ActivityNotFoundException
import android.os.Bundle import android.os.Bundle
import android.os.RemoteException import android.os.RemoteException
import android.view.* import android.view.KeyCharacterMap
import android.view.KeyEvent
import android.view.MenuItem
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.browser.customtabs.CustomTabColorSchemeParams import androidx.browser.customtabs.CustomTabColorSchemeParams
import androidx.browser.customtabs.CustomTabsIntent import androidx.browser.customtabs.CustomTabsIntent
import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.view.GravityCompat import androidx.core.view.*
import androidx.core.view.updateLayoutParams
import androidx.drawerlayout.widget.DrawerLayout import androidx.drawerlayout.widget.DrawerLayout
import androidx.preference.PreferenceDataStore import androidx.preference.PreferenceDataStore
import com.github.shadowsocks.acl.CustomRulesFragment import com.github.shadowsocks.acl.CustomRulesFragment
...@@ -132,13 +134,13 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref ...@@ -132,13 +134,13 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
setContentView(R.layout.layout_main) setContentView(R.layout.layout_main)
snackbar = findViewById(R.id.snackbar) snackbar = findViewById(R.id.snackbar)
snackbar.setOnApplyWindowInsetsListener(ListHolderListener) ViewCompat.setOnApplyWindowInsetsListener(snackbar, ListHolderListener)
stats = findViewById(R.id.stats) stats = findViewById(R.id.stats)
stats.setOnClickListener { if (state == BaseService.State.Connected) stats.testConnection() } stats.setOnClickListener { if (state == BaseService.State.Connected) stats.testConnection() }
drawer = findViewById(R.id.drawer) drawer = findViewById(R.id.drawer)
drawer.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
navigation = findViewById(R.id.navigation) navigation = findViewById(R.id.navigation)
navigation.setNavigationItemSelectedListener(this) navigation.setNavigationItemSelectedListener(this)
if (savedInstanceState == null) { if (savedInstanceState == null) {
...@@ -148,9 +150,9 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref ...@@ -148,9 +150,9 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
fab = findViewById(R.id.fab) fab = findViewById(R.id.fab)
fab.setOnClickListener { toggle() } fab.setOnClickListener { toggle() }
fab.setOnApplyWindowInsetsListener { view, insets -> ViewCompat.setOnApplyWindowInsetsListener(fab) { view, insets ->
view.updateLayoutParams<ViewGroup.MarginLayoutParams> { view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
bottomMargin = insets.systemWindowInsetBottom + bottomMargin = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom +
resources.getDimensionPixelOffset(R.dimen.mtrl_bottomappbar_fab_bottom_margin) resources.getDimensionPixelOffset(R.dimen.mtrl_bottomappbar_fab_bottom_margin)
} }
insets insets
......
...@@ -34,6 +34,7 @@ import androidx.activity.result.component1 ...@@ -34,6 +34,7 @@ import androidx.activity.result.component1
import androidx.activity.result.component2 import androidx.activity.result.component2
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.view.ViewCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.whenCreated import androidx.lifecycle.whenCreated
import androidx.preference.* import androidx.preference.*
...@@ -125,7 +126,7 @@ class ProfileConfigFragment : PreferenceFragmentCompat(), ...@@ -125,7 +126,7 @@ class ProfileConfigFragment : PreferenceFragmentCompat(),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
listView.setOnApplyWindowInsetsListener(ListListener) ViewCompat.setOnApplyWindowInsetsListener(listView, ListListener)
} }
private fun initPlugins() { private fun initPlugins() {
......
...@@ -39,6 +39,7 @@ import androidx.appcompat.widget.PopupMenu ...@@ -39,6 +39,7 @@ import androidx.appcompat.widget.PopupMenu
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.appcompat.widget.TooltipCompat import androidx.appcompat.widget.TooltipCompat
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.ViewCompat
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.* import androidx.recyclerview.widget.*
...@@ -328,13 +329,13 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener { ...@@ -328,13 +329,13 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener) ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
toolbar.setTitle(R.string.profiles) toolbar.setTitle(R.string.profiles)
toolbar.inflateMenu(R.menu.profile_manager_menu) toolbar.inflateMenu(R.menu.profile_manager_menu)
toolbar.setOnMenuItemClickListener(this) toolbar.setOnMenuItemClickListener(this)
ProfileManager.ensureNotEmpty() ProfileManager.ensureNotEmpty()
profilesList = view.findViewById(R.id.list) profilesList = view.findViewById(R.id.list)
profilesList.setOnApplyWindowInsetsListener(MainListListener) ViewCompat.setOnApplyWindowInsetsListener(profilesList, MainListListener)
profilesList.layoutManager = layoutManager profilesList.layoutManager = layoutManager
profilesList.addItemDecoration(DividerItemDecoration(context, layoutManager.orientation)) profilesList.addItemDecoration(DividerItemDecoration(context, layoutManager.orientation))
layoutManager.scrollToPosition(profilesAdapter.profiles.indexOfFirst { it.id == DataStore.profileId }) layoutManager.scrollToPosition(profilesAdapter.profiles.indexOfFirst { it.id == DataStore.profileId })
......
...@@ -28,6 +28,7 @@ import android.view.ViewGroup ...@@ -28,6 +28,7 @@ import android.view.ViewGroup
import android.widget.CheckedTextView import android.widget.CheckedTextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.view.ViewCompat
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
...@@ -93,7 +94,7 @@ class UdpFallbackProfileActivity : AppCompatActivity() { ...@@ -93,7 +94,7 @@ class UdpFallbackProfileActivity : AppCompatActivity() {
toolbar.setNavigationOnClickListener { finish() } toolbar.setNavigationOnClickListener { finish() }
findViewById<RecyclerView>(R.id.list).apply { findViewById<RecyclerView>(R.id.list).apply {
setOnApplyWindowInsetsListener(ListListener) ViewCompat.setOnApplyWindowInsetsListener(this, ListListener)
itemAnimator = DefaultItemAnimator() itemAnimator = DefaultItemAnimator()
adapter = profilesAdapter adapter = profilesAdapter
layoutManager = LinearLayoutManager(this@UdpFallbackProfileActivity, RecyclerView.VERTICAL, false).apply { layoutManager = LinearLayoutManager(this@UdpFallbackProfileActivity, RecyclerView.VERTICAL, false).apply {
......
...@@ -36,6 +36,8 @@ import android.widget.TextView ...@@ -36,6 +36,8 @@ import android.widget.TextView
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
...@@ -378,7 +380,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener, ...@@ -378,7 +380,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener) ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
if (savedInstanceState != null) { if (savedInstanceState != null) {
selectedItems.addAll(savedInstanceState.getStringArray(SELECTED_SUBNETS) selectedItems.addAll(savedInstanceState.getStringArray(SELECTED_SUBNETS)
?.mapNotNull { Subnet.fromString(it) } ?: listOf()) ?.mapNotNull { Subnet.fromString(it) } ?: listOf())
...@@ -393,7 +395,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener, ...@@ -393,7 +395,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
toolbar.setOnMenuItemClickListener(this) toolbar.setOnMenuItemClickListener(this)
val activity = activity as MainActivity val activity = activity as MainActivity
list = view.findViewById(R.id.list) list = view.findViewById(R.id.list)
list.setOnApplyWindowInsetsListener(MainListListener) ViewCompat.setOnApplyWindowInsetsListener(list, MainListListener)
list.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false) list.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false)
list.itemAnimator = DefaultItemAnimator() list.itemAnimator = DefaultItemAnimator()
list.adapter = adapter list.adapter = adapter
...@@ -496,7 +498,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener, ...@@ -496,7 +498,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
// for dark mode, it's roughly 850? (#303030) // for dark mode, it's roughly 850? (#303030)
val colorId = if (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK != val colorId = if (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK !=
Configuration.UI_MODE_NIGHT_YES) { Configuration.UI_MODE_NIGHT_YES) {
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR WindowInsetsControllerCompat(window, window.decorView).isAppearanceLightStatusBars = true
R.color.material_grey_300 R.color.material_grey_300
} else android.R.color.black } else android.R.color.black
window.statusBarColor = ContextCompat.getColor(activity, colorId) window.statusBarColor = ContextCompat.getColor(activity, colorId)
...@@ -530,7 +532,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener, ...@@ -530,7 +532,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
val window = activity.window val window = activity.window
window.statusBarColor = ContextCompat.getColor(activity, window.statusBarColor = ContextCompat.getColor(activity,
activity.theme.resolveResourceId(android.R.attr.statusBarColor)) activity.theme.resolveResourceId(android.R.attr.statusBarColor))
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE WindowInsetsControllerCompat(window, window.decorView).isAppearanceLightStatusBars = false
toolbar.touchscreenBlocksFocus = false toolbar.touchscreenBlocksFocus = false
selectedItems.clear() selectedItems.clear()
onSelectedItemsUpdated() onSelectedItemsUpdated()
......
...@@ -33,6 +33,7 @@ import android.widget.EditText ...@@ -33,6 +33,7 @@ import android.widget.EditText
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.view.ViewCompat
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
...@@ -215,7 +216,7 @@ class SubscriptionFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener ...@@ -215,7 +216,7 @@ class SubscriptionFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener) ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
toolbar.setTitle(R.string.subscriptions) toolbar.setTitle(R.string.subscriptions)
toolbar.inflateMenu(R.menu.subscription_menu) toolbar.inflateMenu(R.menu.subscription_menu)
toolbar.setOnMenuItemClickListener(this) toolbar.setOnMenuItemClickListener(this)
...@@ -224,7 +225,7 @@ class SubscriptionFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener ...@@ -224,7 +225,7 @@ class SubscriptionFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener
} }
val activity = activity as MainActivity val activity = activity as MainActivity
list = view.findViewById(R.id.list) list = view.findViewById(R.id.list)
list.setOnApplyWindowInsetsListener(MainListListener) ViewCompat.setOnApplyWindowInsetsListener(list, MainListListener)
list.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false) list.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false)
list.itemAnimator = DefaultItemAnimator() list.itemAnimator = DefaultItemAnimator()
list.adapter = adapter list.adapter = adapter
......
...@@ -30,6 +30,7 @@ import android.widget.CheckedTextView ...@@ -30,6 +30,7 @@ import android.widget.CheckedTextView
import android.widget.Switch import android.widget.Switch
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.view.ViewCompat
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
...@@ -104,7 +105,7 @@ class ConfigActivity : AppCompatActivity() { ...@@ -104,7 +105,7 @@ class ConfigActivity : AppCompatActivity() {
switch = findViewById(R.id.serviceSwitch) switch = findViewById(R.id.serviceSwitch)
switch.isChecked = taskerOption.switchOn switch.isChecked = taskerOption.switchOn
findViewById<RecyclerView>(R.id.list).apply { findViewById<RecyclerView>(R.id.list).apply {
setOnApplyWindowInsetsListener(ListListener) ViewCompat.setOnApplyWindowInsetsListener(this, ListListener)
itemAnimator = DefaultItemAnimator() itemAnimator = DefaultItemAnimator()
adapter = profilesAdapter adapter = profilesAdapter
layoutManager = LinearLayoutManager(this@ConfigActivity, RecyclerView.VERTICAL, false).apply { layoutManager = LinearLayoutManager(this@ConfigActivity, RecyclerView.VERTICAL, false).apply {
......
...@@ -21,33 +21,35 @@ ...@@ -21,33 +21,35 @@
package com.github.shadowsocks.widget package com.github.shadowsocks.widget
import android.view.View import android.view.View
import android.view.WindowInsets
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.updatePadding import androidx.core.graphics.Insets
import androidx.core.view.*
import com.github.shadowsocks.R import com.github.shadowsocks.R
object ListHolderListener : View.OnApplyWindowInsetsListener { object ListHolderListener : OnApplyWindowInsetsListener {
override fun onApplyWindowInsets(view: View, insets: WindowInsets): WindowInsets { override fun onApplyWindowInsets(view: View, insets: WindowInsetsCompat): WindowInsetsCompat {
view.updatePadding(insets.systemWindowInsetLeft, insets.systemWindowInsetTop, insets.systemWindowInsetRight) val statusBarInsets = insets.getInsets(WindowInsetsCompat.Type.statusBars())
@Suppress("DEPRECATION") view.setPadding(statusBarInsets.left, statusBarInsets.top, statusBarInsets.right, statusBarInsets.bottom)
return insets.replaceSystemWindowInsets(0, 0, 0, insets.systemWindowInsetBottom) return WindowInsetsCompat.Builder(insets).apply {
setInsets(WindowInsetsCompat.Type.statusBars(), Insets.NONE)
}.build()
} }
fun setup(activity: AppCompatActivity) = activity.findViewById<View>(android.R.id.content).run { fun setup(activity: AppCompatActivity) = activity.findViewById<View>(android.R.id.content).let {
setOnApplyWindowInsetsListener(ListHolderListener) ViewCompat.setOnApplyWindowInsetsListener(it, ListHolderListener)
systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION WindowCompat.setDecorFitsSystemWindows(activity.window, false)
} }
} }
object MainListListener : View.OnApplyWindowInsetsListener { object MainListListener : OnApplyWindowInsetsListener {
override fun onApplyWindowInsets(view: View, insets: WindowInsets) = insets.apply { override fun onApplyWindowInsets(view: View, insets: WindowInsetsCompat) = insets.apply {
view.updatePadding(bottom = view.resources.getDimensionPixelOffset(R.dimen.main_list_padding_bottom) + view.updatePadding(bottom = view.resources.getDimensionPixelOffset(R.dimen.main_list_padding_bottom) +
systemWindowInsetBottom) insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom)
} }
} }
object ListListener : View.OnApplyWindowInsetsListener { object ListListener : OnApplyWindowInsetsListener {
override fun onApplyWindowInsets(view: View, insets: WindowInsets) = insets.apply { override fun onApplyWindowInsets(view: View, insets: WindowInsetsCompat) = insets.apply {
view.updatePadding(bottom = systemWindowInsetBottom) view.updatePadding(bottom = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom)
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment