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
09b15c01
Commit
09b15c01
authored
Feb 21, 2022
by
sheteng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
加速器测试1
parent
e7c222d9
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
384 additions
and
191 deletions
+384
-191
app/build.gradle.kts
app/build.gradle.kts
+3
-0
app/src/main/AndroidManifest.xml
app/src/main/AndroidManifest.xml
+4
-2
app/src/main/java/com/ccwangluo/accelerator/model/News.kt
app/src/main/java/com/ccwangluo/accelerator/model/News.kt
+6
-3
app/src/main/java/com/ccwangluo/accelerator/model/NewsModel.kt
...rc/main/java/com/ccwangluo/accelerator/model/NewsModel.kt
+6
-0
app/src/main/java/com/ccwangluo/accelerator/ui/BottomNavigationFragment.kt
.../com/ccwangluo/accelerator/ui/BottomNavigationFragment.kt
+1
-2
app/src/main/java/com/ccwangluo/accelerator/ui/home/AccelertorFragment.kt
...a/com/ccwangluo/accelerator/ui/home/AccelertorFragment.kt
+36
-27
app/src/main/java/com/ccwangluo/accelerator/ui/home/AccelertorViewModel.kt
.../com/ccwangluo/accelerator/ui/home/AccelertorViewModel.kt
+0
-2
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsFragment.kt
...in/java/com/ccwangluo/accelerator/ui/home/NewsFragment.kt
+3
-3
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsViewModel.kt
...n/java/com/ccwangluo/accelerator/ui/home/NewsViewModel.kt
+27
-1
app/src/main/java/com/ccwangluo/accelerator/ui/news/DemoObjectFragment.kt
...a/com/ccwangluo/accelerator/ui/news/DemoObjectFragment.kt
+0
-54
app/src/main/java/com/ccwangluo/accelerator/ui/news/NewsCollectionAdapter.kt
...om/ccwangluo/accelerator/ui/news/NewsCollectionAdapter.kt
+3
-3
app/src/main/java/com/ccwangluo/accelerator/ui/news/NewsObjectFragment.kt
...a/com/ccwangluo/accelerator/ui/news/NewsObjectFragment.kt
+112
-0
app/src/main/java/com/ccwangluo/accelerator/ui/view/NoScrollViewPager.java
.../com/ccwangluo/accelerator/ui/view/NoScrollViewPager.java
+56
-0
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidInterface.kt
...java/com/ccwangluo/accelerator/ui/web/AndroidInterface.kt
+8
-0
app/src/main/java/com/ccwangluo/accelerator/utils/AcceleratorUtils.kt
.../java/com/ccwangluo/accelerator/utils/AcceleratorUtils.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/utils/LoginUtils.kt
...c/main/java/com/ccwangluo/accelerator/utils/LoginUtils.kt
+0
-1
app/src/main/java/com/ccwangluo/accelerator/utils/PhoneUtils.kt
...c/main/java/com/ccwangluo/accelerator/utils/PhoneUtils.kt
+1
-1
app/src/main/res/layout/fragment_btn_nav.xml
app/src/main/res/layout/fragment_btn_nav.xml
+1
-1
app/src/main/res/layout/fragment_quick.xml
app/src/main/res/layout/fragment_quick.xml
+47
-9
app/src/main/res/layout/item_dynamic.xml
app/src/main/res/layout/item_dynamic.xml
+52
-40
core/src/main/java/com/github/shadowsocks/bg/AuthManager.kt
core/src/main/java/com/github/shadowsocks/bg/AuthManager.kt
+16
-40
core/src/main/java/com/github/shadowsocks/bg/BaseService.kt
core/src/main/java/com/github/shadowsocks/bg/BaseService.kt
+1
-0
core/src/main/java/com/github/shadowsocks/bg/VpnService.kt
core/src/main/java/com/github/shadowsocks/bg/VpnService.kt
+0
-1
No files found.
app/build.gradle.kts
View file @
09b15c01
...
@@ -115,4 +115,7 @@ dependencies {
...
@@ -115,4 +115,7 @@ dependencies {
//gps
//gps
implementation
(
"com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.3.0"
)
implementation
(
"com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.3.0"
)
implementation
(
"com.github.bumptech.glide:glide:4.11.0"
)
annotationProcessor
(
"com.github.bumptech.glide:compiler:4.11.0"
)
}
}
\ No newline at end of file
app/src/main/AndroidManifest.xml
View file @
09b15c01
...
@@ -18,10 +18,12 @@
...
@@ -18,10 +18,12 @@
<uses-permission
android:name=
"android.permission.BLUETOOTH_ADMIN"
/>
<!-- 支持A-GPS辅助定位 -->
<uses-permission
android:name=
"android.permission.BLUETOOTH_ADMIN"
/>
<!-- 支持A-GPS辅助定位 -->
<uses-permission
android:name=
"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"
/>
<!-- 用于 log 日志 -->
<uses-permission
android:name=
"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"
/>
<!-- 用于 log 日志 -->
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.REQUEST_INSTALL_PACKAGES"
/>
<queries>
<queries>
<package
android:name=
"com.tencent.mm"
/>
<package
android:name=
"com.tencent.mm"
/>
<package
android:name=
"com.tencent.mobileqq"
/>
<package
android:name=
"com.tencent.mobileqq"
/>
<package
android:name=
"com.baidu.browser.apps"
/>
</queries>
</queries>
<application
<application
...
@@ -42,8 +44,8 @@
...
@@ -42,8 +44,8 @@
<activity
<activity
android:name=
".ui.MainActivity"
android:name=
".ui.MainActivity"
android:label=
"@string/app_name"
android:label=
"@string/app_name"
android:
screenOrientation=
"portrait
"
android:
exported=
"true
"
android:
windowSoftInputMode=
"stateVisible|adjustPan
"
>
android:
screenOrientation=
"portrait
"
>
<intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<action
android:name=
"android.intent.action.MAIN"
/>
...
...
app/src/main/java/com/ccwangluo/accelerator/model/News
Res
.kt
→
app/src/main/java/com/ccwangluo/accelerator/model/News.kt
View file @
09b15c01
package
com.ccwangluo.accelerator.model
package
com.ccwangluo.accelerator.model
data class
NewsRes
(
data class
News
(
val
abbrContent
:
String
?,
val
avatar
:
String
?,
val
avatar
:
String
?,
val
content
:
String
?,
val
content
:
String
?,
val
createdDate
:
String
?,
val
createdDate
:
String
?,
val
greatNum
:
Int
?,
val
greatNum
:
Int
?,
val
id
:
Int
?,
val
id
:
Int
?,
val
imgs
:
String
?,
val
nickname
:
String
?,
val
nickname
:
String
?,
val
pageViews
:
Int
?,
val
title
:
String
?,
val
title
:
String
?,
val
video
:
String
?
,
val
type
:
Int
,
val
video
Name
:
String
?
val
video
Url
:
String
?
)
)
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/model/NewsModel.kt
0 → 100644
View file @
09b15c01
package
com.ccwangluo.accelerator.model
data class
NewsModel
(
val
list
:
List
<
News
>,
val
total
:
Int
)
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/ui/BottomNavigationFragment.kt
View file @
09b15c01
...
@@ -54,8 +54,7 @@ class BottomNavigationFragment : XPageFragment(), ViewPager.OnPageChangeListener
...
@@ -54,8 +54,7 @@ class BottomNavigationFragment : XPageFragment(), ViewPager.OnPageChangeListener
adapter
.
addFragment
(
fragments
[
2
],
titles
[
2
])
adapter
.
addFragment
(
fragments
[
2
],
titles
[
2
])
binding
.
viewPager
.
setOffscreenPageLimit
(
titles
.
size
-
1
);
binding
.
viewPager
.
setOffscreenPageLimit
(
titles
.
size
-
1
);
binding
.
viewPager
.
adapter
=
adapter
binding
.
viewPager
.
adapter
=
adapter
// binding.viewPager
binding
.
viewPager
.
setNoScroll
(
true
)
AcceleratorUtils
.
getGameList
(
this
,{})
AcceleratorUtils
.
getGameList
(
this
,{})
}
}
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/home/AccelertorFragment.kt
View file @
09b15c01
...
@@ -25,6 +25,7 @@ import com.hjq.toast.ToastUtils
...
@@ -25,6 +25,7 @@ import com.hjq.toast.ToastUtils
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xpage.utils.TitleBar
import
com.xuexiang.xpage.utils.TitleBar
import
com.xuexiang.xui.utils.ViewUtils
import
com.xuexiang.xui.utils.ViewUtils
import
com.xuexiang.xui.widget.progress.CircleProgressView
import
com.xuexiang.xutil.app.AppUtils
import
com.xuexiang.xutil.app.AppUtils
class
AccelertorFragment
:
XPageFragment
()
{
class
AccelertorFragment
:
XPageFragment
()
{
...
@@ -46,6 +47,8 @@ class AccelertorFragment : XPageFragment() {
...
@@ -46,6 +47,8 @@ class AccelertorFragment : XPageFragment() {
return
binding
.
root
return
binding
.
root
}
}
var
isStartAcc
=
false
override
fun
initViews
()
{
override
fun
initViews
()
{
accelertorViewModel
.
netState
.
observe
(
this
,
{
accelertorViewModel
.
netState
.
observe
(
this
,
{
if
(
it
.
preNetDelay
!=
-
1
)
{
//有网络
if
(
it
.
preNetDelay
!=
-
1
)
{
//有网络
...
@@ -99,11 +102,11 @@ class AccelertorFragment : XPageFragment() {
...
@@ -99,11 +102,11 @@ class AccelertorFragment : XPageFragment() {
freshData
(
it
)
freshData
(
it
)
}
}
if
(
SettingSPUtils
.
isSmartAccOpen
)
{
if
(
SettingSPUtils
.
isSmartAccOpen
)
{
binding
.
smartAccOpen
.
setText
(
"已开启
>
"
)
binding
.
smartAccOpen
.
setText
(
"已开启"
)
binding
.
smartAccOpen
.
setTextColor
(
resources
.
getColor
(
R
.
color
.
open_acc_enable
))
binding
.
smartAccOpen
.
setTextColor
(
resources
.
getColor
(
R
.
color
.
open_acc_enable
))
binding
.
smartAccOpenArea
.
visibility
=
View
.
GONE
binding
.
smartAccOpenArea
.
visibility
=
View
.
GONE
}
else
{
}
else
{
binding
.
smartAccOpen
.
setText
(
"未开启 "
)
binding
.
smartAccOpen
.
setText
(
"未开启
>
"
)
binding
.
smartAccOpen
.
setTextColor
(
resources
.
getColor
(
R
.
color
.
white
))
binding
.
smartAccOpen
.
setTextColor
(
resources
.
getColor
(
R
.
color
.
white
))
binding
.
smartAccOpenArea
.
visibility
=
View
.
VISIBLE
binding
.
smartAccOpenArea
.
visibility
=
View
.
VISIBLE
}
}
...
@@ -116,7 +119,30 @@ class AccelertorFragment : XPageFragment() {
...
@@ -116,7 +119,30 @@ class AccelertorFragment : XPageFragment() {
binding
.
iconNoticeBadge
.
visibility
=
View
.
GONE
binding
.
iconNoticeBadge
.
visibility
=
View
.
GONE
}
}
})
})
binding
.
progressViewCircleSmall
.
setProgressTextVisibility
(
false
)
binding
.
progressViewCircleSmall
.
setProgressViewUpdateListener
(
object
:
CircleProgressView
.
CircleProgressUpdateListener
{
override
fun
onCircleProgressStart
(
view
:
View
?)
{
binding
.
progressArea
.
visibility
=
View
.
VISIBLE
}
override
fun
onCircleProgressUpdate
(
view
:
View
?,
progress
:
Float
)
{
binding
.
progress
.
setText
(
progress
.
toInt
().
toString
())
}
override
fun
onCircleProgressFinished
(
view
:
View
?)
{
binding
.
progressArea
.
visibility
=
View
.
GONE
binding
.
btnQuick
.
isEnabled
=
true
binding
.
progressViewCircleSmall
.
progress
=
0F
isStartAcc
=
true
AcceleratorUtils
.
startAccelerator
(
this
@AccelertorFragment
)
}
})
if
(
binding
.
gamePicOut
.
background
is
AnimationDrawable
)
{
(
binding
.
gamePicOut
.
background
as
AnimationDrawable
).
start
()
binding
.
gamePicOut
.
startAnimation
(
getDefaultAnim
())
}
}
}
...
@@ -142,10 +168,10 @@ class AccelertorFragment : XPageFragment() {
...
@@ -142,10 +168,10 @@ class AccelertorFragment : XPageFragment() {
}
}
binding
.
preventAccLost
.
setOnClickListener
{
binding
.
preventAccLost
.
setOnClickListener
{
openToWebview
(
HttpConfig
.
UI_
QUESTION_URL
)
openToWebview
(
HttpConfig
.
UI_
SPEED_URL
+
"?id=1"
)
}
}
binding
.
preventAccInvalid
.
setOnClickListener
{
binding
.
preventAccInvalid
.
setOnClickListener
{
openToWebview
(
HttpConfig
.
UI_SPEED_URL
)
openToWebview
(
HttpConfig
.
UI_SPEED_URL
+
"?id=2"
)
}
}
binding
.
btnExpend
.
setOnClickListener
{
binding
.
btnExpend
.
setOnClickListener
{
...
@@ -189,7 +215,7 @@ class AccelertorFragment : XPageFragment() {
...
@@ -189,7 +215,7 @@ class AccelertorFragment : XPageFragment() {
if
(
it
)
{
if
(
it
)
{
//
//
AcceleratorUtils
.
game
?.
let
{
AcceleratorUtils
.
game
?.
let
{
if
(!
AppUtils
.
isInstallApp
(
it
.
packageName
))
{
if
(!
SysUtils
.
isPackageInstall
(
requireContext
(),
it
.
packageName
))
{
binding
.
quickTopToast
.
visibility
=
View
.
VISIBLE
binding
.
quickTopToast
.
visibility
=
View
.
VISIBLE
binding
.
quickTopToastTx
.
setText
(
"请先安装游戏后加速"
)
binding
.
quickTopToastTx
.
setText
(
"请先安装游戏后加速"
)
binding
.
quickTopToastTx
.
postDelayed
({
binding
.
quickTopToastTx
.
postDelayed
({
...
@@ -199,13 +225,12 @@ class AccelertorFragment : XPageFragment() {
...
@@ -199,13 +225,12 @@ class AccelertorFragment : XPageFragment() {
}
}
}
}
//用户是否有使用时长
//用户是否有使用时长
LoginUtils
.
getUserHasTimer
(
this
)
{
LoginUtils
.
getUserHasTimer
(
this
@AccelertorFragment
)
{
if
(
it
)
{
if
(
it
)
{
binding
.
btnQuick
.
isEnabled
=
false
binding
.
btnQuick
.
isEnabled
=
false
AcceleratorUtils
.
startAccelerator
(
this
)
startAnim
()
startAnim
()
}
else
{
}
else
{
MemberDialog
(
this
).
show
<
MemberDialog
>()
MemberDialog
(
this
@AccelertorFragment
).
show
<
MemberDialog
>()
}
}
}
}
}
else
{
}
else
{
...
@@ -229,8 +254,6 @@ class AccelertorFragment : XPageFragment() {
...
@@ -229,8 +254,6 @@ class AccelertorFragment : XPageFragment() {
}
}
})
})
}
}
}
}
override
fun
onResume
()
{
override
fun
onResume
()
{
...
@@ -246,14 +269,11 @@ class AccelertorFragment : XPageFragment() {
...
@@ -246,14 +269,11 @@ class AccelertorFragment : XPageFragment() {
fun
freshData
(
state
:
BaseService
.
State
)
{
fun
freshData
(
state
:
BaseService
.
State
)
{
if
(
state
==
BaseService
.
State
.
Connected
)
{
if
(
state
==
BaseService
.
State
.
Connected
)
{
stopAnim
()
binding
.
gamePicIn1
.
startAnimation
(
getDefaultAnim
())
binding
.
gamePicIn1
.
startAnimation
(
getDefaultAnim
())
binding
.
progressViewCircleSmall
.
progress
=
100F
binding
.
accStateTx
.
visibility
=
View
.
VISIBLE
binding
.
accStateTx
.
visibility
=
View
.
VISIBLE
binding
.
btnQuick
.
setBackgroundResource
(
R
.
mipmap
.
quick_stop
)
binding
.
btnQuick
.
setBackgroundResource
(
R
.
mipmap
.
quick_stop
)
if
(
binding
.
gamePicOut
.
background
is
AnimationDrawable
)
{
if
(
binding
.
gamePicOut
.
background
is
AnimationDrawable
)
{
(
binding
.
gamePicOut
.
background
as
AnimationDrawable
).
stop
()
(
binding
.
gamePicOut
.
background
as
AnimationDrawable
).
stop
()
binding
.
gamePicOut
.
clearAnimation
()
}
}
if
(
SettingSPUtils
.
isFirstAccSuccess
)
{
if
(
SettingSPUtils
.
isFirstAccSuccess
)
{
CommonDialog
(
this
).
setTitle
(
"防止加速掉线"
)
CommonDialog
(
this
).
setTitle
(
"防止加速掉线"
)
...
@@ -263,16 +283,12 @@ class AccelertorFragment : XPageFragment() {
...
@@ -263,16 +283,12 @@ class AccelertorFragment : XPageFragment() {
}).
show
<
CommonDialog
>()
}).
show
<
CommonDialog
>()
SettingSPUtils
.
isFirstAccSuccess
=
false
SettingSPUtils
.
isFirstAccSuccess
=
false
}
}
}
else
if
(
state
==
BaseService
.
State
.
Stopped
)
{
}
else
{
binding
.
gamePicIn1
.
clearAnimation
()
if
(
binding
.
gamePicOut
.
background
is
AnimationDrawable
)
{
if
(
binding
.
gamePicOut
.
background
is
AnimationDrawable
)
{
(
binding
.
gamePicOut
.
background
as
AnimationDrawable
).
start
()
(
binding
.
gamePicOut
.
background
as
AnimationDrawable
).
start
()
binding
.
gamePicOut
.
startAnimation
(
getDefaultAnim
())
}
}
binding
.
gamePicIn1
.
clearAnimation
()
stopAnim
()
binding
.
accStateTx
.
visibility
=
View
.
GONE
binding
.
accStateTx
.
visibility
=
View
.
GONE
binding
.
progressViewCircleSmall
.
progress
=
0F
binding
.
btnQuick
.
setBackgroundResource
(
R
.
mipmap
.
quick_start
)
binding
.
btnQuick
.
setBackgroundResource
(
R
.
mipmap
.
quick_start
)
}
}
}
}
...
@@ -292,14 +308,7 @@ class AccelertorFragment : XPageFragment() {
...
@@ -292,14 +308,7 @@ class AccelertorFragment : XPageFragment() {
AcceleratorUtils
.
unRegisterStateListener
()
AcceleratorUtils
.
unRegisterStateListener
()
}
}
fun
stopAnim
()
{
binding
.
btnQuick
.
isEnabled
=
true
binding
.
progressViewCircleSmall
.
stopProgressAnimation
()
binding
.
progressViewCircleSmall
.
setProgressTextVisibility
(
false
)
}
fun
startAnim
()
{
fun
startAnim
()
{
binding
.
progressViewCircleSmall
.
setProgressTextVisibility
(
true
)
binding
.
progressViewCircleSmall
.
startProgressAnimation
()
binding
.
progressViewCircleSmall
.
startProgressAnimation
()
}
}
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/home/AccelertorViewModel.kt
View file @
09b15c01
...
@@ -17,7 +17,5 @@ class AccelertorViewModel : ViewModel() {
...
@@ -17,7 +17,5 @@ class AccelertorViewModel : ViewModel() {
//用户状态
//用户状态
var
userProfile
=
MutableLiveData
<
UserProfile
>()
var
userProfile
=
MutableLiveData
<
UserProfile
>()
//加速配置
// var gameConfig = MutableLiveData<GameConfig>()
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsFragment.kt
View file @
09b15c01
...
@@ -6,7 +6,7 @@ import android.view.ViewGroup
...
@@ -6,7 +6,7 @@ import android.view.ViewGroup
import
androidx.lifecycle.ViewModelProvider
import
androidx.lifecycle.ViewModelProvider
import
com.ccwangluo.accelerator.R
import
com.ccwangluo.accelerator.R
import
com.ccwangluo.accelerator.databinding.FragmentNewsBinding
import
com.ccwangluo.accelerator.databinding.FragmentNewsBinding
import
com.ccwangluo.accelerator.ui.news.
Demo
CollectionAdapter
import
com.ccwangluo.accelerator.ui.news.
News
CollectionAdapter
import
com.google.android.material.tabs.TabLayoutMediator
import
com.google.android.material.tabs.TabLayoutMediator
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xpage.utils.TitleBar
import
com.xuexiang.xpage.utils.TitleBar
...
@@ -27,7 +27,7 @@ class NewsFragment : XPageFragment() {
...
@@ -27,7 +27,7 @@ class NewsFragment : XPageFragment() {
}
}
val
titles
=
arrayOf
(
"全部"
,
"攻略"
,
"视频"
,
"评价"
,
"问答"
)
val
titles
=
arrayOf
(
"全部"
,
"攻略"
,
"视频"
,
"评价"
,
"问答"
)
var
adapter
:
Demo
CollectionAdapter
?
=
null
var
adapter
:
News
CollectionAdapter
?
=
null
override
fun
initViews
()
{
override
fun
initViews
()
{
newsViewModel
.
refreshState
.
observe
(
this
,
{
newsViewModel
.
refreshState
.
observe
(
this
,
{
if
(!
it
)
{
if
(!
it
)
{
...
@@ -38,7 +38,7 @@ class NewsFragment : XPageFragment() {
...
@@ -38,7 +38,7 @@ class NewsFragment : XPageFragment() {
binding
.
tvMarquee
.
addDisplayString
(
"【公告】韩服 DNF已经开启预约啦,小伙伴…"
)
binding
.
tvMarquee
.
addDisplayString
(
"【公告】韩服 DNF已经开启预约啦,小伙伴…"
)
binding
.
tvMarquee
.
startRoll
()
binding
.
tvMarquee
.
startRoll
()
adapter
=
Demo
CollectionAdapter
(
this
,
titles
)
adapter
=
News
CollectionAdapter
(
this
,
titles
)
binding
.
viewPager
.
adapter
=
adapter
binding
.
viewPager
.
adapter
=
adapter
TabLayoutMediator
(
binding
.
tabLayout
,
binding
.
viewPager
)
{
tab
,
position
->
TabLayoutMediator
(
binding
.
tabLayout
,
binding
.
viewPager
)
{
tab
,
position
->
tab
.
setCustomView
(
R
.
layout
.
item_tab
)
tab
.
setCustomView
(
R
.
layout
.
item_tab
)
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsViewModel.kt
View file @
09b15c01
...
@@ -2,13 +2,39 @@ package com.ccwangluo.accelerator.ui.home
...
@@ -2,13 +2,39 @@ package com.ccwangluo.accelerator.ui.home
import
androidx.lifecycle.MutableLiveData
import
androidx.lifecycle.MutableLiveData
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
com.ccwangluo.accelerator.model.NewsModel
import
com.ccwangluo.accelerator.utils.http.HttpGo
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
class
NewsViewModel
:
ViewModel
()
{
class
NewsViewModel
:
ViewModel
()
{
/**
/**
* 刷新状态
* 刷新状态
*/
*/
val
refreshState
=
MutableLiveData
<
Boolean
>()
val
refreshState
=
MutableLiveData
<
Boolean
>()
val
newsModel
=
MutableLiveData
<
NewsModel
>()
fun
freshData
(
position
:
String
,
gameId
:
Int
,
page
:
Int
)
{
val
type
=
when
(
position
)
{
"0"
->
""
"1"
->
"0"
"2"
->
"1"
else
->
3
}
viewModelScope
.
launch
(
Dispatchers
.
IO
)
{
val
res
=
HttpGo
.
getSync
<
NewsModel
>(
"/api/new/all/list?gameId=$gameId&page=$page&size=10&type=$type"
)
res
?.
let
{
if
(
it
.
code
==
200
)
{
it
.
data
?.
let
{
newsModel
.
postValue
(
it
)
}
}
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/ui/news/DemoObjectFragment.kt
deleted
100644 → 0
View file @
e7c222d9
package
com.ccwangluo.accelerator.ui.news
import
android.os.Bundle
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
androidx.fragment.app.Fragment
import
androidx.lifecycle.ViewModelProvider
import
androidx.recyclerview.widget.RecyclerView
import
com.ccwangluo.accelerator.R
import
com.ccwangluo.accelerator.adapter.KotlinDataAdapter
import
com.ccwangluo.accelerator.model.NewsRes
import
com.ccwangluo.accelerator.ui.home.NewsViewModel
import
com.ccwangluo.accelerator.ui.news.DemoCollectionAdapter.Companion.ARG_OBJECT
class
DemoObjectFragment
:
Fragment
()
{
var
recycle_view
:
RecyclerView
?
=
null
private
lateinit
var
newsViewModel
:
NewsViewModel
private
val
deviceList
=
arrayListOf
<
NewsRes
>()
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?
):
View
{
newsViewModel
=
ViewModelProvider
(
requireActivity
()).
get
(
NewsViewModel
::
class
.
java
)
return
inflater
.
inflate
(
R
.
layout
.
fragment_collection_object
,
container
,
false
)
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
arguments
?.
takeIf
{
it
.
containsKey
(
ARG_OBJECT
)
}
?.
apply
{
val
position
=
getInt
(
ARG_OBJECT
).
toString
()
recycle_view
=
view
.
findViewById
(
R
.
id
.
recycle_view
)
val
adapter
=
KotlinDataAdapter
.
Builder
<
NewsRes
>()
.
setData
(
deviceList
)
.
setLayoutId
(
R
.
layout
.
item_dynamic
)
.
addBindView
{
itemView
,
itemData
->
}
.
create
()
recycle_view
?.
adapter
=
adapter
}
}
fun
refresh
()
{
recycle_view
?.
postDelayed
({
newsViewModel
.
refreshState
.
postValue
(
false
)
},
1000
)
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/ui/news/
Demo
CollectionAdapter.kt
→
app/src/main/java/com/ccwangluo/accelerator/ui/news/
News
CollectionAdapter.kt
View file @
09b15c01
...
@@ -4,15 +4,15 @@ import android.os.Bundle
...
@@ -4,15 +4,15 @@ import android.os.Bundle
import
androidx.fragment.app.Fragment
import
androidx.fragment.app.Fragment
import
androidx.viewpager2.adapter.FragmentStateAdapter
import
androidx.viewpager2.adapter.FragmentStateAdapter
class
Demo
CollectionAdapter
(
fragment
:
Fragment
,
val
titles
:
Array
<
String
>)
:
class
News
CollectionAdapter
(
fragment
:
Fragment
,
val
titles
:
Array
<
String
>)
:
FragmentStateAdapter
(
fragment
)
{
FragmentStateAdapter
(
fragment
)
{
override
fun
getItemCount
():
Int
=
titles
.
size
override
fun
getItemCount
():
Int
=
titles
.
size
var
list
=
mutableListOf
<
Demo
ObjectFragment
>()
var
list
=
mutableListOf
<
News
ObjectFragment
>()
override
fun
createFragment
(
position
:
Int
):
Fragment
{
override
fun
createFragment
(
position
:
Int
):
Fragment
{
val
fragment
=
Demo
ObjectFragment
()
val
fragment
=
News
ObjectFragment
()
fragment
.
arguments
=
Bundle
().
apply
{
fragment
.
arguments
=
Bundle
().
apply
{
// Our object is just an integer :-P
// Our object is just an integer :-P
putInt
(
ARG_OBJECT
,
position
)
putInt
(
ARG_OBJECT
,
position
)
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/news/NewsObjectFragment.kt
0 → 100644
View file @
09b15c01
package
com.ccwangluo.accelerator.ui.news
import
android.net.Uri
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.ImageView
import
android.widget.TextView
import
android.widget.VideoView
import
androidx.lifecycle.ViewModelProvider
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
com.bumptech.glide.Glide
import
com.ccwangluo.accelerator.R
import
com.ccwangluo.accelerator.adapter.KotlinDataAdapter
import
com.ccwangluo.accelerator.model.News
import
com.ccwangluo.accelerator.ui.home.NewsViewModel
import
com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter.Companion.ARG_OBJECT
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xpage.utils.TitleBar
import
com.xuexiang.xutil.app.AppUtils
class
NewsObjectFragment
:
XPageFragment
()
{
var
recycle_view
:
RecyclerView
?
=
null
override
fun
initTitleBar
():
TitleBar
?
{
//不使用@Page标注的一定要注意覆盖这个方法
return
null
}
private
lateinit
var
newsViewModel
:
NewsViewModel
private
val
deviceList
=
arrayListOf
<
News
>()
private
val
page
=
1
private
lateinit
var
position
:
String
override
fun
inflateView
(
inflater
:
LayoutInflater
?,
container
:
ViewGroup
?):
View
{
newsViewModel
=
ViewModelProvider
(
this
).
get
(
NewsViewModel
::
class
.
java
)
return
inflater
!!
.
inflate
(
R
.
layout
.
fragment_collection_object
,
container
,
false
)
}
override
fun
initViews
()
{
arguments
?.
takeIf
{
it
.
containsKey
(
ARG_OBJECT
)
}
?.
apply
{
position
=
getInt
(
ARG_OBJECT
).
toString
()
recycle_view
=
findViewById
(
R
.
id
.
recycle_view
)
val
layoutManager
=
LinearLayoutManager
(
context
)
recycle_view
?.
setLayoutManager
(
layoutManager
)
val
adapter
=
KotlinDataAdapter
.
Builder
<
News
>()
.
setData
(
deviceList
)
.
setLayoutId
(
R
.
layout
.
item_dynamic
)
.
addBindView
{
itemView
,
itemData
->
val
avatar
=
itemView
.
findViewById
<
ImageView
>(
R
.
id
.
avatar
)
Glide
.
with
(
this
@NewsObjectFragment
).
load
(
itemData
.
avatar
).
into
(
avatar
)
itemView
.
findViewById
<
TextView
>(
R
.
id
.
nickname
).
setText
(
itemData
.
nickname
)
itemView
.
findViewById
<
TextView
>(
R
.
id
.
createdDate
).
setText
(
itemData
.
createdDate
)
itemData
.
title
?.
let
{
itemView
.
findViewById
<
TextView
>(
R
.
id
.
title
).
visibility
=
View
.
VISIBLE
itemView
.
findViewById
<
TextView
>(
R
.
id
.
title
).
setText
(
it
)
}
?:
let
{
itemView
.
findViewById
<
TextView
>(
R
.
id
.
title
).
visibility
=
View
.
GONE
}
itemData
.
abbrContent
?.
let
{
itemView
.
findViewById
<
TextView
>(
R
.
id
.
abbrContent
).
visibility
=
View
.
VISIBLE
itemView
.
findViewById
<
TextView
>(
R
.
id
.
abbrContent
).
setText
(
it
)
}
?:
let
{
itemView
.
findViewById
<
TextView
>(
R
.
id
.
abbrContent
).
visibility
=
View
.
GONE
}
// 资讯类型:0攻略 1视频
val
imgs
=
itemView
.
findViewById
<
ImageView
>(
R
.
id
.
imgs
)
val
vedio
=
itemView
.
findViewById
<
VideoView
>(
R
.
id
.
video_view
)
if
(
itemData
.
type
==
0
)
{
itemData
.
imgs
?.
let
{
imgs
.
visibility
=
View
.
VISIBLE
vedio
.
visibility
=
View
.
GONE
Glide
.
with
(
this
@NewsObjectFragment
).
load
(
itemData
.
imgs
).
into
(
imgs
)
}
}
else
if
(
itemData
.
type
==
1
)
{
itemData
.
videoUrl
?.
let
{
imgs
.
visibility
=
View
.
GONE
vedio
.
visibility
=
View
.
VISIBLE
vedio
.
setVideoURI
(
Uri
.
parse
(
it
))
}
}
}
.
create
()
recycle_view
?.
adapter
=
adapter
AcceleratorUtils
.
getGameList
(
this
@NewsObjectFragment
)
{
if
(
it
)
{
AcceleratorUtils
.
game
?.
let
{
newsViewModel
.
freshData
(
position
,
it
.
id
,
page
)
}
}
}
}
newsViewModel
.
newsModel
.
observe
(
this
,
{
deviceList
.
addAll
(
it
.
list
)
recycle_view
?.
adapter
?.
notifyDataSetChanged
()
})
}
override
fun
initListeners
()
{
}
fun
refresh
()
{
recycle_view
?.
postDelayed
({
AcceleratorUtils
.
game
?.
let
{
newsViewModel
.
freshData
(
position
,
it
.
id
,
page
)
}
},
1000
)
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/ui/view/NoScrollViewPager.java
0 → 100644
View file @
09b15c01
package
com.ccwangluo.accelerator.ui.view
;
import
android.content.Context
;
import
android.util.AttributeSet
;
import
android.view.MotionEvent
;
import
androidx.viewpager.widget.ViewPager
;
public
class
NoScrollViewPager
extends
ViewPager
{
private
boolean
noScroll
=
false
;
public
NoScrollViewPager
(
Context
context
,
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
}
public
NoScrollViewPager
(
Context
context
)
{
super
(
context
);
}
public
void
setNoScroll
(
boolean
noScroll
)
{
this
.
noScroll
=
noScroll
;
}
@Override
public
void
scrollTo
(
int
x
,
int
y
)
{
super
.
scrollTo
(
x
,
y
);
}
@Override
public
boolean
onTouchEvent
(
MotionEvent
arg0
)
{
if
(
noScroll
)
return
false
;
else
return
super
.
onTouchEvent
(
arg0
);
}
@Override
public
boolean
onInterceptTouchEvent
(
MotionEvent
arg0
)
{
if
(
noScroll
)
return
false
;
else
return
super
.
onInterceptTouchEvent
(
arg0
);
}
@Override
public
void
setCurrentItem
(
int
item
,
boolean
smoothScroll
)
{
super
.
setCurrentItem
(
item
,
smoothScroll
);
}
@Override
public
void
setCurrentItem
(
int
item
)
{
super
.
setCurrentItem
(
item
);
}
}
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidInterface.kt
View file @
09b15c01
...
@@ -169,6 +169,14 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
...
@@ -169,6 +169,14 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
AppUtils
.
uninstallApp
(
pageName
)
AppUtils
.
uninstallApp
(
pageName
)
}
}
/**
* 安装
*/
@JavascriptInterface
fun
installPackge
(
pageName
:
String
)
{
// AppUtils.installApp(pageName)
}
/**
/**
* 版本号
* 版本号
*/
*/
...
...
app/src/main/java/com/ccwangluo/accelerator/utils/AcceleratorUtils.kt
View file @
09b15c01
...
@@ -154,7 +154,7 @@ object AcceleratorUtils {
...
@@ -154,7 +154,7 @@ object AcceleratorUtils {
profile
.
route
=
Acl
.
BYPASS_LAN
profile
.
route
=
Acl
.
BYPASS_LAN
profile
.
password
=
"barfoo!"
profile
.
password
=
"barfoo!"
profile
.
method
=
"none"
profile
.
method
=
"none"
profile
.
beatsInterval
=
6
0
profile
.
beatsInterval
=
1
0
withContext
(
Dispatchers
.
Main
)
{
withContext
(
Dispatchers
.
Main
)
{
ProfileManager
.
updateProfile
(
profile
)
ProfileManager
.
updateProfile
(
profile
)
connect
.
launch
(
null
)
connect
.
launch
(
null
)
...
...
app/src/main/java/com/ccwangluo/accelerator/utils/LoginUtils.kt
View file @
09b15c01
...
@@ -108,7 +108,6 @@ object LoginUtils {
...
@@ -108,7 +108,6 @@ object LoginUtils {
res
?.
let
{
res
?.
let
{
if
(
it
.
code
==
200
)
{
if
(
it
.
code
==
200
)
{
token
=
it
.
data
?.
token
token
=
it
.
data
?.
token
AuthManager
.
authToken
=
token
ToastUtils
.
show
(
"登录成功"
)
ToastUtils
.
show
(
"登录成功"
)
OneKeyLoginManager
.
getInstance
().
finishAuthActivity
()
OneKeyLoginManager
.
getInstance
().
finishAuthActivity
()
withContext
(
Dispatchers
.
Main
)
{
withContext
(
Dispatchers
.
Main
)
{
...
...
app/src/main/java/com/ccwangluo/accelerator/utils/PhoneUtils.kt
View file @
09b15c01
...
@@ -87,7 +87,7 @@ object PhoneUtils {
...
@@ -87,7 +87,7 @@ object PhoneUtils {
val
mOtherTv
=
TextView
(
context
)
val
mOtherTv
=
TextView
(
context
)
mOtherTv
.
text
=
"其他方式登录"
mOtherTv
.
text
=
"其他方式登录"
mOtherTv
.
setTextColor
(
Color
.
parseColor
(
"#FF408DFF"
))
mOtherTv
.
setTextColor
(
Color
.
parseColor
(
"#FF408DFF"
))
mOtherTv
.
setTextSize
(
TypedValue
.
COMPLEX_UNIT_SP
,
1
2
f
)
mOtherTv
.
setTextSize
(
TypedValue
.
COMPLEX_UNIT_SP
,
1
6
f
)
val
otherLayoutParams
=
RelativeLayout
.
LayoutParams
(
val
otherLayoutParams
=
RelativeLayout
.
LayoutParams
(
RelativeLayout
.
LayoutParams
.
WRAP_CONTENT
,
RelativeLayout
.
LayoutParams
.
WRAP_CONTENT
,
RelativeLayout
.
LayoutParams
.
WRAP_CONTENT
RelativeLayout
.
LayoutParams
.
WRAP_CONTENT
...
...
app/src/main/res/layout/fragment_btn_nav.xml
View file @
09b15c01
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
>
<
androidx.viewpager.widget.
ViewPager
<
com.ccwangluo.accelerator.ui.view.NoScroll
ViewPager
android:id=
"@+id/view_pager"
android:id=
"@+id/view_pager"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/fragment_quick.xml
View file @
09b15c01
...
@@ -32,8 +32,8 @@
...
@@ -32,8 +32,8 @@
android:textSize=
"16sp"
/>
android:textSize=
"16sp"
/>
<ImageView
<ImageView
android:layout_width=
"
16
dp"
android:layout_width=
"
20
dp"
android:layout_height=
"2
2
dp"
android:layout_height=
"2
0
dp"
android:layout_alignParentEnd=
"true"
android:layout_alignParentEnd=
"true"
android:layout_centerVertical=
"true"
android:layout_centerVertical=
"true"
android:layout_marginEnd=
"22.15dp"
android:layout_marginEnd=
"22.15dp"
...
@@ -49,8 +49,8 @@
...
@@ -49,8 +49,8 @@
<com.xuexiang.xui.widget.button.roundbutton.RoundButton
<com.xuexiang.xui.widget.button.roundbutton.RoundButton
android:id=
"@+id/icon_notice_badge"
android:id=
"@+id/icon_notice_badge"
android:layout_width=
"
4
dp"
android:layout_width=
"
8
dp"
android:layout_height=
"
4
dp"
android:layout_height=
"
8
dp"
android:layout_alignParentEnd=
"true"
android:layout_alignParentEnd=
"true"
android:visibility=
"gone"
android:visibility=
"gone"
app:rb_backgroundColor=
"@color/red"
app:rb_backgroundColor=
"@color/red"
...
@@ -58,7 +58,7 @@
...
@@ -58,7 +58,7 @@
<ImageView
<ImageView
android:layout_width=
"19dp"
android:layout_width=
"19dp"
android:layout_height=
"2
1
dp"
android:layout_height=
"2
0
dp"
android:layout_alignParentEnd=
"true"
android:layout_alignParentEnd=
"true"
android:layout_centerVertical=
"true"
android:layout_centerVertical=
"true"
android:background=
"@mipmap/message"
/>
android:background=
"@mipmap/message"
/>
...
@@ -90,8 +90,8 @@
...
@@ -90,8 +90,8 @@
android:background=
"@mipmap/circle_in1"
/>
android:background=
"@mipmap/circle_in1"
/>
<com.xuexiang.xui.widget.imageview.RadiusImageView
<com.xuexiang.xui.widget.imageview.RadiusImageView
android:layout_width=
"
20
0dp"
android:layout_width=
"
19
0dp"
android:layout_height=
"
20
0dp"
android:layout_height=
"
19
0dp"
android:layout_centerInParent=
"true"
android:layout_centerInParent=
"true"
android:clickable=
"true"
android:clickable=
"true"
app:riv_border_width=
"1px"
app:riv_border_width=
"1px"
...
@@ -106,18 +106,56 @@
...
@@ -106,18 +106,56 @@
app:cpv_animate_type=
"AccelerateDecelerateInterpolator"
app:cpv_animate_type=
"AccelerateDecelerateInterpolator"
app:cpv_circle_broken=
"false"
app:cpv_circle_broken=
"false"
app:cpv_end_color=
"#8BE7FA"
app:cpv_end_color=
"#8BE7FA"
app:cpv_end_progress=
"
78
"
app:cpv_end_progress=
"
99
"
app:cpv_isFilled=
"false"
app:cpv_isFilled=
"false"
app:cpv_isTracked=
"true"
app:cpv_isTracked=
"true"
app:cpv_progress_duration=
"2000"
app:cpv_progress_duration=
"2000"
app:cpv_progress_textColor=
"#8BE7FA"
app:cpv_progress_textColor=
"#8BE7FA"
app:cpv_progress_textSize=
"50sp"
app:cpv_progress_textSize=
"50sp"
app:cpv_progress_textVisibility=
"
tru
e"
app:cpv_progress_textVisibility=
"
fals
e"
app:cpv_progress_width=
"4dp"
app:cpv_progress_width=
"4dp"
app:cpv_start_color=
"#8BE7FA"
app:cpv_start_color=
"#8BE7FA"
app:cpv_start_progress=
"0"
app:cpv_start_progress=
"0"
app:cpv_track_color=
"#57595B"
app:cpv_track_color=
"#57595B"
app:cpv_track_width=
"4dp"
/>
app:cpv_track_width=
"4dp"
/>
<com.xuexiang.xui.widget.layout.XUILinearLayout
android:id=
"@+id/progress_area"
android:layout_width=
"190dp"
android:layout_height=
"190dp"
android:layout_centerInParent=
"true"
android:background=
"#77000000"
android:gravity=
"center"
android:visibility=
"gone"
android:orientation=
"horizontal"
app:xui_borderColor=
"@color/transparent"
app:xui_outerNormalColor=
"@color/transparent"
app:xui_radius=
"190dp"
app:xui_showBorderOnlyBeforeL=
"false"
>
<LinearLayout
android:orientation=
"horizontal"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
<TextView
android:id=
"@+id/progress"
android:text=
"0"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"#8BE7FA"
android:textSize=
"70sp"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"#8BE7FA"
android:text=
"%"
android:textSize=
"25sp"
/>
</LinearLayout>
</com.xuexiang.xui.widget.layout.XUILinearLayout>
<com.xuexiang.xui.widget.layout.XUILinearLayout
<com.xuexiang.xui.widget.layout.XUILinearLayout
android:id=
"@+id/quick_top_toast"
android:id=
"@+id/quick_top_toast"
android:layout_width=
"320dp"
android:layout_width=
"320dp"
...
...
app/src/main/res/layout/item_dynamic.xml
View file @
09b15c01
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<LinearLayout
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_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"20dp"
android:layout_marginLeft=
"20dp"
android:background=
"@color/white"
android:layout_marginRight=
"20dp"
android:layout_marginRight=
"20dp"
android:background=
"@color/white"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<LinearLayout
<LinearLayout
android:layout_marginTop=
"16.5dp"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:orientation=
"horizontal"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
>
android:layout_marginTop=
"16.5dp"
android:orientation=
"horizontal"
>
<com.xuexiang.xui.widget.layout.XUIFrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
app:xui_radius=
"36dp"
>
<ImageView
android:id=
"@+id/avatar"
android:layout_width=
"36dp"
android:layout_height=
"36dp"
android:layout_gravity=
"center_vertical"
/>
</com.xuexiang.xui.widget.layout.XUIFrameLayout>
<ImageView
android:layout_width=
"36dp"
android:layout_gravity=
"center_vertical"
android:layout_height=
"36dp"
/>
<LinearLayout
<LinearLayout
android:layout_marginLeft=
"10dp"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:orientation=
"vertical"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
>
android:layout_marginLeft=
"10dp"
android:orientation=
"vertical"
>
<TextView
<TextView
android:id=
"@+id/nickname"
android:layout_width=
"70.5dp"
android:layout_width=
"70.5dp"
android:layout_height=
"20dp"
android:layout_height=
"20dp"
android:text=
"DNF小管家"
android:text=
"DNF小管家"
android:textColor=
"#FF000000"
android:textColor=
"#FF000000"
android:textSize=
"14sp"
android:textSize=
"14sp"
/>
/>
<TextView
<TextView
android:id=
"@+id/createdDate"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"2020-12-12"
android:text=
"2020-12-12"
android:textColor=
"#FFB4B4B4"
android:textColor=
"#FFB4B4B4"
android:textSize=
"11sp"
android:textSize=
"11sp"
/>
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<TextView
<TextView
android:
layout_marginTop=
"8dp
"
android:
id=
"@+id/title
"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"8dp"
android:text=
"DNF合金战士怎么还没出?智慧的引导和奥兹玛怎么进?"
android:text=
"DNF合金战士怎么还没出?智慧的引导和奥兹玛怎么进?"
android:textColor=
"#FF000000"
android:textColor=
"#FF000000"
android:textSize=
"14sp"
/>
android:textSize=
"14sp"
/>
<TextView
<TextView
android:visibility=
"gone"
android:id=
"@+id/abbrContent"
android:layout_marginTop=
"6dp"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"6dp"
android:text=
"DNF合金战士怎么还没出?智慧的引导和奥兹玛怎么进?智慧的引导和奥兹玛怎么进?智慧的引导和奥兹玛怎么进…"
android:text=
"DNF合金战士怎么还没出?智慧的引导和奥兹玛怎么进?智慧的引导和奥兹玛怎么进?智慧的引导和奥兹玛怎么进…"
android:textColor=
"#FF4A4A4A"
android:textColor=
"#FF4A4A4A"
android:textSize=
"14sp"
android:textSize=
"14sp"
/>
/>
<ImageView
<ImageView
android:visibility=
"gone"
android:id=
"@+id/imgs"
android:layout_marginTop=
"12.65dp"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"182.5dp"
/>
android:layout_height=
"182.5dp"
<VideoView
android:layout_marginTop=
"12.65dp"
android:layout_marginTop=
"12.65dp"
android:visibility=
"gone"
/>
<VideoView
android:id=
"@+id/video_view"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"182.5dp"
/>
android:layout_height=
"182.5dp"
android:layout_marginTop=
"12.65dp"
/>
<RelativeLayout
<RelativeLayout
android:layout_marginTop=
"11dp"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_marginBottom=
"11dp"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
>
android:layout_marginTop=
"11dp"
android:layout_marginBottom=
"11dp"
>
<TextView
<TextView
android:layout_width=
"57.5dp"
android:layout_width=
"57.5dp"
android:layout_height=
"15dp"
android:layout_height=
"15dp"
android:text=
"1502次浏览"
android:text=
"1502次浏览"
android:textColor=
"#FFB4B4B4"
android:textColor=
"#FFB4B4B4"
android:textSize=
"11sp"
android:textSize=
"11sp"
/>
/>
<TextView
<TextView
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"16"
android:gravity=
"center_vertical"
android:layout_alignParentRight=
"true"
android:layout_alignParentRight=
"true"
android:layout_marginRight=
"18.5dp"
android:layout_marginRight=
"18.5dp"
android:gravity=
"center_vertical"
android:text=
"16"
android:textColor=
"#FFBBBBBB"
android:textColor=
"#FFBBBBBB"
android:textSize=
"14sp"
android:textSize=
"14sp"
/>
/>
<ImageView
<ImageView
android:layout_alignParentRight=
"true"
android:layout_width=
"14dp"
android:layout_width=
"14dp"
android:layout_centerVertical=
"true"
android:layout_height=
"14dp"
android:layout_height=
"14dp"
android:background=
"@mipmap/icon_praise_ga"
android:layout_alignParentRight=
"true"
/>
android:layout_centerVertical=
"true"
android:background=
"@mipmap/icon_praise_ga"
/>
</RelativeLayout>
</RelativeLayout>
...
...
core/src/main/java/com/github/shadowsocks/bg/AuthManager.kt
View file @
09b15c01
...
@@ -41,6 +41,9 @@ object AuthManager {
...
@@ -41,6 +41,9 @@ object AuthManager {
val
okHttpClient
:
OkHttpClient
val
okHttpClient
:
OkHttpClient
val
gson
:
Gson
val
gson
:
Gson
private
const
val
KEY_TOKEN
=
"com.ccwangluo.KEY_TOKEN"
init
{
init
{
okHttpClient
=
OkHttpClient
().
newBuilder
()
okHttpClient
=
OkHttpClient
().
newBuilder
()
.
readTimeout
(
60
,
TimeUnit
.
SECONDS
)
//设置读取超时时间
.
readTimeout
(
60
,
TimeUnit
.
SECONDS
)
//设置读取超时时间
...
@@ -65,56 +68,29 @@ object AuthManager {
...
@@ -65,56 +68,29 @@ object AuthManager {
}
}
var
authToken
:
String
?
var
authToken
:
String
?
get
()
=
MMKV
.
defaultMMKV
().
decodeString
(
"CONFIG_AUTHTOKEN"
,
null
)
get
()
=
MMKV
.
defaultMMKV
().
decodeString
(
KEY_TOKEN
,
null
)
set
(
token
)
{
set
(
token
)
{
MMKV
.
defaultMMKV
().
putString
(
"CONFIG_AUTHTOKEN"
,
token
)
MMKV
.
defaultMMKV
().
putString
(
KEY_TOKEN
,
token
)
}
}
// 加速时长
// 加速时长
var
ACC_TIME
:
Long
var
ACC_TIME
:
Long
get
()
=
MMKV
.
defaultMMKV
().
decodeLong
(
"ACC_TIME"
,
0L
)
get
()
=
MMKV
.
defaultMMKV
().
decodeLong
(
"ACC_TIME"
,
0L
)
set
(
acc_time
)
{
set
(
acc_time
)
{
MMKV
.
defaultMMKV
().
putLong
(
"ACC_TIME"
,
acc_time
)
MMKV
.
defaultMMKV
().
putLong
(
"ACC_TIME"
,
acc_time
)
}
}
fun
initAuthProfile
()
{
suspend
fun
initAuthProfile
()
{
GlobalScope
.
launch
(
Dispatchers
.
Main
)
{
withContext
(
Dispatchers
.
IO
)
{
withContext
(
Dispatchers
.
IO
){
getLineConfig
()
?.
let
{
getLineConfig
()
?.
let
{
if
(
it
.
code
!=
200
)
{
if
(
it
.
code
!=
200
){
return
@withContext
return
@withContext
}
val
profileId
=
1L
val
profile
=
ProfileManager
.
getProfile
(
profileId
)
?:
Profile
()
profile
.
host
=
it
.
data
.
host
profile
.
token
=
it
.
data
.
token
profile
.
remotePort
=
it
.
data
.
port
profile
.
proxyApps
=
true
// val proxyGames = mutableSetOf(
// "com.sec.android.app.sbrowser",
// "com.nexon.maplem.global",
// "jp.co.cygames.umamusume",
// "com.ea.gp.apexlegendsmobilefps",
// "jp.konami.duellinks",
// "com.riotgames.league.wildrift",
// "com.garena.game.codm",
// "com.google.android.configupdater",
// "com.miHoYo.GenshinImpact",
// "com.rekoo.pubgm",
// "com.pubg.krmobile",
// "com.tgc.sky.android",
// "com.YoStarJP.Arknights",
// "com.riotgames.league.wildrifttw"
// )
// proxyGames.addAll(profile.individual.split("\n"))
Timber
.
d
(
"start vpn with games: ${profile.individual}"
)
// profile.individual = proxyGames.joinToString("\n")
profile
.
route
=
Acl
.
BYPASS_LAN
profile
.
password
=
"barfoo!"
profile
.
method
=
"none"
profile
.
beatsInterval
=
60
ProfileManager
.
updateProfile
(
profile
)
}
}
val
profileId
=
1L
val
profile
=
ProfileManager
.
getProfile
(
profileId
)
?:
Profile
()
profile
.
token
=
it
.
data
.
token
Timber
.
d
(
"start vpn with games: ${profile.individual}"
)
ProfileManager
.
updateProfile
(
profile
)
}
}
}
}
}
}
...
...
core/src/main/java/com/github/shadowsocks/bg/BaseService.kt
View file @
09b15c01
...
@@ -348,6 +348,7 @@ object BaseService {
...
@@ -348,6 +348,7 @@ object BaseService {
try
{
try
{
Executable
.
killAll
()
// clean up old processes
Executable
.
killAll
()
// clean up old processes
preInit
()
preInit
()
AuthManager
.
initAuthProfile
()
if
(
profile
.
route
==
Acl
.
CUSTOM_RULES
)
try
{
if
(
profile
.
route
==
Acl
.
CUSTOM_RULES
)
try
{
withContext
(
Dispatchers
.
IO
)
{
withContext
(
Dispatchers
.
IO
)
{
Acl
.
customRules
.
flatten
(
10
,
this
@Interface
::
openConnection
).
also
{
Acl
.
customRules
.
flatten
(
10
,
this
@Interface
::
openConnection
).
also
{
...
...
core/src/main/java/com/github/shadowsocks/bg/VpnService.kt
View file @
09b15c01
...
@@ -140,7 +140,6 @@ class VpnService : BaseVpnService(), BaseService.Interface {
...
@@ -140,7 +140,6 @@ class VpnService : BaseVpnService(), BaseService.Interface {
if
(
prepare
(
this
)
!=
null
)
{
if
(
prepare
(
this
)
!=
null
)
{
startActivity
(
Intent
(
this
,
VpnRequestActivity
::
class
.
java
).
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
))
startActivity
(
Intent
(
this
,
VpnRequestActivity
::
class
.
java
).
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
))
}
else
{
}
else
{
AuthManager
.
initAuthProfile
()
return
super
<
BaseService
.
Interface
>.
onStartCommand
(
intent
,
flags
,
startId
)
return
super
<
BaseService
.
Interface
>.
onStartCommand
(
intent
,
flags
,
startId
)
}
}
}
}
...
...
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