Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
com.ccwangluo.accelerator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
com.ccwangluo.accelerator
Commits
fdf2da1b
Commit
fdf2da1b
authored
Aug 22, 2019
by
Mygod
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Immersive theme everywhere
parent
2b5d708e
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
120 additions
and
65 deletions
+120
-65
core/src/main/java/com/github/shadowsocks/utils/Utils.kt
core/src/main/java/com/github/shadowsocks/utils/Utils.kt
+0
-17
mobile/src/main/java/com/github/shadowsocks/AboutFragment.kt
mobile/src/main/java/com/github/shadowsocks/AboutFragment.kt
+4
-0
mobile/src/main/java/com/github/shadowsocks/AppManager.kt
mobile/src/main/java/com/github/shadowsocks/AppManager.kt
+4
-7
mobile/src/main/java/com/github/shadowsocks/GlobalSettingsFragment.kt
...ain/java/com/github/shadowsocks/GlobalSettingsFragment.kt
+2
-0
mobile/src/main/java/com/github/shadowsocks/GlobalSettingsPreferenceFragment.kt
...om/github/shadowsocks/GlobalSettingsPreferenceFragment.kt
+7
-0
mobile/src/main/java/com/github/shadowsocks/MainActivity.kt
mobile/src/main/java/com/github/shadowsocks/MainActivity.kt
+9
-4
mobile/src/main/java/com/github/shadowsocks/ProfileConfigActivity.kt
...main/java/com/github/shadowsocks/ProfileConfigActivity.kt
+2
-2
mobile/src/main/java/com/github/shadowsocks/ProfileConfigFragment.kt
...main/java/com/github/shadowsocks/ProfileConfigFragment.kt
+2
-5
mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt
.../src/main/java/com/github/shadowsocks/ProfilesFragment.kt
+8
-1
mobile/src/main/java/com/github/shadowsocks/UdpFallbackProfileActivity.kt
...java/com/github/shadowsocks/UdpFallbackProfileActivity.kt
+4
-7
mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt
...in/java/com/github/shadowsocks/acl/CustomRulesFragment.kt
+4
-0
mobile/src/main/java/com/github/shadowsocks/tasker/ConfigActivity.kt
...main/java/com/github/shadowsocks/tasker/ConfigActivity.kt
+4
-7
mobile/src/main/java/com/github/shadowsocks/widget/WindowInsetsListeners.kt
...va/com/github/shadowsocks/widget/WindowInsetsListeners.kt
+53
-0
mobile/src/main/res/layout/layout_about.xml
mobile/src/main/res/layout/layout_about.xml
+2
-1
mobile/src/main/res/layout/layout_custom_rules.xml
mobile/src/main/res/layout/layout_custom_rules.xml
+1
-1
mobile/src/main/res/layout/layout_global_settings.xml
mobile/src/main/res/layout/layout_global_settings.xml
+2
-1
mobile/src/main/res/layout/layout_list.xml
mobile/src/main/res/layout/layout_list.xml
+2
-2
mobile/src/main/res/layout/layout_main.xml
mobile/src/main/res/layout/layout_main.xml
+8
-7
mobile/src/main/res/values/dimen.xml
mobile/src/main/res/values/dimen.xml
+1
-0
mobile/src/main/res/values/styles.xml
mobile/src/main/res/values/styles.xml
+1
-3
No files found.
core/src/main/java/com/github/shadowsocks/utils/Utils.kt
View file @
fdf2da1b
...
@@ -34,11 +34,7 @@ import android.os.Build
...
@@ -34,11 +34,7 @@ import android.os.Build
import
android.system.Os
import
android.system.Os
import
android.system.OsConstants
import
android.system.OsConstants
import
android.util.TypedValue
import
android.util.TypedValue
import
android.view.View
import
android.view.ViewGroup
import
androidx.annotation.AttrRes
import
androidx.annotation.AttrRes
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.updateLayoutParams
import
androidx.preference.Preference
import
androidx.preference.Preference
import
com.crashlytics.android.Crashlytics
import
com.crashlytics.android.Crashlytics
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
...
@@ -125,19 +121,6 @@ fun Resources.Theme.resolveResourceId(@AttrRes resId: Int): Int {
...
@@ -125,19 +121,6 @@ fun Resources.Theme.resolveResourceId(@AttrRes resId: Int): Int {
val
Intent
.
datas
get
()
=
listOfNotNull
(
data
)
+
(
clipData
?.
asIterable
()
?.
mapNotNull
{
it
.
uri
}
?:
emptyList
())
val
Intent
.
datas
get
()
=
listOfNotNull
(
data
)
+
(
clipData
?.
asIterable
()
?.
mapNotNull
{
it
.
uri
}
?:
emptyList
())
fun
AppCompatActivity
.
consumeSystemWindowInsetsWithList
()
=
findViewById
<
View
>(
android
.
R
.
id
.
content
).
apply
{
setOnApplyWindowInsetsListener
{
v
,
insets
->
v
.
updateLayoutParams
<
ViewGroup
.
MarginLayoutParams
>
{
leftMargin
=
insets
.
systemWindowInsetLeft
topMargin
=
insets
.
systemWindowInsetTop
rightMargin
=
insets
.
systemWindowInsetRight
}
@Suppress
(
"DEPRECATION"
)
insets
.
replaceSystemWindowInsets
(
0
,
0
,
0
,
insets
.
systemWindowInsetBottom
)
}
systemUiVisibility
=
View
.
SYSTEM_UI_FLAG_LAYOUT_STABLE
or
View
.
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
}
fun
printLog
(
t
:
Throwable
)
{
fun
printLog
(
t
:
Throwable
)
{
Crashlytics
.
logException
(
t
)
Crashlytics
.
logException
(
t
)
t
.
printStackTrace
()
t
.
printStackTrace
()
...
...
mobile/src/main/java/com/github/shadowsocks/AboutFragment.kt
View file @
fdf2da1b
...
@@ -33,6 +33,8 @@ import android.widget.TextView
...
@@ -33,6 +33,8 @@ 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
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.MainListListener
class
AboutFragment
:
ToolbarFragment
()
{
class
AboutFragment
:
ToolbarFragment
()
{
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?):
View
?
=
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?):
View
?
=
...
@@ -40,8 +42,10 @@ class AboutFragment : ToolbarFragment() {
...
@@ -40,8 +42,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
)
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
)
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
))
{
...
...
mobile/src/main/java/com/github/shadowsocks/AppManager.kt
View file @
fdf2da1b
...
@@ -42,7 +42,6 @@ import androidx.annotation.UiThread
...
@@ -42,7 +42,6 @@ import androidx.annotation.UiThread
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.content.getSystemService
import
androidx.core.content.getSystemService
import
androidx.core.util.set
import
androidx.core.util.set
import
androidx.core.view.updatePadding
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
...
@@ -52,7 +51,8 @@ import com.github.shadowsocks.preference.DataStore
...
@@ -52,7 +51,8 @@ import com.github.shadowsocks.preference.DataStore
import
com.github.shadowsocks.utils.DirectBoot
import
com.github.shadowsocks.utils.DirectBoot
import
com.github.shadowsocks.utils.Key
import
com.github.shadowsocks.utils.Key
import
com.github.shadowsocks.utils.SingleInstanceActivity
import
com.github.shadowsocks.utils.SingleInstanceActivity
import
com.github.shadowsocks.utils.consumeSystemWindowInsetsWithList
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.ListListener
import
com.google.android.material.snackbar.Snackbar
import
com.google.android.material.snackbar.Snackbar
import
kotlinx.android.synthetic.main.layout_apps.*
import
kotlinx.android.synthetic.main.layout_apps.*
import
kotlinx.android.synthetic.main.layout_apps_item.view.*
import
kotlinx.android.synthetic.main.layout_apps_item.view.*
...
@@ -214,7 +214,7 @@ class AppManager : AppCompatActivity() {
...
@@ -214,7 +214,7 @@ class AppManager : AppCompatActivity() {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
SingleInstanceActivity
.
register
(
this
)
?:
return
SingleInstanceActivity
.
register
(
this
)
?:
return
setContentView
(
R
.
layout
.
layout_apps
)
setContentView
(
R
.
layout
.
layout_apps
)
consumeSystemWindowInsetsWithList
(
)
ListHolderListener
.
setup
(
this
)
setSupportActionBar
(
toolbar
)
setSupportActionBar
(
toolbar
)
supportActionBar
!!
.
setDisplayHomeAsUpEnabled
(
true
)
supportActionBar
!!
.
setDisplayHomeAsUpEnabled
(
true
)
...
@@ -237,10 +237,7 @@ class AppManager : AppCompatActivity() {
...
@@ -237,10 +237,7 @@ class AppManager : AppCompatActivity() {
}
}
initProxiedUids
()
initProxiedUids
()
list
.
setOnApplyWindowInsetsListener
{
v
,
insets
->
list
.
setOnApplyWindowInsetsListener
(
ListListener
)
v
.
updatePadding
(
bottom
=
insets
.
systemWindowInsetBottom
)
insets
.
consumeSystemWindowInsets
()
}
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
...
...
mobile/src/main/java/com/github/shadowsocks/GlobalSettingsFragment.kt
View file @
fdf2da1b
...
@@ -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
com.github.shadowsocks.widget.ListHolderListener
class
GlobalSettingsFragment
:
ToolbarFragment
()
{
class
GlobalSettingsFragment
:
ToolbarFragment
()
{
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?):
View
?
=
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?):
View
?
=
...
@@ -31,6 +32,7 @@ class GlobalSettingsFragment : ToolbarFragment() {
...
@@ -31,6 +32,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
)
toolbar
.
setTitle
(
R
.
string
.
settings
)
toolbar
.
setTitle
(
R
.
string
.
settings
)
if
(
savedInstanceState
!=
null
)
return
if
(
savedInstanceState
!=
null
)
return
...
...
mobile/src/main/java/com/github/shadowsocks/GlobalSettingsPreferenceFragment.kt
View file @
fdf2da1b
...
@@ -24,6 +24,7 @@ import android.app.Activity
...
@@ -24,6 +24,7 @@ import android.app.Activity
import
android.content.Intent
import
android.content.Intent
import
android.os.Build
import
android.os.Build
import
android.os.Bundle
import
android.os.Bundle
import
android.view.View
import
androidx.preference.EditTextPreference
import
androidx.preference.EditTextPreference
import
androidx.preference.Preference
import
androidx.preference.Preference
import
androidx.preference.PreferenceFragmentCompat
import
androidx.preference.PreferenceFragmentCompat
...
@@ -38,6 +39,7 @@ import com.github.shadowsocks.preference.EditTextPreferenceModifiers
...
@@ -38,6 +39,7 @@ import com.github.shadowsocks.preference.EditTextPreferenceModifiers
import
com.github.shadowsocks.preference.HostsSummaryProvider
import
com.github.shadowsocks.preference.HostsSummaryProvider
import
com.github.shadowsocks.utils.readableMessage
import
com.github.shadowsocks.utils.readableMessage
import
com.github.shadowsocks.utils.remove
import
com.github.shadowsocks.utils.remove
import
com.github.shadowsocks.widget.MainListListener
class
GlobalSettingsPreferenceFragment
:
PreferenceFragmentCompat
()
{
class
GlobalSettingsPreferenceFragment
:
PreferenceFragmentCompat
()
{
companion
object
{
companion
object
{
...
@@ -115,6 +117,11 @@ class GlobalSettingsPreferenceFragment : PreferenceFragmentCompat() {
...
@@ -115,6 +117,11 @@ class GlobalSettingsPreferenceFragment : PreferenceFragmentCompat() {
serviceMode
.
onPreferenceChangeListener
=
onServiceModeChange
serviceMode
.
onPreferenceChangeListener
=
onServiceModeChange
}
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
listView
.
setOnApplyWindowInsetsListener
(
MainListListener
)
}
override
fun
onDisplayPreferenceDialog
(
preference
:
Preference
?)
{
override
fun
onDisplayPreferenceDialog
(
preference
:
Preference
?)
{
if
(
preference
==
hosts
)
BrowsableEditTextPreferenceDialogFragment
().
apply
{
if
(
preference
==
hosts
)
BrowsableEditTextPreferenceDialogFragment
().
apply
{
setKey
(
hosts
.
key
)
setKey
(
hosts
.
key
)
...
...
mobile/src/main/java/com/github/shadowsocks/MainActivity.kt
View file @
fdf2da1b
...
@@ -29,10 +29,7 @@ import android.os.Bundle
...
@@ -29,10 +29,7 @@ import android.os.Bundle
import
android.os.Handler
import
android.os.Handler
import
android.os.RemoteException
import
android.os.RemoteException
import
android.util.Log
import
android.util.Log
import
android.view.KeyCharacterMap
import
android.view.*
import
android.view.KeyEvent
import
android.view.MenuItem
import
android.view.View
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
...
@@ -40,6 +37,7 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout
...
@@ -40,6 +37,7 @@ 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.GravityCompat
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.crashlytics.android.Crashlytics
import
com.crashlytics.android.Crashlytics
...
@@ -170,6 +168,13 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
...
@@ -170,6 +168,13 @@ 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
->
view
.
updateLayoutParams
<
ViewGroup
.
MarginLayoutParams
>
{
bottomMargin
=
insets
.
systemWindowInsetBottom
+
resources
.
getDimensionPixelOffset
(
R
.
dimen
.
mtrl_bottomappbar_fab_bottom_margin
)
}
insets
}
changeState
(
BaseService
.
State
.
Idle
)
// reset everything to init state
changeState
(
BaseService
.
State
.
Idle
)
// reset everything to init state
connection
.
connect
(
this
,
this
)
connection
.
connect
(
this
,
this
)
...
...
mobile/src/main/java/com/github/shadowsocks/ProfileConfigActivity.kt
View file @
fdf2da1b
...
@@ -33,7 +33,7 @@ import com.github.shadowsocks.plugin.Empty
...
@@ -33,7 +33,7 @@ import com.github.shadowsocks.plugin.Empty
import
com.github.shadowsocks.plugin.PluginContract
import
com.github.shadowsocks.plugin.PluginContract
import
com.github.shadowsocks.preference.DataStore
import
com.github.shadowsocks.preference.DataStore
import
com.github.shadowsocks.utils.SingleInstanceActivity
import
com.github.shadowsocks.utils.SingleInstanceActivity
import
com.github.shadowsocks.
utils.consumeSystemWindowInsetsWithList
import
com.github.shadowsocks.
widget.ListHolderListener
class
ProfileConfigActivity
:
AppCompatActivity
()
{
class
ProfileConfigActivity
:
AppCompatActivity
()
{
companion
object
{
companion
object
{
...
@@ -55,7 +55,7 @@ class ProfileConfigActivity : AppCompatActivity() {
...
@@ -55,7 +55,7 @@ class ProfileConfigActivity : AppCompatActivity() {
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
SingleInstanceActivity
.
register
(
this
)
?:
return
SingleInstanceActivity
.
register
(
this
)
?:
return
setContentView
(
R
.
layout
.
layout_profile_config
)
setContentView
(
R
.
layout
.
layout_profile_config
)
consumeSystemWindowInsetsWithList
(
)
ListHolderListener
.
setup
(
this
)
setSupportActionBar
(
findViewById
(
R
.
id
.
toolbar
))
setSupportActionBar
(
findViewById
(
R
.
id
.
toolbar
))
supportActionBar
!!
.
apply
{
supportActionBar
!!
.
apply
{
setDisplayHomeAsUpEnabled
(
true
)
setDisplayHomeAsUpEnabled
(
true
)
...
...
mobile/src/main/java/com/github/shadowsocks/ProfileConfigFragment.kt
View file @
fdf2da1b
...
@@ -30,7 +30,6 @@ import android.os.Parcelable
...
@@ -30,7 +30,6 @@ import android.os.Parcelable
import
android.view.MenuItem
import
android.view.MenuItem
import
android.view.View
import
android.view.View
import
androidx.appcompat.app.AlertDialog
import
androidx.appcompat.app.AlertDialog
import
androidx.core.view.updatePadding
import
androidx.preference.*
import
androidx.preference.*
import
com.github.shadowsocks.Core.app
import
com.github.shadowsocks.Core.app
import
com.github.shadowsocks.database.Profile
import
com.github.shadowsocks.database.Profile
...
@@ -38,6 +37,7 @@ import com.github.shadowsocks.database.ProfileManager
...
@@ -38,6 +37,7 @@ import com.github.shadowsocks.database.ProfileManager
import
com.github.shadowsocks.plugin.*
import
com.github.shadowsocks.plugin.*
import
com.github.shadowsocks.preference.*
import
com.github.shadowsocks.preference.*
import
com.github.shadowsocks.utils.*
import
com.github.shadowsocks.utils.*
import
com.github.shadowsocks.widget.ListListener
import
com.google.android.material.snackbar.Snackbar
import
com.google.android.material.snackbar.Snackbar
import
kotlinx.android.parcel.Parcelize
import
kotlinx.android.parcel.Parcelize
...
@@ -116,10 +116,7 @@ class ProfileConfigFragment : PreferenceFragmentCompat(),
...
@@ -116,10 +116,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
{
v
,
insets
->
listView
.
setOnApplyWindowInsetsListener
(
ListListener
)
v
.
updatePadding
(
bottom
=
insets
.
systemWindowInsetBottom
)
insets
.
consumeSystemWindowInsets
()
}
}
}
private
fun
initPlugins
()
{
private
fun
initPlugins
()
{
...
...
mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt
View file @
fdf2da1b
...
@@ -22,7 +22,10 @@ package com.github.shadowsocks
...
@@ -22,7 +22,10 @@ package com.github.shadowsocks
import
android.annotation.SuppressLint
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.app.Activity
import
android.content.*
import
android.content.ActivityNotFoundException
import
android.content.ClipData
import
android.content.ClipboardManager
import
android.content.Intent
import
android.os.Bundle
import
android.os.Bundle
import
android.text.format.Formatter
import
android.text.format.Formatter
import
android.util.LongSparseArray
import
android.util.LongSparseArray
...
@@ -47,6 +50,8 @@ import com.github.shadowsocks.utils.Action
...
@@ -47,6 +50,8 @@ import com.github.shadowsocks.utils.Action
import
com.github.shadowsocks.utils.datas
import
com.github.shadowsocks.utils.datas
import
com.github.shadowsocks.utils.printLog
import
com.github.shadowsocks.utils.printLog
import
com.github.shadowsocks.utils.readableMessage
import
com.github.shadowsocks.utils.readableMessage
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.MainListListener
import
com.github.shadowsocks.widget.UndoSnackbarManager
import
com.github.shadowsocks.widget.UndoSnackbarManager
import
com.google.android.gms.ads.AdRequest
import
com.google.android.gms.ads.AdRequest
import
com.google.android.gms.ads.AdSize
import
com.google.android.gms.ads.AdSize
...
@@ -301,6 +306,7 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
...
@@ -301,6 +306,7 @@ 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
)
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
)
...
@@ -309,6 +315,7 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
...
@@ -309,6 +315,7 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
ProfileManager
.
ensureNotEmpty
()
ProfileManager
.
ensureNotEmpty
()
val
profilesList
=
view
.
findViewById
<
RecyclerView
>(
R
.
id
.
list
)
val
profilesList
=
view
.
findViewById
<
RecyclerView
>(
R
.
id
.
list
)
profilesList
.
setOnApplyWindowInsetsListener
(
MainListListener
)
val
layoutManager
=
LinearLayoutManager
(
context
,
RecyclerView
.
VERTICAL
,
false
)
val
layoutManager
=
LinearLayoutManager
(
context
,
RecyclerView
.
VERTICAL
,
false
)
profilesList
.
layoutManager
=
layoutManager
profilesList
.
layoutManager
=
layoutManager
profilesList
.
addItemDecoration
(
DividerItemDecoration
(
context
,
layoutManager
.
orientation
))
profilesList
.
addItemDecoration
(
DividerItemDecoration
(
context
,
layoutManager
.
orientation
))
...
...
mobile/src/main/java/com/github/shadowsocks/UdpFallbackProfileActivity.kt
View file @
fdf2da1b
...
@@ -28,7 +28,6 @@ import android.view.ViewGroup
...
@@ -28,7 +28,6 @@ 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.updatePadding
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
...
@@ -37,8 +36,9 @@ import com.github.shadowsocks.database.ProfileManager
...
@@ -37,8 +36,9 @@ import com.github.shadowsocks.database.ProfileManager
import
com.github.shadowsocks.plugin.PluginConfiguration
import
com.github.shadowsocks.plugin.PluginConfiguration
import
com.github.shadowsocks.preference.DataStore
import
com.github.shadowsocks.preference.DataStore
import
com.github.shadowsocks.utils.SingleInstanceActivity
import
com.github.shadowsocks.utils.SingleInstanceActivity
import
com.github.shadowsocks.utils.consumeSystemWindowInsetsWithList
import
com.github.shadowsocks.utils.resolveResourceId
import
com.github.shadowsocks.utils.resolveResourceId
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.ListListener
class
UdpFallbackProfileActivity
:
AppCompatActivity
()
{
class
UdpFallbackProfileActivity
:
AppCompatActivity
()
{
inner
class
ProfileViewHolder
(
view
:
View
)
:
RecyclerView
.
ViewHolder
(
view
),
View
.
OnClickListener
{
inner
class
ProfileViewHolder
(
view
:
View
)
:
RecyclerView
.
ViewHolder
(
view
),
View
.
OnClickListener
{
...
@@ -87,7 +87,7 @@ class UdpFallbackProfileActivity : AppCompatActivity() {
...
@@ -87,7 +87,7 @@ class UdpFallbackProfileActivity : AppCompatActivity() {
}
}
SingleInstanceActivity
.
register
(
this
)
?:
return
SingleInstanceActivity
.
register
(
this
)
?:
return
setContentView
(
R
.
layout
.
layout_udp_fallback
)
setContentView
(
R
.
layout
.
layout_udp_fallback
)
consumeSystemWindowInsetsWithList
(
)
ListHolderListener
.
setup
(
this
)
val
toolbar
=
findViewById
<
Toolbar
>(
R
.
id
.
toolbar
)
val
toolbar
=
findViewById
<
Toolbar
>(
R
.
id
.
toolbar
)
toolbar
.
setTitle
(
R
.
string
.
udp_fallback
)
toolbar
.
setTitle
(
R
.
string
.
udp_fallback
)
...
@@ -95,10 +95,7 @@ class UdpFallbackProfileActivity : AppCompatActivity() {
...
@@ -95,10 +95,7 @@ class UdpFallbackProfileActivity : AppCompatActivity() {
toolbar
.
setNavigationOnClickListener
{
finish
()
}
toolbar
.
setNavigationOnClickListener
{
finish
()
}
findViewById
<
RecyclerView
>(
R
.
id
.
list
).
apply
{
findViewById
<
RecyclerView
>(
R
.
id
.
list
).
apply
{
setOnApplyWindowInsetsListener
{
v
,
insets
->
setOnApplyWindowInsetsListener
(
ListListener
)
v
.
updatePadding
(
bottom
=
insets
.
systemWindowInsetBottom
)
insets
.
consumeSystemWindowInsets
()
}
itemAnimator
=
DefaultItemAnimator
()
itemAnimator
=
DefaultItemAnimator
()
adapter
=
profilesAdapter
adapter
=
profilesAdapter
layoutManager
=
LinearLayoutManager
(
this
@UdpFallbackProfileActivity
,
RecyclerView
.
VERTICAL
,
false
).
apply
{
layoutManager
=
LinearLayoutManager
(
this
@UdpFallbackProfileActivity
,
RecyclerView
.
VERTICAL
,
false
).
apply
{
...
...
mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt
View file @
fdf2da1b
...
@@ -50,6 +50,8 @@ import com.github.shadowsocks.plugin.AlertDialogFragment
...
@@ -50,6 +50,8 @@ import com.github.shadowsocks.plugin.AlertDialogFragment
import
com.github.shadowsocks.utils.asIterable
import
com.github.shadowsocks.utils.asIterable
import
com.github.shadowsocks.utils.readableMessage
import
com.github.shadowsocks.utils.readableMessage
import
com.github.shadowsocks.utils.resolveResourceId
import
com.github.shadowsocks.utils.resolveResourceId
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.MainListListener
import
com.github.shadowsocks.widget.UndoSnackbarManager
import
com.github.shadowsocks.widget.UndoSnackbarManager
import
com.google.android.material.textfield.TextInputLayout
import
com.google.android.material.textfield.TextInputLayout
import
kotlinx.android.parcel.Parcelize
import
kotlinx.android.parcel.Parcelize
...
@@ -373,6 +375,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
...
@@ -373,6 +375,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
)
if
(
savedInstanceState
!=
null
)
{
if
(
savedInstanceState
!=
null
)
{
selectedItems
.
addAll
(
savedInstanceState
.
getStringArray
(
SELECTED_SUBNETS
)
selectedItems
.
addAll
(
savedInstanceState
.
getStringArray
(
SELECTED_SUBNETS
)
?.
mapNotNull
(
Subnet
.
Companion
::
fromString
)
?:
listOf
())
?.
mapNotNull
(
Subnet
.
Companion
::
fromString
)
?:
listOf
())
...
@@ -387,6 +390,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
...
@@ -387,6 +390,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
)
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
...
...
mobile/src/main/java/com/github/shadowsocks/tasker/ConfigActivity.kt
View file @
fdf2da1b
...
@@ -30,15 +30,15 @@ import android.widget.CheckedTextView
...
@@ -30,15 +30,15 @@ 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.updatePadding
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
import
com.github.shadowsocks.R
import
com.github.shadowsocks.R
import
com.github.shadowsocks.database.Profile
import
com.github.shadowsocks.database.Profile
import
com.github.shadowsocks.database.ProfileManager
import
com.github.shadowsocks.database.ProfileManager
import
com.github.shadowsocks.utils.consumeSystemWindowInsetsWithList
import
com.github.shadowsocks.utils.resolveResourceId
import
com.github.shadowsocks.utils.resolveResourceId
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.ListListener
class
ConfigActivity
:
AppCompatActivity
()
{
class
ConfigActivity
:
AppCompatActivity
()
{
inner
class
ProfileViewHolder
(
view
:
View
)
:
RecyclerView
.
ViewHolder
(
view
),
View
.
OnClickListener
{
inner
class
ProfileViewHolder
(
view
:
View
)
:
RecyclerView
.
ViewHolder
(
view
),
View
.
OnClickListener
{
...
@@ -94,7 +94,7 @@ class ConfigActivity : AppCompatActivity() {
...
@@ -94,7 +94,7 @@ class ConfigActivity : AppCompatActivity() {
}
}
taskerOption
=
Settings
.
fromIntent
(
intent
)
taskerOption
=
Settings
.
fromIntent
(
intent
)
setContentView
(
R
.
layout
.
layout_tasker
)
setContentView
(
R
.
layout
.
layout_tasker
)
consumeSystemWindowInsetsWithList
(
)
ListHolderListener
.
setup
(
this
)
val
toolbar
=
findViewById
<
Toolbar
>(
R
.
id
.
toolbar
)
val
toolbar
=
findViewById
<
Toolbar
>(
R
.
id
.
toolbar
)
toolbar
.
setTitle
(
R
.
string
.
app_name
)
toolbar
.
setTitle
(
R
.
string
.
app_name
)
...
@@ -104,10 +104,7 @@ class ConfigActivity : AppCompatActivity() {
...
@@ -104,10 +104,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
{
v
,
insets
->
setOnApplyWindowInsetsListener
(
ListListener
)
v
.
updatePadding
(
bottom
=
insets
.
systemWindowInsetBottom
)
insets
.
consumeSystemWindowInsets
()
}
itemAnimator
=
DefaultItemAnimator
()
itemAnimator
=
DefaultItemAnimator
()
adapter
=
profilesAdapter
adapter
=
profilesAdapter
layoutManager
=
LinearLayoutManager
(
this
@ConfigActivity
,
RecyclerView
.
VERTICAL
,
false
).
apply
{
layoutManager
=
LinearLayoutManager
(
this
@ConfigActivity
,
RecyclerView
.
VERTICAL
,
false
).
apply
{
...
...
mobile/src/main/java/com/github/shadowsocks/widget/WindowInsetsListeners.kt
0 → 100644
View file @
fdf2da1b
/*******************************************************************************
* *
* Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com> *
* Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
package
com.github.shadowsocks.widget
import
android.view.View
import
android.view.WindowInsets
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.updatePadding
import
com.github.shadowsocks.R
object
ListHolderListener
:
View
.
OnApplyWindowInsetsListener
{
override
fun
onApplyWindowInsets
(
view
:
View
,
insets
:
WindowInsets
):
WindowInsets
{
view
.
updatePadding
(
insets
.
systemWindowInsetLeft
,
insets
.
systemWindowInsetTop
,
insets
.
systemWindowInsetRight
)
@Suppress
(
"DEPRECATION"
)
return
insets
.
replaceSystemWindowInsets
(
0
,
0
,
0
,
insets
.
systemWindowInsetBottom
)
}
fun
setup
(
activity
:
AppCompatActivity
)
=
activity
.
findViewById
<
View
>(
android
.
R
.
id
.
content
).
apply
{
setOnApplyWindowInsetsListener
(
ListHolderListener
)
systemUiVisibility
=
View
.
SYSTEM_UI_FLAG_LAYOUT_STABLE
or
View
.
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
}
}
object
MainListListener
:
View
.
OnApplyWindowInsetsListener
{
override
fun
onApplyWindowInsets
(
view
:
View
,
insets
:
WindowInsets
)
=
insets
.
apply
{
view
.
updatePadding
(
bottom
=
view
.
resources
.
getDimensionPixelOffset
(
R
.
dimen
.
main_list_padding_bottom
)
+
systemWindowInsetBottom
)
}
}
object
ListListener
:
View
.
OnApplyWindowInsetsListener
{
override
fun
onApplyWindowInsets
(
view
:
View
,
insets
:
WindowInsets
)
=
insets
.
apply
{
view
.
updatePadding
(
bottom
=
systemWindowInsetBottom
)
}
}
mobile/src/main/res/layout/layout_about.xml
View file @
fdf2da1b
...
@@ -4,7 +4,8 @@
...
@@ -4,7 +4,8 @@
android:orientation=
"vertical"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:id=
"@+id/about_container"
>
android:id=
"@+id/about_container"
android:fitsSystemWindows=
"true"
>
<include
layout=
"@layout/toolbar_light_dark"
/>
<include
layout=
"@layout/toolbar_light_dark"
/>
<androidx.core.widget.NestedScrollView
<androidx.core.widget.NestedScrollView
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
mobile/src/main/res/layout/layout_custom_rules.xml
View file @
fdf2da1b
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<include
layout=
"@layout/toolbar_light_dark"
/>
<include
layout=
"@layout/toolbar_light_dark"
/>
<FrameLayout
android:layout_width=
"match_parent"
<FrameLayout
android:layout_width=
"match_parent"
...
@@ -13,7 +14,6 @@
...
@@ -13,7 +14,6 @@
android:id=
"@+id/list"
android:id=
"@+id/list"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:paddingBottom=
"32dp"
android:clipToPadding=
"false"
android:clipToPadding=
"false"
app:fastScrollEnabled=
"true"
app:fastScrollEnabled=
"true"
app:fastScrollHorizontalThumbDrawable=
"@drawable/fastscroll_thumb"
app:fastScrollHorizontalThumbDrawable=
"@drawable/fastscroll_thumb"
...
...
mobile/src/main/res/layout/layout_global_settings.xml
View file @
fdf2da1b
...
@@ -2,7 +2,8 @@
...
@@ -2,7 +2,8 @@
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:orientation=
"vertical"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
>
<include
layout=
"@layout/toolbar_light_dark"
/>
<include
layout=
"@layout/toolbar_light_dark"
/>
<FrameLayout
android:id=
"@+id/content"
<FrameLayout
android:id=
"@+id/content"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
mobile/src/main/res/layout/layout_list.xml
View file @
fdf2da1b
...
@@ -3,14 +3,14 @@
...
@@ -3,14 +3,14 @@
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
android:fitsSystemWindows=
"true"
>
<include
layout=
"@layout/toolbar_light_dark"
/>
<include
layout=
"@layout/toolbar_light_dark"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/list"
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/list"
tools:listitem=
"@layout/layout_profile"
tools:listitem=
"@layout/layout_profile"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:paddingBottom=
"88dp"
android:scrollbars=
"vertical"
android:scrollbars=
"vertical"
android:clipChildren=
"false"
android:clipChildren=
"false"
android:clipToPadding=
"false"
/>
android:clipToPadding=
"false"
/>
...
...
mobile/src/main/res/layout/layout_main.xml
View file @
fdf2da1b
...
@@ -6,19 +6,19 @@
...
@@ -6,19 +6,19 @@
android:id=
"@+id/drawer"
android:id=
"@+id/drawer"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/color_primary"
android:fitsSystemWindows=
"true"
>
android:fitsSystemWindows=
"true"
>
<androidx.coordinatorlayout.widget.CoordinatorLayout
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id=
"@+id/snackbar"
android:id=
"@+id/snackbar"
android:background=
"?android:attr/windowBackground"
android:clipChildren=
"false"
android:clipChildren=
"false"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
>
<
Frame
Layout
<
androidx.coordinatorlayout.widget.Coordinator
Layout
android:id=
"@+id/fragment_holder"
android:id=
"@+id/fragment_holder"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
/>
<com.github.shadowsocks.widget.ServiceButton
<com.github.shadowsocks.widget.ServiceButton
android:id=
"@+id/fab"
android:id=
"@+id/fab"
...
@@ -26,7 +26,6 @@
...
@@ -26,7 +26,6 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:elevation=
"6dp"
android:elevation=
"6dp"
android:nextFocusDown=
"@+id/stats"
android:nextFocusDown=
"@+id/stats"
app:layout_dodgeInsetEdges=
"top"
app:layout_anchor=
"@id/stats"
app:layout_anchor=
"@id/stats"
app:backgroundTint=
"@color/background_service"
app:backgroundTint=
"@color/background_service"
app:fabSize=
"normal"
app:fabSize=
"normal"
...
@@ -38,6 +37,7 @@
...
@@ -38,6 +37,7 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"bottom"
android:layout_gravity=
"bottom"
android:fitsSystemWindows=
"true"
android:nextFocusUp=
"@+id/fab"
android:nextFocusUp=
"@+id/fab"
app:backgroundTint=
"@color/background_stat"
app:backgroundTint=
"@color/background_stat"
app:contentInsetStart=
"0dp"
app:contentInsetStart=
"0dp"
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
<GridLayout
<GridLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"?attr/selectableItemBackground"
android:background=
"?a
ndroid:a
ttr/selectableItemBackground"
android:orientation=
"vertical"
android:orientation=
"vertical"
android:padding=
"16dip"
>
android:padding=
"16dip"
>
...
@@ -128,6 +128,7 @@
...
@@ -128,6 +128,7 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:layout_gravity=
"start"
android:layout_gravity=
"start"
app:insetForeground=
"@null"
app:itemIconTint=
"@color/nav_item_tint"
app:itemIconTint=
"@color/nav_item_tint"
app:itemTextColor=
"@color/nav_item_tint"
app:itemTextColor=
"@color/nav_item_tint"
app:headerLayout=
"@layout/navigation_header"
app:headerLayout=
"@layout/navigation_header"
...
...
mobile/src/main/res/values/dimen.xml
View file @
fdf2da1b
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
<resources>
<resources>
<dimen
name=
"qr_code_size"
>
250dp
</dimen>
<dimen
name=
"qr_code_size"
>
250dp
</dimen>
<dimen
name=
"profile_padding"
>
8dp
</dimen>
<dimen
name=
"profile_padding"
>
8dp
</dimen>
<dimen
name=
"main_list_padding_bottom"
>
88dp
</dimen>
<dimen
name=
"bottom_sheet_padding"
>
8dp
</dimen>
<dimen
name=
"bottom_sheet_padding"
>
8dp
</dimen>
<dimen
name=
"stats_bar_scroll_threshold"
>
4dp
</dimen>
<dimen
name=
"stats_bar_scroll_threshold"
>
4dp
</dimen>
</resources>
</resources>
mobile/src/main/res/values/styles.xml
View file @
fdf2da1b
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools=
"http://schemas.android.com/tools"
>
<resources>
<style
name=
"Theme.Shadowsocks.Immersive.Navigation"
>
<style
name=
"Theme.Shadowsocks.Immersive.Navigation"
>
<item
name=
"android:statusBarColor"
>
@android:color/transparent
</item>
<item
name=
"android:statusBarColor"
>
@android:color/transparent
</item>
<item
name=
"android:navigationBarColor"
>
@android:color/transparent
</item>
<item
name=
"android:enforceNavigationBarContrast"
tools:targetApi=
"q"
>
false
</item>
</style>
</style>
</resources>
</resources>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment