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
d97bb8d1
Commit
d97bb8d1
authored
Jul 08, 2022
by
sheteng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2.0 开发 2
parent
7d81ef35
Changes
37
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
924 additions
and
264 deletions
+924
-264
app/src/main/java/com/ccwangluo/accelerator/manager/DownloadUtils.kt
...n/java/com/ccwangluo/accelerator/manager/DownloadUtils.kt
+1
-3
app/src/main/java/com/ccwangluo/accelerator/manager/GameDownLoadManger.kt
...a/com/ccwangluo/accelerator/manager/GameDownLoadManger.kt
+182
-0
app/src/main/java/com/ccwangluo/accelerator/manager/LoginUtils.kt
...main/java/com/ccwangluo/accelerator/manager/LoginUtils.kt
+7
-2
app/src/main/java/com/ccwangluo/accelerator/manager/PhoneUtils.kt
...main/java/com/ccwangluo/accelerator/manager/PhoneUtils.kt
+2
-1
app/src/main/java/com/ccwangluo/accelerator/model/Game.kt
app/src/main/java/com/ccwangluo/accelerator/model/Game.kt
+23
-5
app/src/main/java/com/ccwangluo/accelerator/ui/BottomNavigationFragment.kt
.../com/ccwangluo/accelerator/ui/BottomNavigationFragment.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/ui/MainActivity.kt
...rc/main/java/com/ccwangluo/accelerator/ui/MainActivity.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/ui/dialog/CommonDialog.kt
.../java/com/ccwangluo/accelerator/ui/dialog/CommonDialog.kt
+2
-0
app/src/main/java/com/ccwangluo/accelerator/ui/dialog/DownloadDialog.kt
...ava/com/ccwangluo/accelerator/ui/dialog/DownloadDialog.kt
+1
-4
app/src/main/java/com/ccwangluo/accelerator/ui/dialog/GameDownloadDialog.kt
...com/ccwangluo/accelerator/ui/dialog/GameDownloadDialog.kt
+78
-0
app/src/main/java/com/ccwangluo/accelerator/ui/gameList/GameListFragment.kt
...com/ccwangluo/accelerator/ui/gameList/GameListFragment.kt
+178
-23
app/src/main/java/com/ccwangluo/accelerator/ui/gameList/GameListModel.kt
...va/com/ccwangluo/accelerator/ui/gameList/GameListModel.kt
+5
-9
app/src/main/java/com/ccwangluo/accelerator/ui/home/AcceleratorFragment.kt
.../com/ccwangluo/accelerator/ui/home/AcceleratorFragment.kt
+47
-50
app/src/main/java/com/ccwangluo/accelerator/ui/home/MineFragment.kt
...in/java/com/ccwangluo/accelerator/ui/home/MineFragment.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsFragment.kt
...in/java/com/ccwangluo/accelerator/ui/home/NewsFragment.kt
+4
-10
app/src/main/java/com/ccwangluo/accelerator/ui/home/NoticeFragment.kt
.../java/com/ccwangluo/accelerator/ui/home/NoticeFragment.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/ui/login/LoginViewModel.kt
...java/com/ccwangluo/accelerator/ui/login/LoginViewModel.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/ui/login/PhoneLoginActivity.kt
.../com/ccwangluo/accelerator/ui/login/PhoneLoginActivity.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/ui/news/NewsObjectFragment.kt
...a/com/ccwangluo/accelerator/ui/news/NewsObjectFragment.kt
+0
-2
app/src/main/java/com/ccwangluo/accelerator/ui/news/NewsObjectModel.kt
...java/com/ccwangluo/accelerator/ui/news/NewsObjectModel.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidActivityInterface.kt
.../ccwangluo/accelerator/ui/web/AndroidActivityInterface.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidInterface.kt
...java/com/ccwangluo/accelerator/ui/web/AndroidInterface.kt
+2
-0
app/src/main/java/com/ccwangluo/accelerator/ui/web/CommonWebViewFragment.kt
...com/ccwangluo/accelerator/ui/web/CommonWebViewFragment.kt
+1
-1
app/src/main/java/com/ccwangluo/accelerator/utils/AcceleratorUtils.kt
.../java/com/ccwangluo/accelerator/utils/AcceleratorUtils.kt
+5
-19
app/src/main/java/com/ccwangluo/accelerator/utils/ByteUtils.kt
...rc/main/java/com/ccwangluo/accelerator/utils/ByteUtils.kt
+14
-0
app/src/main/java/com/ccwangluo/accelerator/utils/SysUtils.kt
...src/main/java/com/ccwangluo/accelerator/utils/SysUtils.kt
+5
-11
app/src/main/java/com/ccwangluo/accelerator/utils/datareport/BaseData.kt
...va/com/ccwangluo/accelerator/utils/datareport/BaseData.kt
+11
-11
app/src/main/java/com/ccwangluo/accelerator/utils/http/HttpGo.kt
.../main/java/com/ccwangluo/accelerator/utils/http/HttpGo.kt
+1
-1
app/src/main/res/layout/dialog_common.xml
app/src/main/res/layout/dialog_common.xml
+1
-0
app/src/main/res/layout/dialog_download.xml
app/src/main/res/layout/dialog_download.xml
+120
-0
app/src/main/res/layout/fragment_game_list.xml
app/src/main/res/layout/fragment_game_list.xml
+22
-18
app/src/main/res/layout/item_game.xml
app/src/main/res/layout/item_game.xml
+200
-82
app/src/main/res/mipmap-xxhdpi/bg_free.png
app/src/main/res/mipmap-xxhdpi/bg_free.png
+0
-0
app/src/main/res/mipmap-xxhdpi/icon_free.png
app/src/main/res/mipmap-xxhdpi/icon_free.png
+0
-0
app/src/main/res/mipmap-xxhdpi/icon_update.png
app/src/main/res/mipmap-xxhdpi/icon_update.png
+0
-0
app/src/main/res/mipmap-xxxhdpi/splash.png
app/src/main/res/mipmap-xxxhdpi/splash.png
+0
-0
core/src/main/java/com/github/shadowsocks/http/HttpConfig.kt
core/src/main/java/com/github/shadowsocks/http/HttpConfig.kt
+4
-4
No files found.
app/src/main/java/com/ccwangluo/accelerator/
utils
/DownloadUtils.kt
→
app/src/main/java/com/ccwangluo/accelerator/
manager
/DownloadUtils.kt
View file @
d97bb8d1
package
com.ccwangluo.accelerator.
utils
package
com.ccwangluo.accelerator.
manager
import
android.Manifest
import
android.app.DownloadManager
...
...
@@ -12,8 +12,6 @@ import androidx.core.content.FileProvider
import
androidx.fragment.app.FragmentActivity
import
com.ccwangluo.accelerator.ui.dialog.DownloadDialog
import
com.hjq.toast.ToastUtils
import
com.xuexiang.xutil.app.AppUtils
import
com.xuexiang.xutil.file.FileUtils
import
com.xuexiang.xutil.system.PermissionUtils
import
java.io.File
...
...
app/src/main/java/com/ccwangluo/accelerator/manager/GameDownLoadManger.kt
0 → 100644
View file @
d97bb8d1
package
com.ccwangluo.accelerator.manager
import
android.Manifest
import
android.app.DownloadManager
import
android.content.Context
import
android.database.Cursor
import
android.net.Uri
import
android.os.Environment
import
android.webkit.MimeTypeMap
import
androidx.lifecycle.lifecycleScope
import
com.ccwangluo.accelerator.model.GameInfo
import
com.hjq.toast.ToastUtils
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xutil.system.PermissionUtils
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
java.io.File
object
GameDownLoadManger
{
private
var
downloadManager
:
DownloadManager
?
=
null
private
var
gameDownloadListener
:
GameDownloadListener
?
=
null
fun
registerLisener
(
gameDownloadListener
:
GameDownloadListener
)
{
this
.
gameDownloadListener
=
gameDownloadListener
}
private
val
downloadMap
=
mutableMapOf
<
Long
,
GameInfo
>()
fun
download
(
activity
:
XPageFragment
,
gameInfo
:
GameInfo
)
{
var
url
=
gameInfo
.
downloadUrl
if
(
url
.
isNullOrBlank
())
{
return
}
if
(!
PermissionUtils
.
isGranted
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
))
{
ToastUtils
.
show
(
"下载需要打开存储权限"
)
PermissionUtils
.
permission
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
.
toString
())
.
rationale
{
PermissionUtils
.
openAppSettings
()
}.
request
()
return
}
var
filename
=
url
.
split
(
"/"
).
last
()
var
file
=
File
(
activity
.
context
?.
getExternalFilesDir
(
Environment
.
DIRECTORY_DOWNLOADS
),
filename
)
// if (file.exists()) {
// activity.context?.let { DownloadUtils.install(file.absolutePath, it) }
// return
// }
downloadManager
=
activity
.
context
?.
getSystemService
(
Context
.
DOWNLOAD_SERVICE
)
as
DownloadManager
val
request
=
DownloadManager
.
Request
(
Uri
.
parse
(
url
))
//添加下载文件的网络路径
request
.
setDestinationInExternalFilesDir
(
activity
.
context
,
Environment
.
DIRECTORY_DOWNLOADS
,
filename
)
val
mimeTypeMap
=
MimeTypeMap
.
getSingleton
()
val
mimeString
=
mimeTypeMap
.
getMimeTypeFromExtension
(
MimeTypeMap
.
getFileExtensionFromUrl
(
url
))
request
.
setMimeType
(
mimeString
)
request
.
setTitle
(
"下载中"
)
//添加在通知栏里显示的标题
// request.setDescription("下载中") //添加在通知栏里显示的描述
request
.
setAllowedNetworkTypes
(
DownloadManager
.
Request
.
NETWORK_MOBILE
or
DownloadManager
.
Request
.
NETWORK_WIFI
)
//设置下载的网络类型
request
.
setVisibleInDownloadsUi
(
false
)
//是否显示下载 从Android Q开始会被忽略
request
.
setNotificationVisibility
(
DownloadManager
.
Request
.
VISIBILITY_VISIBLE_NOTIFY_COMPLETED
)
//下载中与下载完成后都会在通知中显示| 另外可以选 DownloadManager.Request.VISIBILITY_VISIBLE 仅在下载中时显示在通知中,完成后会自动隐藏
var
downloadId
=
downloadManager
!!
.
enqueue
(
request
)
//加入队列,会返回一个唯一下载id
downloadMap
.
put
(
downloadId
,
gameInfo
)
gameDownloadListener
?.
onStart
(
gameInfo
)
show
(
activity
,
downloadId
)
}
fun
show
(
activity
:
XPageFragment
,
downloadId
:
Long
)
{
activity
.
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
var
progress
=
0F
while
(
progress
<
100F
)
{
progress
=
getDownloadProgress
(
downloadId
)
delay
(
2000
)
}
withContext
(
Dispatchers
.
Main
)
{
gameDownloadListener
?.
onFinish
(
downloadMap
.
get
(
downloadId
))
downloadMap
.
remove
(
downloadId
)
}
}
}
fun
containGame
(
gameInfo
:
GameInfo
):
Boolean
{
downloadMap
.
keys
.
forEach
{
val
get
=
downloadMap
.
get
(
it
)
if
(
get
?.
id
==
gameInfo
.
id
)
{
return
true
}
}
return
false
}
fun
cancellDownload
(
gameInfo
:
GameInfo
)
{
try
{
downloadMap
.
keys
.
forEach
{
val
get
=
downloadMap
.
get
(
it
)
if
(
get
?.
id
==
gameInfo
.
id
)
{
downloadManager
?.
remove
(
it
)
gameDownloadListener
?.
onFinish
(
gameInfo
)
downloadMap
.
remove
(
it
)
}
}
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
}
suspend
fun
getDownloadProgress
(
downloadId
:
Long
):
Float
{
val
query
=
DownloadManager
.
Query
().
setFilterById
(
downloadId
)
downloadManager
?.
let
{
val
c
:
Cursor
=
it
.
query
(
query
)
if
(
c
!=
null
)
{
try
{
if
(
c
.
moveToFirst
())
{
var
progress
=
0F
val
mDownload_so_far
=
c
.
getLong
(
c
.
getColumnIndex
(
DownloadManager
.
COLUMN_BYTES_DOWNLOADED_SO_FAR
))
val
status
=
c
.
getInt
(
c
.
getColumnIndex
(
DownloadManager
.
COLUMN_STATUS
))
val
mDownload_all
=
c
.
getLong
(
c
.
getColumnIndex
(
DownloadManager
.
COLUMN_TOTAL_SIZE_BYTES
))
if
(
mDownload_all
!=
0L
)
{
progress
=
(
mDownload_so_far
.
toFloat
()
/
mDownload_all
)
*
100
}
val
downloadInfo
=
DownloadInfo
(
status
,
progress
,
0
,
mDownload_so_far
,
mDownload_all
)
withContext
(
Dispatchers
.
Main
)
{
gameDownloadListener
?.
onProgress
(
downloadMap
.
get
(
downloadId
),
downloadInfo
)
}
return
progress
}
}
catch
(
e
:
Exception
){
println
(
"progress err ${e}"
)
}
finally
{
c
.
close
()
}
}
}
return
0F
}
interface
GameDownloadListener
{
fun
onStart
(
gameInfo
:
GameInfo
?)
fun
onFinish
(
gameInfo
:
GameInfo
?)
fun
onProgress
(
gameInfo
:
GameInfo
?,
downloadInfo
:
DownloadInfo
)
}
data class
DownloadInfo
(
var
status
:
Int
,
var
progress
:
Float
,
var
speed
:
Long
,
var
download_so_far
:
Long
,
var
download_all
:
Long
)
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/
utils
/LoginUtils.kt
→
app/src/main/java/com/ccwangluo/accelerator/
manager
/LoginUtils.kt
View file @
d97bb8d1
package
com.ccwangluo.accelerator.
utils
package
com.ccwangluo.accelerator.
manager
import
android.content.Context
import
android.content.Intent
...
...
@@ -7,6 +7,8 @@ import androidx.lifecycle.lifecycleScope
import
com.ccwangluo.accelerator.model.LoginRes
import
com.ccwangluo.accelerator.model.UserProfile
import
com.ccwangluo.accelerator.ui.login.PhoneLoginActivity
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.TimeUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.ccwangluo.accelerator.utils.http.HttpGo
import
com.chuanglan.shanyan_sdk.OneKeyLoginManager
...
...
@@ -119,7 +121,10 @@ object LoginUtils {
withContext
(
Dispatchers
.
Main
)
{
ToastUtils
.
show
(
"登录成功"
)
OneKeyLoginManager
.
getInstance
().
finishAuthActivity
()
DataRePortUtils
.
report
(
"role_entry"
,
mutableMapOf
(
"login"
to
"login_all"
))
DataRePortUtils
.
report
(
"role_entry"
,
mutableMapOf
(
"login"
to
"login_all"
)
)
callBack
(
true
)
}
}
else
{
...
...
app/src/main/java/com/ccwangluo/accelerator/
utils
/PhoneUtils.kt
→
app/src/main/java/com/ccwangluo/accelerator/
manager
/PhoneUtils.kt
View file @
d97bb8d1
package
com.ccwangluo.accelerator.
utils
package
com.ccwangluo.accelerator.
manager
import
android.app.Application
import
android.content.Context
...
...
@@ -11,6 +11,7 @@ import android.widget.RelativeLayout
import
android.widget.TextView
import
com.ccwangluo.accelerator.R
import
com.ccwangluo.accelerator.ui.login.PhoneLoginActivity
import
com.ccwangluo.accelerator.utils.AbScreenUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.chuanglan.shanyan_sdk.OneKeyLoginManager
...
...
app/src/main/java/com/ccwangluo/accelerator/model/Game.kt
View file @
d97bb8d1
...
...
@@ -2,21 +2,39 @@ package com.ccwangluo.accelerator.model
data class
Game
(
val
list
:
List
<
GameInfo
>?,
val
total
:
Int
?
val
total
:
Int
)
data class
GameInfo
(
val
announcementList
:
List
<
Announcement
>,
val
anotherName
:
String
,
val
boosterPackageName
:
String
,
val
boosterServer
:
String
,
val
createdDate
:
String
,
val
dnsServer
:
String
,
val
downloadUrl
:
String
,
val
gameName
:
String
,
val
greatNum
:
Int
,
val
icon
:
String
,
val
id
:
Int
,
val
boosterServer
:
String
,
val
imgs
:
String
,
val
introduction
:
String
,
val
packageName
:
String
,
val
boosterPackageName
:
String
,
val
proxyRules
:
String
,
val
dnsServer
:
String
,
val
score
:
String
,
val
size
:
String
,
val
type
:
Int
,
val
version
:
String
)
data class
Announcement
(
val
addrType
:
Int
,
val
content
:
String
,
val
createName
:
String
,
val
createdDate
:
String
,
val
gameId
:
Int
,
val
id
:
Int
,
val
status
:
Int
,
val
title
:
String
,
val
url
:
String
)
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/ui/BottomNavigationFragment.kt
View file @
d97bb8d1
...
...
@@ -7,7 +7,7 @@ import com.ccwangluo.accelerator.databinding.FragmentBtnNavBinding
import
com.ccwangluo.accelerator.ui.gameList.GameListFragment
import
com.ccwangluo.accelerator.ui.home.*
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.google.android.material.bottomnavigation.BottomNavigationView
import
com.xuexiang.xpage.annotation.Page
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/MainActivity.kt
View file @
d97bb8d1
...
...
@@ -17,7 +17,7 @@ import com.ccwangluo.accelerator.ui.dialog.PrivacyDialog
import
com.ccwangluo.accelerator.ui.home.AccelertorViewModel
import
com.ccwangluo.accelerator.ui.login.SplashFragment
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.
utils
.PhoneUtils
import
com.ccwangluo.accelerator.
manager
.PhoneUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.ccwangluo.cc_quickly.utils.SettingSPUtils
import
com.github.shadowsocks.http.HttpConfig
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/dialog/CommonDialog.kt
View file @
d97bb8d1
...
...
@@ -2,6 +2,7 @@ package com.ccwangluo.accelerator.ui.dialog
import
android.app.Activity
import
android.content.Context
import
android.view.View
import
android.widget.TextView
import
androidx.fragment.app.Fragment
import
com.ccwangluo.accelerator.R
...
...
@@ -26,6 +27,7 @@ class CommonDialog(
fun
setTitle
(
title
:
String
):
CommonDialog
{
val
tx
=
findViewById
<
TextView
>(
R
.
id
.
title
)
tx
.
setText
(
title
)
tx
.
visibility
=
View
.
VISIBLE
return
this
}
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/dialog/DownloadDialog.kt
View file @
d97bb8d1
...
...
@@ -71,9 +71,6 @@ class DownloadDialog(
c
.
getInt
(
c
.
getColumnIndex
(
DownloadManager
.
COLUMN_BYTES_DOWNLOADED_SO_FAR
))
val
mDownload_all
=
c
.
getInt
(
c
.
getColumnIndex
(
DownloadManager
.
COLUMN_TOTAL_SIZE_BYTES
))
if
(
mDownload_all
==
0
)
{
return
0f
;
}
println
(
"mDownload_so_far = $mDownload_so_far &&& mDownload_all = ${mDownload_all} &&& ${mDownload_so_far * 100 / mDownload_all} "
)
return
(
mDownload_so_far
.
toFloat
()
/
mDownload_all
)
*
100
}
...
...
@@ -83,4 +80,4 @@ class DownloadDialog(
}
return
-
1F
}
}
\ No newline at end of file
}
app/src/main/java/com/ccwangluo/accelerator/ui/dialog/GameDownloadDialog.kt
0 → 100644
View file @
d97bb8d1
package
com.ccwangluo.accelerator.ui.dialog
import
android.content.Context
import
android.widget.ImageView
import
android.widget.TextView
import
com.bumptech.glide.Glide
import
com.ccwangluo.accelerator.R
import
com.ccwangluo.accelerator.manager.GameDownLoadManger
import
com.ccwangluo.accelerator.model.GameInfo
import
com.ccwangluo.accelerator.utils.ByteUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.umeng.socialize.utils.DeviceConfigInternal.context
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xui.widget.dialog.materialdialog.CustomMaterialDialog
import
com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
class
GameDownloadDialog
(
val
gameInfo
:
GameInfo
,
val
fragment
:
XPageFragment
)
:
CustomMaterialDialog
(
fragment
.
context
)
{
override
fun
getDialogBuilder
(
context
:
Context
?):
MaterialDialog
.
Builder
{
return
MaterialDialog
.
Builder
(
context
!!
)
.
customView
(
R
.
layout
.
dialog_download
,
false
);
}
override
fun
initViews
(
context
:
Context
?)
{
}
init
{
val
appImg
=
findViewById
<
ImageView
>(
R
.
id
.
app_img
)
fragment
.
context
?.
let
{
Glide
.
with
(
it
)
.
load
(
gameInfo
.
icon
)
.
into
(
appImg
)
}
val
appName
=
findViewById
<
TextView
>(
R
.
id
.
app_name
)
appName
.
setText
(
gameInfo
.
gameName
)
val
appSize
=
findViewById
<
TextView
>(
R
.
id
.
app_size
)
appSize
.
setText
(
"文件大小:${gameInfo.size}"
)
val
appVersion
=
findViewById
<
TextView
>(
R
.
id
.
app_version
)
appVersion
.
setText
(
"版本号:${gameInfo.id}"
)
val
btnLeft
=
findViewById
<
TextView
>(
R
.
id
.
btn_left
)
btnLeft
.
setOnClickListener
{
dismiss
<
GameDownloadDialog
>()
}
}
fun
download
()
{
val
btnRight
=
findViewById
<
TextView
>(
R
.
id
.
btn_right
)
btnRight
.
setOnClickListener
{
//流量下载提示
if
(
SysUtils
.
isMobileNet
())
{
if
(
context
!=
null
)
{
CommonDialog
(
context
)
.
setContent
(
"您正在使用计量网络下载,"
+
"将产生${gameInfo.size}的流量,是否继续?"
)
.
setBtnLeft
(
"取消"
)
{
}.
setBtnRight
(
"继续"
)
{
GameDownLoadManger
.
download
(
fragment
,
gameInfo
)
}.
show
<
CommonDialog
>()
}
}
else
{
dialog
.
dismiss
()
GameDownLoadManger
.
download
(
fragment
,
gameInfo
)
}
}
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/ui/gameList/GameListFragment.kt
View file @
d97bb8d1
package
com.ccwangluo.accelerator.ui.gameList
import
android.os.Handler
import
android.os.Looper
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.ImageView
import
android.widget.TextView
import
androidx.lifecycle.ViewModelProvider
import
androidx.lifecycle.lifecycleScope
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.databinding.FragmentGameListBinding
import
com.ccwangluo.accelerator.databinding.FragmentNewsBinding
import
com.ccwangluo.accelerator.manager.GameDownLoadManger
import
com.ccwangluo.accelerator.manager.GameDownLoadManger.download
import
com.ccwangluo.accelerator.model.GameInfo
import
com.ccwangluo.accelerator.model.Plugin
import
com.ccwangluo.accelerator.ui.BottomNavigationFragment
import
com.ccwangluo.accelerator.ui.home.NewsFragment
import
com.ccwangluo.accelerator.ui.news.NewsObjectModel
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.utils.ServerUtils
import
com.ccwangluo.accelerator.utils.ShareUtils
import
com.ccwangluo.accelerator.ui.dialog.CommonDialog
import
com.ccwangluo.accelerator.ui.dialog.GameDownloadDialog
import
com.ccwangluo.accelerator.ui.home.AcceleratorFragment
import
com.ccwangluo.accelerator.utils.*
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.github.shadowsocks.Core.activity
import
com.github.shadowsocks.bg.AuthManager.gameId
import
com.github.shadowsocks.bg.BaseService
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xpage.utils.TitleBar
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
com.xuexiang.xui.widget.progress.CircleProgressView
class
GameListFragment
:
XPageFragment
()
{
private
lateinit
var
_binding
:
FragmentGameListBinding
...
...
@@ -36,8 +36,11 @@ class GameListFragment : XPageFragment() {
private
lateinit
var
gameListModel
:
GameListModel
private
var
page
=
1
;
var
dataList
=
arrayListOf
<
GameInfo
>()
private
var
dataList
=
arrayListOf
<
GameInfo
>()
private
val
downloadInfoMap
=
mutableMapOf
<
Int
,
GameDownLoadManger
.
DownloadInfo
>()
var
acctime
=
0L
var
total
=
0
override
fun
initTitleBar
():
TitleBar
?
{
//不使用@Page标注的一定要注意覆盖这个方法
return
null
...
...
@@ -50,34 +53,166 @@ class GameListFragment : XPageFragment() {
}
override
fun
initViews
()
{
gameListModel
.
clearList
.
observe
(
this
)
{
if
(
it
)
{
dataList
.
clear
()
}
}
gameListModel
.
gameModel
.
observe
(
this
)
{
dataList
.
clear
()
dataList
.
addAll
(
it
)
total
=
it
.
total
it
.
list
?.
let
{
it1
->
dataList
.
addAll
(
it1
)
}
_binding
.
refreshGame
.
isRefreshing
=
false
_binding
.
gameList
.
adapter
?.
notifyDataSetChanged
()
}
val
layoutManager
=
LinearLayoutManager
(
context
,
RecyclerView
.
HORIZONT
AL
,
false
)
val
layoutManager
=
LinearLayoutManager
(
context
,
RecyclerView
.
VERTIC
AL
,
false
)
_binding
.
gameList
.
setLayoutManager
(
layoutManager
)
_binding
.
gameList
.
itemAnimator
=
null
_binding
.
gameList
.
adapter
=
KotlinDataAdapter
.
Builder
<
GameInfo
>()
.
setData
(
dataList
)
.
setLayoutId
(
R
.
layout
.
item_game
)
.
addBindView
{
itemView
,
itemData
->
val
game_img
=
itemView
.
findViewById
<
ImageView
>(
R
.
id
.
game_img
)
val
game_server
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
game_server
)
val
game_name
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
game_name
)
// val game_name = itemView.findViewById<TextView>(R.id.game_name)
val
btn_uninstall
=
itemView
.
findViewById
<
View
>(
R
.
id
.
btn_uninstall
)
val
is_free
=
itemView
.
findViewById
<
View
>(
R
.
id
.
is_free
)
val
btn_acc
=
itemView
.
findViewById
<
View
>(
R
.
id
.
btn_acc
)
val
open_acc
=
itemView
.
findViewById
<
View
>(
R
.
id
.
open_acc
)
val
btn_acc_stop
=
itemView
.
findViewById
<
View
>(
R
.
id
.
btn_acc_stop
)
val
tx_game_update_notice
=
itemView
.
findViewById
<
View
>(
R
.
id
.
tx_game_update_notice
)
val
tx_download_status
=
itemView
.
findViewById
<
View
>(
R
.
id
.
tx_download_status
)
val
btn_download_status
=
itemView
.
findViewById
<
View
>(
R
.
id
.
btn_download_status
)
val
progress_download
=
itemView
.
findViewById
<
CircleProgressView
>(
R
.
id
.
progress_download
)
val
tx_download_size
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
tx_download_size
)
val
tx_status
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
tx_status
)
//公告
Glide
.
with
(
this
@GameListFragment
)
.
load
(
itemData
.
icon
)
.
into
(
game_img
)
game_server
.
setText
(
itemData
.
boosterServer
)
game_name
.
setText
(
itemData
.
gameName
)
game_server
.
setOnClickListener
{
activity
?.
let
{
ServerUtils
().
choose
(
it
)
if
(
itemData
.
type
==
1
)
{
is_free
.
visibility
=
View
.
VISIBLE
}
else
{
is_free
.
visibility
=
View
.
GONE
}
context
?.
let
{
//1.应用是否安装//2.应用是否更新 //3.应用是否加速 //4,应用下载
if
(
downloadInfoMap
.
containsKey
(
itemData
.
id
))
{
btn_uninstall
.
visibility
=
View
.
GONE
btn_acc
.
visibility
=
View
.
GONE
btn_acc_stop
.
visibility
=
View
.
GONE
tx_game_update_notice
.
visibility
=
View
.
GONE
tx_download_status
.
visibility
=
View
.
VISIBLE
btn_download_status
.
visibility
=
View
.
VISIBLE
tx_download_size
.
visibility
=
View
.
VISIBLE
val
downloadIndo
=
downloadInfoMap
.
get
(
itemData
.
id
)
downloadIndo
?.
let
{
tx_status
.
setText
(
"${ByteUtils.bytesToDisplay(it.speed / 2)}/s"
)
tx_status
.
visibility
=
View
.
VISIBLE
tx_download_size
.
setText
(
"${ByteUtils.bytesToDisplay(it.download_so_far)}/${
ByteUtils
.
bytesToDisplay
(
it
.
download_all
)
}
"
)
progress_download
.
progress
=
it
.
progress
}
}
else
if
(!
SysUtils
.
isPackageInstall
(
it
,
itemData
.
packageName
))
{
btn_uninstall
.
visibility
=
View
.
VISIBLE
btn_acc
.
visibility
=
View
.
GONE
btn_acc_stop
.
visibility
=
View
.
GONE
tx_game_update_notice
.
visibility
=
View
.
GONE
tx_download_status
.
visibility
=
View
.
GONE
btn_download_status
.
visibility
=
View
.
GONE
}
else
if
(
AcceleratorUtils
.
state
==
BaseService
.
State
.
Connected
&&
AcceleratorUtils
.
game
!!
.
id
==
itemData
.
id
)
{
btn_uninstall
.
visibility
=
View
.
GONE
btn_acc
.
visibility
=
View
.
GONE
btn_acc_stop
.
visibility
=
View
.
VISIBLE
tx_game_update_notice
.
visibility
=
View
.
GONE
tx_download_status
.
visibility
=
View
.
VISIBLE
btn_download_status
.
visibility
=
View
.
GONE
tx_download_size
.
visibility
=
View
.
GONE
tx_status
.
setText
(
SysUtils
.
getAccTimeString
(
acctime
))
}
else
{
btn_uninstall
.
visibility
=
View
.
GONE
btn_acc
.
visibility
=
View
.
VISIBLE
btn_acc_stop
.
visibility
=
View
.
GONE
tx_game_update_notice
.
visibility
=
View
.
GONE
tx_download_status
.
visibility
=
View
.
GONE
btn_download_status
.
visibility
=
View
.
GONE
}
}
btn_uninstall
.
setOnClickListener
{
download
(
itemData
)
}
btn_acc_stop
.
setOnClickListener
{
AcceleratorUtils
.
setGameInfo
(
itemData
)
openPage
(
AcceleratorFragment
::
class
.
java
)
}
btn_acc
.
setOnClickListener
{
AcceleratorUtils
.
setGameInfo
(
itemData
)
openPage
(
AcceleratorFragment
::
class
.
java
)
}
game_name
.
setOnClickListener
{
}
tx_game_update_notice
.
setOnClickListener
{
}
}
.
create
()
gameListModel
.
freshData
(
this
,
page
)
GameDownLoadManger
.
registerLisener
(
object
:
GameDownLoadManger
.
GameDownloadListener
{
override
fun
onStart
(
gameInfo
:
GameInfo
?)
{
println
(
"onStart$gameInfo"
)
}
override
fun
onFinish
(
gameInfo
:
GameInfo
?)
{
println
(
"onFinish$gameInfo"
)
if
(
gameInfo
!=
null
)
{
downloadInfoMap
.
remove
(
gameInfo
.
id
)
_binding
.
gameList
.
adapter
?.
notifyItemChanged
(
dataList
.
indexOf
(
gameInfo
)
)
}
}
override
fun
onProgress
(
gameInfo
:
GameInfo
?,
downloadInfo
:
GameDownLoadManger
.
DownloadInfo
)
{
if
(
gameInfo
!=
null
)
{
val
lastInfo
=
downloadInfoMap
.
get
(
gameInfo
.
id
)
downloadInfo
.
speed
=
downloadInfo
.
download_so_far
-
if
(
lastInfo
==
null
)
0
else
lastInfo
.
download_so_far
downloadInfoMap
.
put
(
gameInfo
.
id
,
downloadInfo
)
_binding
.
gameList
.
adapter
?.
notifyItemChanged
(
dataList
.
indexOf
(
gameInfo
)
)
}
}
})
registerListener
()
}
override
fun
initListeners
()
{
...
...
@@ -85,6 +220,26 @@ class GameListFragment : XPageFragment() {
DataRePortUtils
.
report
(
"st_share_clk"
,
mapOf
(
"scene"
to
"3"
))
activity
?.
let
{
it1
->
ShareUtils
().
share
(
it1
)
}
}
_binding
.
refreshGame
.
setOnRefreshListener
{
page
=
1
gameListModel
.
freshData
(
this
,
page
)
//
}
_binding
.
gameList
.
addOnScrollListener
(
object
:
RecyclerView
.
OnScrollListener
()
{
override
fun
onScrollStateChanged
(
recyclerView
:
RecyclerView
,
newState
:
Int
)
{
super
.
onScrollStateChanged
(
recyclerView
,
newState
)
}
override
fun
onScrolled
(
recyclerView
:
RecyclerView
,
dx
:
Int
,
dy
:
Int
)
{
super
.
onScrolled
(
recyclerView
,
dx
,
dy
)
if
(
isSlideToBottom
(
recyclerView
))
{
if
(
dataList
.
size
<
total
)
{
page
++
gameListModel
.
freshData
(
this
@GameListFragment
,
page
)
}
}
}
})
}
companion
object
{
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/gameList/GameListModel.kt
View file @
d97bb8d1
...
...
@@ -3,29 +3,25 @@ package com.ccwangluo.accelerator.ui.gameList
import
androidx.lifecycle.MutableLiveData
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.viewModelScope
import
com.ccwangluo.accelerator.model.Game
import
com.ccwangluo.accelerator.model.GameInfo
import
com.ccwangluo.accelerator.model.NewsModel
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.utils.LoginUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.http.HttpGo
import
com.github.shadowsocks.bg.AuthManager
import
com.xuexiang.xpage.base.XPageFragment
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
class
GameListModel
:
ViewModel
()
{
val
gameModel
=
MutableLiveData
<
List
<
GameInfo
>>()
val
gameModel
=
MutableLiveData
<
Game
>()
val
clearList
=
MutableLiveData
<
Boolean
>()
fun
freshData
(
xPageFragment
:
XPageFragment
,
page
:
Int
)
{
xPageFragment
.
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
val
res
=
HttpGo
.
getSync
<
Game
>(
"/api/new/game/list?
id=1&page=${page}&size=10
"
)
val
res
=
HttpGo
.
getSync
<
Game
>(
"/api/new/game/list?
page=${page}&size=10&channelId=${SysUtils.getChannel()}
"
)
res
?.
let
{
it
.
data
?.
list
?.
let
{
it
.
data
?.
let
{
clearList
.
postValue
(
page
==
1
)
gameModel
.
postValue
(
it
)
}
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/home/AcceleratorFragment.kt
View file @
d97bb8d1
...
...
@@ -17,8 +17,8 @@ import com.ccwangluo.accelerator.ui.dialog.CommonDialog
import
com.ccwangluo.accelerator.ui.dialog.MemberDialog
import
com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.utils.
ShareUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.
AcceleratorUtils.state
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.ccwangluo.cc_quickly.utils.SettingSPUtils
...
...
@@ -26,12 +26,15 @@ import com.github.shadowsocks.bg.AuthManager
import
com.github.shadowsocks.bg.BaseService
import
com.github.shadowsocks.http.HttpConfig
import
com.hjq.toast.ToastUtils
import
com.umeng.socialize.utils.DeviceConfigInternal.context
import
com.xuexiang.xpage.annotation.Page
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xpage.core.PageOption
import
com.xuexiang.xpage.utils.TitleBar
import
com.xuexiang.xui.widget.progress.CircleProgressView
import
com.xuexiang.xutil.app.AppUtils
@Page
(
name
=
"accelera"
)
class
AcceleratorFragment
:
XPageFragment
()
{
private
lateinit
var
binding
:
FragmentQuickBinding
private
lateinit
var
acceleratorViewModel
:
AccelertorViewModel
...
...
@@ -110,7 +113,7 @@ class AcceleratorFragment : XPageFragment() {
})
acceleratorViewModel
.
accState
.
observe
(
this
)
{
binding
.
accStateTx
.
setText
(
SysUtils
.
getAccTimeString
(
accTimer
)
)
binding
.
accStateTx
.
setText
(
"加速中 ${SysUtils.getAccTimeString(accTimer)}"
)
state
=
it
freshData
(
it
)
if
(
AuthManager
.
isSmartAccOpen
)
{
...
...
@@ -154,7 +157,7 @@ class AcceleratorFragment : XPageFragment() {
(
binding
.
gamePicOut
.
background
as
AnimationDrawable
).
start
()
binding
.
gamePicOut
.
startAnimation
(
getDefaultAnim
())
}
binding
.
radiusTv
.
visibility
=
if
(
SysUtils
.
getChannel
()
==
3
)
View
.
GONE
else
View
.
VISIBLE
binding
.
radiusTv
.
visibility
=
if
(
SysUtils
.
getChannel
()
==
3
)
View
.
GONE
else
View
.
VISIBLE
}
override
fun
initListeners
()
{
...
...
@@ -245,43 +248,35 @@ class AcceleratorFragment : XPageFragment() {
DataRePortUtils
.
report
(
"st_speed_result"
,
mapOf
(
"result"
to
0
,
"cause"
to
"3"
))
return
@setOnClickListener
}
AcceleratorUtils
.
getGameList
(
this
)
{
//
AcceleratorUtils
.
game
?.
let
{
if
(!
SysUtils
.
isPackageInstall
(
requireContext
(),
it
.
packageName
))
{
binding
.
quickTopToast
.
visibility
=
View
.
VISIBLE
binding
.
quickTopToastTx
.
setText
(
"请先安装游戏后加速"
)
binding
.
quickTopToastTx
.
postDelayed
({
binding
.
quickTopToast
.
visibility
=
View
.
GONE
},
2000
)
DataRePortUtils
.
report
(
"st_speed_result"
,
mapOf
(
"result"
to
0
,
"cause"
to
"1"
)
)
return
@setOnClickListener
}
}
//用户是否有使用时长
LoginUtils
.
getUserHasTimer
(
this
@AcceleratorFragment
)
{
if
(
it
)
{
//
AcceleratorUtils
.
game
?.
let
{
if
(!
SysUtils
.
isPackageInstall
(
requireContext
(),
it
.
packageName
))
{
binding
.
quickTopToast
.
visibility
=
View
.
VISIBLE
binding
.
quickTopToastTx
.
setText
(
"请先安装游戏后加速"
)
binding
.
quickTopToastTx
.
postDelayed
({
binding
.
quickTopToast
.
visibility
=
View
.
GONE
},
2000
)
DataRePortUtils
.
report
(
"st_speed_result"
,
mapOf
(
"result"
to
0
,
"cause"
to
"1"
)
)
return
@getGameList
}
}
//用户是否有使用时长
LoginUtils
.
getUserHasTimer
(
this
@AcceleratorFragment
)
{
if
(
it
)
{
binding
.
btnQuick
.
isEnabled
=
false
startAnim
()
}
else
{
DataRePortUtils
.
report
(
"st_speed_result"
,
mapOf
(
"result"
to
0
,
"cause"
to
3
)
)
MemberDialog
(
this
@AcceleratorFragment
).
show
<
MemberDialog
>()
}
}
binding
.
btnQuick
.
isEnabled
=
false
startAnim
()
}
else
{
DataRePortUtils
.
report
(
"st_speed_result"
,
mapOf
(
"result"
to
0
,
"cause"
to
"3"
))
ToastUtils
.
show
(
"获取游戏配置异常"
)
DataRePortUtils
.
report
(
"st_speed_result"
,
mapOf
(
"result"
to
0
,
"cause"
to
3
)
)
MemberDialog
(
this
@AcceleratorFragment
).
show
<
MemberDialog
>()
}
}
}
binding
.
gameStart
.
setOnClickListener
{
...
...
@@ -301,8 +296,13 @@ class AcceleratorFragment : XPageFragment() {
}
}
}
AcceleratorUtils
.
registerStateListener
{
state
,
l
,
net
->
net
?.
let
{
acceleratorViewModel
.
netState
.
postValue
(
net
)
}
accTimer
=
l
acceleratorViewModel
.
accState
.
postValue
(
state
)
}
}
fun
openToWebview
(
url
:
String
)
{
...
...
@@ -312,11 +312,11 @@ class AcceleratorFragment : XPageFragment() {
openPage
(
CommonWebViewFragment
::
class
.
java
,
params
)
}
?:
let
{
context
?.
let
{
it1
->
LoginUtils
.
login
(
it1
,
{
if
(
true
)
{
LoginUtils
.
login
(
it1
)
{
if
(
it
)
{
openPage
(
CommonWebViewFragment
::
class
.
java
,
params
)
}
}
)
}
}
}
}
...
...
@@ -405,20 +405,16 @@ class AcceleratorFragment : XPageFragment() {
AcceleratorUtils
.
unRegisterVipExpireListener
()
}
override
fun
onHiddenChanged
(
hidden
:
Boolean
)
{
super
.
onHiddenChanged
(
hidden
)
}
override
fun
onStart
()
{
super
.
onStart
()
AcceleratorUtils
.
registerStateListener
{
state
,
l
,
net
->
net
?.
let
{
acceleratorViewModel
.
netState
.
postValue
(
net
)
}
accTimer
=
l
acceleratorViewModel
.
accState
.
postValue
(
state
)
}
}
override
fun
onStop
()
{
super
.
onStop
()
AcceleratorUtils
.
unRegisterStateListener
()
}
override
fun
onResume
()
{
...
...
@@ -467,6 +463,7 @@ class AcceleratorFragment : XPageFragment() {
override
fun
setUserVisibleHint
(
isVisibleToUser
:
Boolean
)
{
super
.
setUserVisibleHint
(
isVisibleToUser
)
println
(
"acc setUserVisibleHint"
)
if
(
isVisibleToUser
)
{
getUserProfile
()
}
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/home/MineFragment.kt
View file @
d97bb8d1
...
...
@@ -8,7 +8,7 @@ import android.widget.FrameLayout
import
androidx.fragment.app.Fragment
import
com.ccwangluo.accelerator.databinding.FragmentMineBinding
import
com.ccwangluo.accelerator.ui.web.AndroidInterface
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.github.shadowsocks.http.HttpConfig
import
com.just.agentweb.core.AgentWeb
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsFragment.kt
View file @
d97bb8d1
...
...
@@ -21,8 +21,7 @@ import com.ccwangluo.accelerator.model.Plugin
import
com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter
import
com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.utils.DownloadUtils
import
com.ccwangluo.accelerator.utils.LoginUtils
import
com.ccwangluo.accelerator.manager.DownloadUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.github.shadowsocks.http.HttpConfig
...
...
@@ -176,15 +175,10 @@ class NewsFragment : XPageFragment() {
})
AcceleratorUtils
.
getGameList
(
this
)
{
if
(
it
)
{
AcceleratorUtils
.
game
?.
let
{
newsViewModel
.
getNotice
(
it
.
id
)
newsViewModel
.
getPlugin
(
it
.
id
)
}
}
AcceleratorUtils
.
game
?.
let
{
newsViewModel
.
getNotice
(
it
.
id
)
newsViewModel
.
getPlugin
(
it
.
id
)
}
}
override
fun
setUserVisibleHint
(
isVisibleToUser
:
Boolean
)
{
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/home/NoticeFragment.kt
View file @
d97bb8d1
...
...
@@ -8,7 +8,7 @@ import android.widget.FrameLayout
import
androidx.fragment.app.Fragment
import
com.ccwangluo.accelerator.databinding.FragmentMineBinding
import
com.ccwangluo.accelerator.ui.web.AndroidInterface
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.github.shadowsocks.http.HttpConfig
import
com.just.agentweb.core.AgentWeb
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/login/LoginViewModel.kt
View file @
d97bb8d1
...
...
@@ -4,7 +4,7 @@ import androidx.lifecycle.MutableLiveData
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
com.ccwangluo.accelerator.model.LoginRes
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.ccwangluo.accelerator.utils.http.HttpGo
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/login/PhoneLoginActivity.kt
View file @
d97bb8d1
...
...
@@ -8,7 +8,7 @@ import androidx.lifecycle.ViewModelProvider
import
com.ccwangluo.accelerator.databinding.FragmentLoginPhoneBinding
import
com.ccwangluo.accelerator.ui.web.BlankActivity
import
com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.github.shadowsocks.http.HttpConfig
import
com.hjq.toast.ToastUtils
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/news/NewsObjectFragment.kt
View file @
d97bb8d1
...
...
@@ -2,7 +2,6 @@ package com.ccwangluo.accelerator.ui.news
import
android.content.Intent
import
android.graphics.Color
import
android.os.Bundle
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
...
...
@@ -26,7 +25,6 @@ import com.ccwangluo.accelerator.model.NewsModel
import
com.ccwangluo.accelerator.ui.view.RatingBar
import
com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import
com.ccwangluo.accelerator.utils.HtmlUtil
import
com.ccwangluo.accelerator.utils.LoginUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.github.shadowsocks.http.HttpConfig
import
com.hjq.toast.ToastUtils
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/news/NewsObjectModel.kt
View file @
d97bb8d1
...
...
@@ -4,7 +4,7 @@ import androidx.lifecycle.MutableLiveData
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
com.ccwangluo.accelerator.model.NewsModel
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.http.HttpGo
import
com.xuexiang.xpage.base.XPageFragment
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidActivityInterface.kt
View file @
d97bb8d1
package
com.ccwangluo.accelerator.ui.web
import
android.webkit.JavascriptInterface
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.github.shadowsocks.http.HttpConfig
import
com.ccwangluo.cc_quickly.utils.XToastUtils
import
com.just.agentweb.core.AgentWeb
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidInterface.kt
View file @
d97bb8d1
...
...
@@ -12,6 +12,8 @@ import android.content.Intent
import
android.net.Uri
import
android.os.Handler
import
android.provider.Settings
import
com.ccwangluo.accelerator.manager.DownloadUtils
import
com.ccwangluo.accelerator.manager.LoginUtils
import
com.ccwangluo.accelerator.utils.*
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.github.shadowsocks.bg.AuthManager
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/web/CommonWebViewFragment.kt
View file @
d97bb8d1
...
...
@@ -14,7 +14,7 @@ import android.widget.FrameLayout
import
androidx.fragment.app.Fragment
import
com.ccwangluo.accelerator.databinding.FragmentWebviewBinding
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.github.shadowsocks.http.HttpConfig
import
com.just.agentweb.core.AgentWeb
...
...
app/src/main/java/com/ccwangluo/accelerator/utils/AcceleratorUtils.kt
View file @
d97bb8d1
...
...
@@ -8,6 +8,7 @@ import android.os.RemoteException
import
androidx.activity.result.ActivityResultLauncher
import
androidx.lifecycle.lifecycleScope
import
com.ccnet.acc.NetworkAdapter
import
com.ccwangluo.accelerator.manager.LoginUtils
import
com.ccwangluo.accelerator.model.Game
import
com.ccwangluo.accelerator.model.GameInfo
import
com.ccwangluo.accelerator.model.NetState
...
...
@@ -72,24 +73,9 @@ object AcceleratorUtils : TencentLocationListener {
var
netState
=
NetState
(-
1
,
-
1
,
"100"
)
fun
getGameList
(
xPageFragment
:
XPageFragment
,
callback
:
(
Boolean
)
->
Unit
)
{
game
?.
let
{
callback
(
true
)
}
?:
let
{
xPageFragment
.
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
val
res
=
HttpGo
.
getSync
<
Game
>(
"/api/new/game/list?id=1&page=1&size=1"
)
res
?.
let
{
game
=
it
.
data
?.
list
?.
get
(
0
)
withContext
(
Dispatchers
.
Main
)
{
callback
(
true
)
}
game
?.
let
{
gameInfo
->
AuthManager
.
gameId
=
gameInfo
.
id
.
toString
()
}
}
}
}
fun
setGameInfo
(
gameInfo
:
GameInfo
)
{
AuthManager
.
gameId
=
gameInfo
.
id
.
toString
()
this
.
game
=
gameInfo
}
fun
initContext
(
context
:
XPageActivity
,
connect
:
ActivityResultLauncher
<
Void
?
>)
{
...
...
@@ -163,7 +149,7 @@ object AcceleratorUtils : TencentLocationListener {
fun
openLocation
(
context
:
Context
)
{
PermissionUtils
.
permission
(
Manifest
.
permission
.
ACCESS_FINE_LOCATION
Manifest
.
permission
.
ACCESS_FINE_LOCATION
.
toString
()
).
rationale
({
}).
callback
(
object
:
PermissionUtils
.
FullCallback
{
override
fun
onGranted
(
permissionsGranted
:
MutableList
<
String
>?)
{
...
...
app/src/main/java/com/ccwangluo/accelerator/utils/ByteUtils.kt
0 → 100644
View file @
d97bb8d1
package
com.ccwangluo.accelerator.utils
object
ByteUtils
{
fun
bytesToDisplay
(
bytes
:
Long
)
=
when
{
bytes
==
Long
.
MIN_VALUE
||
bytes
<
0
->
"0"
bytes
<
1024L
->
"$bytes B"
bytes
<=
0xfffccccccccccccL
shr
40
->
"%.1f KB"
.
format
(
bytes
.
toDouble
()
/
(
0x1
shl
10
))
bytes
<=
0xfffccccccccccccL
shr
30
->
"%.1f MB"
.
format
(
bytes
.
toDouble
()
/
(
0x1
shl
20
))
bytes
<=
0xfffccccccccccccL
shr
20
->
"%.1f GB"
.
format
(
bytes
.
toDouble
()
/
(
0x1
shl
30
))
bytes
<=
0xfffccccccccccccL
shr
10
->
"%.1f TB"
.
format
(
bytes
.
toDouble
()
/
(
0x1
shl
40
))
bytes
<=
0xfffccccccccccccL
->
"%.1f PiB"
.
format
((
bytes
shr
10
).
toDouble
()
/
(
0x1
shl
40
))
else
->
"%.1f EiB"
.
format
((
bytes
shr
20
).
toDouble
()
/
(
0x1
shl
40
))
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/utils/SysUtils.kt
View file @
d97bb8d1
package
com.ccwangluo.accelerator.utils
import
android.Manifest
import
android.app.DownloadManager
import
android.content.Context
import
android.content.Context.DOWNLOAD_SERVICE
import
android.content.Intent
import
android.net.ConnectivityManager
import
android.net.NetworkCapabilities
import
android.net.Uri
import
android.os.Build
import
android.os.Environment
import
android.text.TextUtils
import
android.util.DisplayMetrics
import
androidx.core.content.FileProvider
import
androidx.fragment.app.FragmentActivity
import
com.ccwangluo.accelerator.ui.dialog.DownloadDialog
import
com.ccwangluo.cc_quickly.utils.SettingSPUtils
import
com.hjq.toast.ToastUtils
import
com.mcxiaoke.packer.helper.PackerNg
import
com.tencent.mmkv.MMKV
import
com.xuexiang.xpage.base.XPageActivity
import
com.xuexiang.xpage.base.XPageFragment
import
com.xuexiang.xutil.app.AppUtils
import
com.xuexiang.xutil.net.NetworkUtils
import
com.xuexiang.xutil.system.DeviceUtils
import
com.xuexiang.xutil.system.PermissionUtils
import
java.io.File
import
java.text.SimpleDateFormat
import
java.util.*
...
...
@@ -49,6 +39,10 @@ object SysUtils {
}
}
fun
isMobileNet
():
Boolean
{
return
NetworkUtils
.
isMobile
()
}
/*
* 判断设备 是否使用代理上网
...
...
@@ -86,7 +80,7 @@ object SysUtils {
}
fun
getAccTimeString
(
time
:
Long
):
String
{
return
"
加速中
${tranlateTime(time)} "
return
"${tranlateTime(time)} "
}
fun
tranlateTime
(
long
:
Long
):
String
{
...
...
app/src/main/java/com/ccwangluo/accelerator/utils/datareport/BaseData.kt
View file @
d97bb8d1
package
com.ccwangluo.accelerator.utils.datareport
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.google.gson.JsonObject
import
java.time.LocalDateTime
data class
BaseData
(
var
channel
:
Int
=
SysUtils
.
getChannel
(),
var
client_ip
:
String
=
"127.0.0.1"
,
var
did
:
String
?
=
SysUtils
.
getDeviceUUID
(),
var
ds
:
String
=
LocalDateTime
.
now
().
toString
(),
var
event
:
String
=
""
,
var
ouid
:
String
=
if
(
LoginUtils
.
uid
==
null
)
""
else
LoginUtils
.
uid
!!
,
var
platform
:
Int
=
1
,
var
role_id
:
String
=
"0"
,
var
server
:
Int
=
0
,
var
data
:
JsonObject
?
=
null
var
channel
:
Int
=
SysUtils
.
getChannel
(),
var
client_ip
:
String
=
"127.0.0.1"
,
var
did
:
String
?
=
SysUtils
.
getDeviceUUID
(),
var
ds
:
String
=
LocalDateTime
.
now
().
toString
(),
var
event
:
String
=
""
,
var
ouid
:
String
=
if
(
LoginUtils
.
uid
==
null
)
""
else
LoginUtils
.
uid
!!
,
var
platform
:
Int
=
1
,
var
role_id
:
String
=
"0"
,
var
server
:
Int
=
0
,
var
data
:
JsonObject
?
=
null
)
app/src/main/java/com/ccwangluo/accelerator/utils/http/HttpGo.kt
View file @
d97bb8d1
package
com.ccwangluo.accelerator.utils.http
import
com.ccwangluo.accelerator.model.BaseModel
import
com.ccwangluo.accelerator.
utils
.LoginUtils
import
com.ccwangluo.accelerator.
manager
.LoginUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.datareport.BaseData
import
com.github.shadowsocks.http.HttpConfig
...
...
app/src/main/res/layout/dialog_common.xml
View file @
d97bb8d1
...
...
@@ -12,6 +12,7 @@
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"22dp"
android:textColor=
"#FF000000"
android:visibility=
"gone"
android:textSize=
"16sp"
/>
<TextView
...
...
app/src/main/res/layout/dialog_download.xml
0 → 100644
View file @
d97bb8d1
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:orientation=
"vertical"
android:background=
"@color/white"
android:layout_height=
"match_parent"
>
<TextView
android:id=
"@+id/title"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"22dp"
android:textColor=
"#FF000000"
android:text=
"来自第三方下载"
android:textSize=
"16sp"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_marginTop=
"19dp"
android:layout_marginLeft=
"30.5dp"
android:layout_marginRight=
"30.5dp"
android:layout_marginBottom=
"21dp"
android:layout_height=
"wrap_content"
>
<ImageView
android:id=
"@+id/app_img"
android:layout_width=
"45dp"
android:layout_height=
"45dp"
android:layout_gravity=
"center_vertical"
android:background=
"#FFD8D8D8"
/>
<LinearLayout
android:layout_marginLeft=
"15dp"
android:layout_width=
"match_parent"
android:orientation=
"vertical"
android:layout_height=
"wrap_content"
>
<TextView
android:id=
"@+id/app_name"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"xxxx"
android:textColor=
"#FF000000"
android:textSize=
"15sp"
/>
<TextView
android:id=
"@+id/app_size"
android:layout_marginTop=
"1.5dp"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"文件大小:"
android:textColor=
"#FF4A4A4A"
android:textSize=
"12sp"
/>
<TextView
android:id=
"@+id/app_version"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"版本号:"
android:textColor=
"#FF4A4A4A"
android:textSize=
"12sp"
/>
</LinearLayout>
</LinearLayout>
<TextView
android:layout_marginLeft=
"30.5dp"
android:layout_marginRight=
"30.5dp"
android:layout_marginBottom=
"21dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"下载资源来自第三方提供。若该资源侵犯了您的合法权益或违反相关法规,请通过意见反馈投诉,我们会尽快与您联系并处理该问题。"
android:textColor=
"#FF4A4A4A"
android:textSize=
"15sp"
/>
<View
android:layout_width=
"match_parent"
android:layout_gravity=
"center"
android:layout_marginTop=
"10dp"
android:layout_height=
"0.5dp"
android:background=
"#FFF0F0F0"
/>
<LinearLayout
android:layout_marginTop=
"4.5dp"
android:layout_width=
"match_parent"
android:layout_height=
"53dp"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/btn_left"
android:gravity=
"center"
android:layout_weight=
"1"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:text=
"取消"
android:textColor=
"#FFA8A8A8"
android:textSize=
"15sp"
/>
<View
android:layout_width=
"0.5dp"
android:layout_height=
"match_parent"
android:background=
"#FFF0F0F0"
/>
<TextView
android:text=
"下载"
android:id=
"@+id/btn_right"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:gravity=
"center"
android:textColor=
"#FF3CA4FD"
android:textSize=
"15sp"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_game_list.xml
View file @
d97bb8d1
<?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"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/colorPrimaryDark"
android:orientation=
"vertical"
android:layout_height=
"match_parent"
>
android:orientation=
"vertical"
>
<LinearLayout
android:orientation=
"horizontal"
android:layout_width=
"match_parent"
android:layout_height=
"70dp"
android:background=
"#31354B"
>
android:orientation=
"horizontal"
>
<TextView
android:layout_weight=
"1"
android:layout_marginTop=
"32.5dp"
android:layout_marginLeft=
"15.5dp"
android:layout_width=
"36dp"
android:layout_height=
"25dp"
android:layout_marginLeft=
"15.5dp"
android:layout_marginTop=
"32.5dp"
android:layout_weight=
"1"
android:text=
"加速"
android:textColor=
"#FFFFFFFF"
android:textSize=
"18sp"
/>
android:textSize=
"18sp"
/>
<View
android:id=
"@+id/acc_share"
android:layout_marginTop=
"37.5dp"
android:layout_marginRight=
"16.5dp"
android:layout_width=
"18dp"
android:layout_height=
"18dp"
android:background=
"@mipmap/share"
/>
android:layout_marginTop=
"37.5dp"
android:layout_marginRight=
"16.5dp"
android:background=
"@mipmap/share"
/>
</LinearLayout>
<androidx.
recyclerview.widget.RecyclerView
android:id=
"@+id/
game_list
"
<androidx.
swiperefreshlayout.widget.SwipeRefreshLayout
android:id=
"@+id/
refresh_game
"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/game_list"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/item_game.xml
View file @
d97bb8d1
<?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:background=
"@color/white"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:orientation=
"vertical"
>
<LinearLayout
android:id=
"@+id/open_acc"
android:layout_width=
"match_parent"
android:
orientation=
"horizontal
"
android:
layout_height=
"wrap_content
"
>
<ImageView
android:id=
"@+id/game_img"
android:
layout_height=
"wrap_content
"
android:
orientation=
"horizontal
"
>
<RelativeLayout
android:layout_width=
"52.5dp"
android:layout_height=
"52.5dp"
android:layout_marginLeft=
"22.5dp"
android:layout_marginTop=
"11dp"
android:background=
"@mipmap/game_download"
/>
android:layout_marginTop=
"11dp"
>
<com.xuexiang.xui.widget.imageview.RadiusImageView
android:id=
"@+id/game_img"
android:layout_width=
"52.5dp"
android:layout_height=
"52.5dp"
android:background=
"@mipmap/game_download"
app:riv_corner_radius=
"12dp"
/>
<ImageView
android:background=
"@mipmap/bg_free"
android:id=
"@+id/is_free"
android:layout_alignParentRight=
"true"
android:layout_width=
"52.5dp"
android:layout_height=
"52.5dp"
/>
</RelativeLayout>
<LinearLayout
android:layout_marginLeft=
"11.5dp"
android:layout_width=
"match_parent"
android:layout_weight=
"1"
android:orientation=
"vertical"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_height=
"wrap_content"
>
android:layout_marginLeft=
"11.5dp"
android:layout_weight=
"1"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:orientation=
"horizontal"
android:layout_height=
"wrap_content"
>
<TextView
android:background=
"@drawable/acc_text_bg_blue"
android:padding=
"2dp"
android:maxLength=
"4"
android:id=
"@+id/game_server"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"全球"
android:textColor=
"#FF36B8F4"
android:textSize=
"11sp"
android:layout_marginRight=
"13dp"
/>
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/game_name"
android:layout_width=
"match_parent"
android:maxLines=
"1"
android:layout_height=
"wrap_content"
android:textColor=
"#FF333333"
android:textSize=
"14.5sp"
/>
android:textSize=
"14.5sp"
/>
</LinearLayout>
<TextView
android:id=
"@+id/game_update_notice"
android:layout_marginTop=
"4dp"
android:layout_width=
"84dp"
android:layout_height=
"14.5dp"
android:text=
"新版本,点击更新"
android:textColor=
"#FFFBB06B"
android:textSize=
"10.5sp"
/>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"4dp"
>
<LinearLayout
android:id=
"@+id/tx_game_update_notice"
android:layout_width=
"wrap_content"
android:orientation=
"horizontal"
android:layout_height=
"wrap_content"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"14.5dp"
android:text=
"新版本,点击更新"
android:textColor=
"#FFFBB06B"
android:textSize=
"10.5sp"
/>
<ImageView
android:layout_width=
"11dp"
android:layout_height=
"10.5dp"
android:layout_marginLeft=
"6.5dp"
android:background=
"@mipmap/icon_update"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/tx_download_status"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/tx_download_size"
android:layout_width=
"wrap_content"
android:layout_height=
"14.5dp"
android:layout_marginRight=
"5dp"
android:text=
"13.9MB/84.1MB "
android:textColor=
"#FFA9A9AE"
android:textSize=
"11sp"
/>
<TextView
android:id=
"@+id/tx_status"
android:layout_width=
"wrap_content"
android:layout_height=
"14.5dp"
android:text=
"6.5mb/s"
android:textColor=
"#FF36B8F4"
android:textSize=
"11sp"
/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_marginRight=
"21dp"
android:layout_width=
"65dp"
android:layout_height=
"30dp"
android:background=
"@mipmap/btn_bg"
android:gravity=
"center"
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"25dp"
android:layout_height=
"18dp"
android:text=
"加速"
android:textColor=
"#FFFFFFFF"
android:textSize=
"12.5sp"
/>
android:gravity=
"center"
>
</LinearLayout>
<LinearLayout
android:id=
"@+id/btn_uninstall"
android:layout_width=
"65dp"
android:layout_height=
"30dp"
android:layout_marginRight=
"21dp"
android:background=
"@drawable/acc_text_bg_blue"
android:gravity=
"center"
android:orientation=
"horizontal"
android:visibility=
"gone"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"18dp"
android:text=
"未安装"
android:textColor=
"#FF36B8F4"
android:textSize=
"12.5sp"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/btn_acc"
android:layout_width=
"65dp"
android:layout_height=
"30dp"
android:layout_marginRight=
"21dp"
android:background=
"@mipmap/btn_bg"
android:gravity=
"center"
android:orientation=
"horizontal"
android:visibility=
"gone"
>
<TextView
android:layout_width=
"25dp"
android:layout_height=
"18dp"
android:text=
"加速"
android:textColor=
"#FFFFFFFF"
android:textSize=
"12.5sp"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/btn_acc_stop"
android:layout_width=
"90dp"
android:layout_height=
"30dp"
android:layout_marginRight=
"21dp"
android:background=
"@drawable/acc_text_bg_blue"
android:gravity=
"center"
android:orientation=
"horizontal"
android:visibility=
"gone"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"18dp"
android:text=
"正在加速"
android:textColor=
"#FF36B8F4"
android:textSize=
"12.5sp"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/btn_download_status"
android:layout_width=
"90dp"
android:layout_height=
"30dp"
android:gravity=
"center"
android:orientation=
"horizontal"
>
<com.xuexiang.xui.widget.progress.CircleProgressView
android:id=
"@+id/progress_download"
android:layout_width=
"21dp"
android:layout_height=
"21dp"
android:layout_centerInParent=
"true"
app:cpv_animate_type=
"AccelerateDecelerateInterpolator"
app:cpv_circle_broken=
"false"
app:cpv_end_color=
"#36B8F4"
app:cpv_end_progress=
"99"
app:cpv_isFilled=
"false"
app:cpv_isTracked=
"true"
app:cpv_progress_duration=
"1500"
app:cpv_progress_textColor=
"#36B8F4"
app:cpv_progress_textSize=
"50sp"
app:cpv_progress_textVisibility=
"false"
app:cpv_progress_width=
"1.5dp"
app:cpv_start_color=
"#36B8F4"
app:cpv_start_progress=
"0"
app:cpv_track_color=
"@color/divide_gray"
app:cpv_track_width=
"1.5dp"
/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
<View
android:background=
"@color/divide_gray"
android:layout_marginTop=
"7.75dp"
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:layout_marginLeft=
"22.5dp"
android:layout_marginTop=
"7.75dp"
android:layout_marginRight=
"22.5dp"
android:layout_height=
"1dp"
/>
android:background=
"@color/divide_gray"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:
orientation=
"horizontal
"
android:
layout_height=
"wrap_content
"
android:layout_marginTop=
"7.75dp"
android:layout_marginBottom=
"7.75dp"
android:
layout_height=
"wrap_content
"
>
android:
orientation=
"horizontal
"
>
<TextView
android:layout_weight=
"1"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"资讯社区"
android:gravity=
"center"
android:layout_gravity=
"center"
android:layout_weight=
"1"
android:gravity=
"center"
android:text=
"资讯社区"
android:textColor=
"#FF36B8F4"
android:textSize=
"11.5sp"
/>
android:textSize=
"11.5sp"
/>
<View
android:layout_gravity=
"center"
android:layout_width=
"1dp"
android:background=
"@color/divide_gray"
android:layout_height=
"14dp"
/>
android:layout_gravity=
"center"
android:background=
"@color/divide_gray"
/>
<TextView
android:layout_weight=
"1"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"资讯社区"
android:gravity=
"center"
android:layout_gravity=
"center"
android:layout_weight=
"1"
android:gravity=
"center"
android:text=
"资讯社区"
android:textColor=
"#FF36B8F4"
android:textSize=
"11.5sp"
/>
android:textSize=
"11.5sp"
/>
<View
android:layout_gravity=
"center"
android:layout_width=
"1dp"
android:background=
"@color/divide_gray"
android:layout_height=
"14dp"
/>
android:layout_gravity=
"center"
android:background=
"@color/divide_gray"
/>
<TextView
android:layout_weight=
"1"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"资讯社区"
android:gravity=
"center"
android:layout_gravity=
"center"
android:layout_weight=
"1"
android:gravity=
"center"
android:text=
"资讯社区"
android:textColor=
"#FF36B8F4"
android:textSize=
"11.5sp"
/>
android:textSize=
"11.5sp"
/>
</LinearLayout>
<View
android:layout_width=
"match_parent"
android:layout_height=
"13dp"
/>
android:layout_height=
"13dp"
android:background=
"@color/divide_gray"
/>
</LinearLayout>
app/src/main/res/mipmap-xxhdpi/bg_free.png
0 → 100644
View file @
d97bb8d1
4.2 KB
app/src/main/res/mipmap-xxhdpi/icon_free.png
0 → 100644
View file @
d97bb8d1
1.12 KB
app/src/main/res/mipmap-xxhdpi/icon_update.png
0 → 100644
View file @
d97bb8d1
1.53 KB
app/src/main/res/mipmap-xxxhdpi/splash.png
View replaced file @
7d81ef35
View file @
d97bb8d1
2.38 MB
|
W:
|
H:
540 KB
|
W:
|
H:
2-up
Swipe
Onion skin
core/src/main/java/com/github/shadowsocks/http/HttpConfig.kt
View file @
d97bb8d1
...
...
@@ -4,14 +4,14 @@ object HttpConfig {
//app后端
//val baseUrl = "http://10.16.1.98:9002"
// val baseUrl = "https://test-cc-tt-api
.orangenet.org.cn" //测试
val
baseUrl
=
"https://cc-tt-front.srccwl.com"
//生产
val
baseUrl
=
"https://test-cc-tt-api-v2
.orangenet.org.cn"
//测试
//
val baseUrl = "https://cc-tt-front.srccwl.com" //生产
/**
* 主页h5
*/
// val UI_MAIN_URL = "http://10.3.64.200:8080/#"
//
val UI_MAIN_URL = "https://test-cc-tt-front.orangenet.org.cn/#" //测试
val
UI_MAIN_URL
=
"https://cc-tt-front.srccwl.com/#"
//生产
val
UI_MAIN_URL
=
"https://test-cc-tt-front.orangenet.org.cn/#"
//测试
//
val UI_MAIN_URL = "https://cc-tt-front.srccwl.com/#" //生产
//隐私协议地址
val
HTML_HOST_PRIVACY
=
"https://sdk-static.srccwl.com/tt_html/"
...
...
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