Commit 662f8ccf authored by sheteng's avatar sheteng

资讯页面

parent 14a60b11
...@@ -31,5 +31,10 @@ ...@@ -31,5 +31,10 @@
<option name="name" value="maven" /> <option name="name" value="maven" />
<option name="url" value="https://jitpack.io" /> <option name="url" value="https://jitpack.io" />
</remote-repository> </remote-repository>
<remote-repository>
<option name="id" value="maven3" />
<option name="name" value="maven3" />
<option name="url" value="https://repo1.maven.org/maven2/" />
</remote-repository>
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -11,20 +11,25 @@ ...@@ -11,20 +11,25 @@
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/drawable/mine.xml" value="0.353125" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/drawable/mine.xml" value="0.353125" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/drawable/news.xml" value="0.5087890625" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/drawable/news.xml" value="0.5087890625" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/drawable/quick.xml" value="0.353125" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/drawable/quick.xml" value="0.353125" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/drawable/tab_bg.xml" value="0.353125" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/activity_main.xml" value="0.2269021739130435" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/activity_main.xml" value="0.2269021739130435" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/activity_main2.xml" value="0.23505434782608695" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/activity_main2.xml" value="0.23505434782608695" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/dialog_common.xml" value="0.3328125" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/dialog_common.xml" value="0.3328125" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/dialog_member.xml" value="0.26358695652173914" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/dialog_privacy.xml" value="0.2006340579710145" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/dialog_privacy.xml" value="0.2006340579710145" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_bottom_navigationview.xml" value="0.20969202898550723" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_bottom_navigationview.xml" value="0.20969202898550723" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_btn_nav.xml" value="0.20969202898550723" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_btn_nav.xml" value="0.20969202898550723" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_collection_object.xml" value="0.2871376811594203" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_dashboard.xml" value="0.21829710144927536" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_dashboard.xml" value="0.21829710144927536" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_home.xml" value="0.2269021739130435" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_home.xml" value="0.2269021739130435" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_login.xml" value="0.21829710144927536" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_login.xml" value="0.21829710144927536" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_login_phone.xml" value="0.25" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_login_phone.xml" value="0.25" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_login_quick.xml" value="0.2006340579710145" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_login_quick.xml" value="0.2006340579710145" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_mine.xml" value="0.3328125" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_mine.xml" value="0.3328125" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_quick.xml" value="0.21829710144927536" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_news.xml" value="0.26358695652173914" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_quick.xml" value="0.33" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_webview.xml" value="0.2708333333333333" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/fragment_webview.xml" value="0.2708333333333333" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/item_tab.xml" value="0.2871376811594203" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/main_activity.xml" value="0.23505434782608695" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/main_activity.xml" value="0.23505434782608695" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/main_fragment.xml" value="0.23505434782608695" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/layout/main_fragment.xml" value="0.23505434782608695" />
<entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/menu/bottom_nav_menu.xml" value="0.3328125" /> <entry key="..\:/ccwangluo/cc_quickly/app/src/main/res/menu/bottom_nav_menu.xml" value="0.3328125" />
......
...@@ -27,6 +27,7 @@ android { ...@@ -27,6 +27,7 @@ android {
arguments = [ moduleName : project.getName() ] arguments = [ moduleName : project.getName() ]
} }
} }
manifestPlaceholders = [qqappid: "你的qq appid"]
} }
buildTypes { buildTypes {
...@@ -72,6 +73,7 @@ dependencies { ...@@ -72,6 +73,7 @@ dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
implementation 'com.github.bumptech.glide:glide:4.12.0' implementation 'com.github.bumptech.glide:glide:4.12.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation 'com.google.code.gson:gson:2.8.7' implementation 'com.google.code.gson:gson:2.8.7'
...@@ -91,4 +93,20 @@ dependencies { ...@@ -91,4 +93,20 @@ dependencies {
implementation 'com.github.xuexiangjys.AgentWeb:agentweb-core:1.0.0' implementation 'com.github.xuexiangjys.AgentWeb:agentweb-core:1.0.0'
implementation 'com.github.xuexiangjys.AgentWeb:agentweb-download:1.0.0' implementation 'com.github.xuexiangjys.AgentWeb:agentweb-download:1.0.0'
implementation 'com.github.xuexiangjys.AgentWeb:agentweb-filechooser:1.0.0' implementation 'com.github.xuexiangjys.AgentWeb:agentweb-filechooser:1.0.0'
// 友盟基础组件库(所有友盟业务SDK都依赖基础组件库)
implementation 'com.umeng.umsdk:common:9.4.7'// (必选)
implementation 'com.umeng.umsdk:asms:1.5.0'// 必选
implementation 'com.umeng.umsdk:share-core:7.1.7'//分享核心库,必选
implementation 'com.umeng.umsdk:share-board:7.1.7'//分享面板功能,可选
//在线依赖目前支持QQ、微信、新浪微博、支付宝、钉钉;若需支持其他平台,请选择手动下载SDK
implementation 'com.umeng.umsdk:share-wx:7.1.7' //微信完整版
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9'//微信官方依赖库,必选
//
implementation 'com.umeng.umsdk:share-qq:7.1.7'//QQ完整版
implementation files('libs/open_sdk_3.5.7.4_r1bc9afe_lite.jar') //QQ官方依赖库,必选
implementation 'com.squareup.okhttp3:okhttp:3.14.9'//QQ官方sdk 3.53及之后版本需要集成okhttp3.x,必选
} }
\ No newline at end of file
...@@ -53,3 +53,98 @@ ...@@ -53,3 +53,98 @@
*; *;
} }
-dontwarn com.just.agentweb.** -dontwarn com.just.agentweb.**
-dontshrink
-dontoptimize
-dontwarn com.google.android.maps.**
-dontwarn com.squareup.okhttp.**
-dontwarn android.webkit.WebView
-dontwarn com.umeng.**
-dontwarn com.tencent.weibo.sdk.**
-dontwarn com.facebook.**
-keep public class javax.**
-keep public class android.webkit.**
-dontwarn android.support.v4.**
-keep enum com.facebook.**
-keepattributes Exceptions,InnerClasses,Signature
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keepattributes EnclosingMethod
-keep public interface com.facebook.**
-keep public interface com.tencent.**
-keep public interface com.umeng.socialize.**
-keep public interface com.umeng.socialize.sensor.**
-keep public interface com.umeng.scrshot.**
-keep public class com.umeng.socialize.* {*;}
-keep class com.umeng.commonsdk.statistics.common.MLog {*;}
-keep class com.umeng.commonsdk.UMConfigure {*;}
-keep class com.umeng.** {*;}
-keep class com.umeng.**
-keep class com.facebook.**
-keep class com.facebook.** { *; }
-keep class com.umeng.scrshot.**
-keep public class com.tencent.** {*;}
-keep class com.umeng.socialize.sensor.**
-keep class com.umeng.socialize.handler.**
-keep class com.umeng.socialize.handler.*
-keep class com.umeng.weixin.handler.**
-keep class com.umeng.weixin.handler.*
-keep class com.umeng.qq.handler.**
-keep class com.umeng.qq.handler.*
-keep class UMMoreHandler{*;}
-keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
-keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}
-keep class im.yixin.sdk.api.YXMessage {*;}
-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
-keep class com.tencent.mm.sdk.** {
*;
}
-keep class com.tencent.mm.opensdk.** {
*;
}
-keep class com.tencent.wxop.** {
*;
}
-keep class com.tencent.mm.sdk.** {
*;
}
-dontwarn twitter4j.**
-keep class twitter4j.** { *; }
-keep class com.tencent.** {*;}
-dontwarn com.tencent.**
-keep class com.kakao.** {*;}
-dontwarn com.kakao.**
-keep public class com.umeng.com.umeng.soexample.R$*{
public static final int *;
}
-keep public class com.linkedin.android.mobilesdk.R$*{
public static final int *;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class com.tencent.open.TDialog$*
-keep class com.tencent.open.TDialog$* {*;}
-keep class com.tencent.open.PKDialog
-keep class com.tencent.open.PKDialog {*;}
-keep class com.tencent.open.PKDialog$*
-keep class com.tencent.open.PKDialog$* {*;}
-keep class com.umeng.socialize.impl.ImageImpl {*;}
-keep class com.sina.** {*;}
-dontwarn com.sina.**
-keep class com.alipay.share.sdk.** {
*;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.linkedin.** { *; }
-keep class com.android.dingtalk.share.ddsharemodule.** { *; }
-keepattributes Signature
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ccwangluo.cc_quickly"> package="com.ccwangluo.accelerator">
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
...@@ -15,6 +15,11 @@ ...@@ -15,6 +15,11 @@
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<queries>
<package android:name="com.tencent.mm" /> // 指定微信包名
<package android:name="com.tencent.mobileqq" /> //指定qq包名
</queries>
<application <application
android:name=".App" android:name=".App"
...@@ -35,6 +40,49 @@ ...@@ -35,6 +40,49 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<!-- <provider-->
<!-- android:name="android.support.v4.content.FileProvider"-->
<!-- android:authorities="com.ccwangluo.accelerator.fileprovider"-->
<!-- android:exported="false"-->
<!-- android:grantUriPermissions="true">-->
<!-- <meta-data-->
<!-- android:name="android.support.FILE_PROVIDER_PATHS"-->
<!-- android:resource="@xml/filepaths"/>-->
<!-- </provider>-->
<activity
android:name="com.tencent.tauth.AuthActivity"
android:noHistory="true"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="1212121" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- <provider-->
<!-- android:authorities="${applicationId}.fileprovider"-->
<!-- android:name="android.support.v4.content.FileProvider"-->
<!-- android:exported="false"-->
<!-- android:grantUriPermissions="true"-->
<!-- >-->
<!-- <meta-data-->
<!-- android:name="android.support.FILE_PROVIDER_PATHS"-->
<!-- android:resource="@xml/filepaths"/>-->
<!-- </provider>-->
<activity <activity
android:name="com.chuanglan.shanyan_sdk.view.CmccLoginActivity" android:name="com.chuanglan.shanyan_sdk.view.CmccLoginActivity"
android:configChanges="keyboardHidden|orientation|screenSize" android:configChanges="keyboardHidden|orientation|screenSize"
......
package com.ccwangluo.cc_quickly package com.ccwangluo.accelerator
import android.app.Application import android.app.Application
import com.ccwangluo.accelerator.utils.PhoneUtils import com.ccwangluo.accelerator.utils.PhoneUtils
...@@ -18,6 +18,7 @@ class App : Application(){ ...@@ -18,6 +18,7 @@ class App : Application(){
PhoneUtils.initSdk(this) PhoneUtils.initSdk(this)
// 初始化 Toast 框架 // 初始化 Toast 框架
ToastUtils.init(this) ToastUtils.init(this)
// UMConfigure.preInit()
} }
} }
\ No newline at end of file
package com.ccwangluo.accelerator.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
/**
* actor 晴天 create 2019/5/17
* 封装一个kotlin下的通用adapter
*/
class KotlinDataAdapter<T> private constructor() : RecyclerView.Adapter<KotlinDataAdapter<T>.MyViewHolder>() {
//数据
private var mDatalist: ArrayList<T>? = null
//布局id
private var mLayoutId: Int? = null
//绑定事件的lambda放发
private var addBindView: ((itemView: View, itemData: T) -> Unit)? = null
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): MyViewHolder {
val view = LayoutInflater.from(p0.context).inflate(mLayoutId!!, p0, false)
return MyViewHolder(view)
}
override fun getItemCount(): Int {
return mDatalist?.size ?: -1 //左侧为null时返回-1
}
override fun onBindViewHolder(p0: MyViewHolder, p1: Int) {
addBindView?.invoke(p0.itemView, mDatalist?.get(p1)!!)
}
inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
/**
* 建造者,用来完成adapter的数据组合
*/
class Builder<B> {
private var adapter: KotlinDataAdapter<B> = KotlinDataAdapter()
/**
* 设置数据
*/
fun setData(lists: ArrayList<B>): Builder<B> {
adapter.mDatalist = lists
return this
}
/**
* 设置布局id
*/
fun setLayoutId(layoutId: Int): Builder<B> {
adapter.mLayoutId = layoutId
return this
}
/**
* 绑定View和数据
*/
fun addBindView(itemBind: ((itemView: View, itemData: B) -> Unit)): Builder<B> {
adapter.addBindView = itemBind
return this
}
fun create(): KotlinDataAdapter<B> {
return adapter
}
}
}
\ No newline at end of file
package com.ccwangluo.accelerator.model
class NetState {
//延迟
var netDelay : Int = 0
//丢包率
var lossRate : Float = 0f
//网络类型
var netType: String ="__"
}
\ No newline at end of file
package com.ccwangluo.accelerator.ui package com.ccwangluo.accelerator.ui
import android.view.LayoutInflater import android.view.*
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import com.ccwangluo.cc_quickly.databinding.FragmentBtnNavBinding import com.ccwangluo.accelerator.databinding.FragmentBtnNavBinding
import com.ccwangluo.accelerator.ui.home.MineFragment
import com.ccwangluo.accelerator.ui.home.NewsFragment
import com.ccwangluo.cc_quickly.ui.quick.MineFragment import com.ccwangluo.accelerator.ui.home.QuickFragment
import com.ccwangluo.cc_quickly.ui.quick.NewsFragment
import com.ccwangluo.cc_quickly.ui.quick.QuickFragment
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import com.xuexiang.xpage.annotation.Page import com.xuexiang.xpage.annotation.Page
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
...@@ -63,7 +58,7 @@ class BottomNavigationFragment : XPageFragment(), ViewPager.OnPageChangeListener ...@@ -63,7 +58,7 @@ class BottomNavigationFragment : XPageFragment(), ViewPager.OnPageChangeListener
} }
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
binding.bottomNavigation.menu.getItem(position).isChecked = true // binding.bottomNavigation.menu.getItem(position).isChecked = true
} }
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
...@@ -83,4 +78,8 @@ class BottomNavigationFragment : XPageFragment(), ViewPager.OnPageChangeListener ...@@ -83,4 +78,8 @@ class BottomNavigationFragment : XPageFragment(), ViewPager.OnPageChangeListener
return false return false
} }
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return super.onKeyDown(keyCode, event)
}
} }
\ No newline at end of file
package com.ccwangluo.cc_quickly.ui package com.ccwangluo.accelerator.ui
import android.Manifest import android.Manifest
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import com.ccwangluo.accelerator.ui.BottomNavigationFragment import android.view.KeyEvent
import com.ccwangluo.accelerator.ui.view.PrivacyDialog
import com.ccwangluo.accelerator.utils.LoginUtils import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.PhoneUtils import com.ccwangluo.accelerator.utils.PhoneUtils
import com.ccwangluo.accelerator.utils.http.HttpConfig
import com.ccwangluo.cc_quickly.utils.SettingSPUtils
import com.karumi.dexter.Dexter import com.karumi.dexter.Dexter
import com.karumi.dexter.MultiplePermissionsReport
import com.karumi.dexter.PermissionToken import com.karumi.dexter.PermissionToken
import com.karumi.dexter.listener.PermissionDeniedResponse
import com.karumi.dexter.listener.PermissionGrantedResponse
import com.karumi.dexter.listener.PermissionRequest import com.karumi.dexter.listener.PermissionRequest
import com.karumi.dexter.listener.single.PermissionListener import com.karumi.dexter.listener.multi.MultiplePermissionsListener
import com.tencent.mmkv.MMKV import com.tencent.mmkv.MMKV
import com.tencent.tauth.Tencent
import com.umeng.socialize.UMShareAPI
import com.xuexiang.xpage.base.XPageActivity import com.xuexiang.xpage.base.XPageActivity
import com.xuexiang.xpage.core.PageOption import com.xuexiang.xpage.core.PageOption
...@@ -24,25 +29,39 @@ class MainActivity() : XPageActivity() { ...@@ -24,25 +29,39 @@ class MainActivity() : XPageActivity() {
initPhoneUtils() initPhoneUtils()
//获取权限 //获取权限
Dexter.withContext(this) Dexter.withContext(this)
.withPermission(Manifest.permission.READ_PHONE_STATE) .withPermissions(
.withListener(object : PermissionListener { Manifest.permission.READ_PHONE_STATE,
override fun onPermissionGranted(response: PermissionGrantedResponse) { Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
} )
.withListener(object : MultiplePermissionsListener {
override fun onPermissionDenied(response: PermissionDeniedResponse) { override fun onPermissionsChecked(p0: MultiplePermissionsReport?) {
println(p0)
} }
override fun onPermissionRationaleShouldBeShown( override fun onPermissionRationaleShouldBeShown(
permission: PermissionRequest, p0: MutableList<PermissionRequest>?,
token: PermissionToken p1: PermissionToken?
) { ) {
println(p0)
println(p1)
} }
}).check() }).check()
PageOption.to(BottomNavigationFragment::class.java).open(this) PageOption.to(BottomNavigationFragment::class.java).open(this)
Tencent.setIsPermissionGranted(true)
//隐私协议
if (!SettingSPUtils.isAgreePrivacy) {
PrivacyDialog(this, HttpConfig.privacy_url, {
if (it) {
SettingSPUtils.isAgreePrivacy = true
} else {
finish()
}
}).show<PrivacyDialog>()
}
} }
private fun initPhoneUtils() { private fun initPhoneUtils() {
...@@ -54,6 +73,23 @@ class MainActivity() : XPageActivity() { ...@@ -54,6 +73,23 @@ class MainActivity() : XPageActivity() {
LoginUtils.clearToken() LoginUtils.clearToken()
} }
override fun onActivityResult(
requestCode: Int,
resultCode: Int,
data: Intent?
) {
super.onActivityResult(requestCode, resultCode, data)
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data)
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
activeFragment?.let {
if (activeFragment.onKeyDown(keyCode, event)) {
return true
}
}
return super.onKeyDown(keyCode, event)
}
} }
\ No newline at end of file
package com.ccwangluo.cc_quickly.ui.quick package com.ccwangluo.accelerator.ui.home
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.ccwangluo.accelerator.databinding.FragmentMineBinding
import com.ccwangluo.accelerator.ui.web.AndroidInterface import com.ccwangluo.accelerator.ui.web.AndroidInterface
import com.ccwangluo.accelerator.utils.http.HttpConfig import com.ccwangluo.accelerator.utils.http.HttpConfig
import com.ccwangluo.cc_quickly.databinding.FragmentMineBinding
import com.just.agentweb.core.AgentWeb import com.just.agentweb.core.AgentWeb
import com.just.agentweb.core.client.DefaultWebClient import com.just.agentweb.core.client.DefaultWebClient
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
...@@ -17,6 +17,7 @@ import com.xuexiang.xpage.utils.TitleBar ...@@ -17,6 +17,7 @@ import com.xuexiang.xpage.utils.TitleBar
class MineFragment : XPageFragment() { class MineFragment : XPageFragment() {
private var _binding: FragmentMineBinding? = null private var _binding: FragmentMineBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
var agentWeb: AgentWeb? = null
override fun initTitleBar(): TitleBar? { override fun initTitleBar(): TitleBar? {
//不使用@Page标注的一定要注意覆盖这个方法 //不使用@Page标注的一定要注意覆盖这个方法
...@@ -61,4 +62,21 @@ class MineFragment : XPageFragment() { ...@@ -61,4 +62,21 @@ class MineFragment : XPageFragment() {
.ready() .ready()
.go(url) .go(url)
} }
override fun onPause() {
agentWeb?.getWebLifeCycle()?.onPause()
super.onPause()
}
override fun onResume() {
agentWeb?.getWebLifeCycle()?.onResume()
super.onResume()
}
override fun onDestroyView() {
agentWeb?.getWebLifeCycle()?.onDestroy()
super.onDestroyView()
}
} }
\ No newline at end of file
package com.ccwangluo.cc_quickly.ui.quick package com.ccwangluo.accelerator.ui.home
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.ccwangluo.cc_quickly.databinding.FragmentNewsBinding import androidx.lifecycle.ViewModelProvider
import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.databinding.FragmentNewsBinding
import com.ccwangluo.accelerator.ui.news.DemoCollectionAdapter
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
class NewsFragment : XPageFragment() { class NewsFragment : XPageFragment() {
private var _binding: FragmentNewsBinding? = null private var _binding: FragmentNewsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
private lateinit var newsViewModel: NewsViewModel
override fun initTitleBar(): TitleBar? { override fun initTitleBar(): TitleBar? {
//不使用@Page标注的一定要注意覆盖这个方法 //不使用@Page标注的一定要注意覆盖这个方法
return null return null
...@@ -17,18 +22,41 @@ class NewsFragment : XPageFragment() { ...@@ -17,18 +22,41 @@ class NewsFragment : XPageFragment() {
override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View { override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View {
_binding = FragmentNewsBinding.inflate(inflater!!, container, false) _binding = FragmentNewsBinding.inflate(inflater!!, container, false)
newsViewModel = ViewModelProvider(requireActivity()).get(NewsViewModel::class.java)
return binding.root return binding.root
} }
val titles = arrayOf("动态", "攻略", "视频", "评价", "问答")
var adapter: DemoCollectionAdapter? = null
override fun initViews() { override fun initViews() {
newsViewModel.refreshState.observe(this, {
if (!it) {
binding.refreshLayout.isRefreshing = false
}
})
binding.tvMarquee.addDisplayString("【公告】韩服 DNF已经开启预约啦,小伙伴…")
binding.tvMarquee.startRoll()
adapter = DemoCollectionAdapter(this, titles)
binding.viewPager.adapter = adapter
TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
tab.setCustomView(R.layout.item_tab)
tab.text = titles[position]
}.attach()
} }
override fun initListeners() { override fun initListeners() {
binding.refreshLayout.setOnRefreshListener {
adapter?.refresh(binding.viewPager.currentItem)
binding.refreshLayout.postDelayed({
binding.refreshLayout.isRefreshing = false
}, 2000)
}
} }
companion object{ companion object {
fun newInstance(): NewsFragment { fun newInstance(): NewsFragment {
val fragment = NewsFragment() val fragment = NewsFragment()
return fragment return fragment
......
package com.ccwangluo.accelerator.ui.home
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class NewsViewModel : ViewModel() {
/**
* 刷新状态
*/
val refreshState = MutableLiveData<Boolean>()
}
\ No newline at end of file
package com.ccwangluo.cc_quickly.ui.quick package com.ccwangluo.accelerator.ui.home
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.ccwangluo.accelerator.utils.LoginUtils import android.view.animation.Animation
import com.ccwangluo.cc_quickly.databinding.FragmentQuickBinding import android.view.animation.LinearInterpolator
import android.view.animation.RotateAnimation
import com.ccwangluo.accelerator.databinding.FragmentQuickBinding
import com.ccwangluo.accelerator.ui.view.MemberDialog
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.utils.TitleBar import com.xuexiang.xpage.utils.TitleBar
class QuickFragment : XPageFragment() { class QuickFragment : XPageFragment() {
private var _binding: FragmentQuickBinding? = null private var _binding: FragmentQuickBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
...@@ -23,7 +27,7 @@ class QuickFragment : XPageFragment() { ...@@ -23,7 +27,7 @@ class QuickFragment : XPageFragment() {
} }
override fun initViews() { override fun initViews() {
//
} }
override fun initListeners() { override fun initListeners() {
...@@ -31,19 +35,39 @@ class QuickFragment : XPageFragment() { ...@@ -31,19 +35,39 @@ class QuickFragment : XPageFragment() {
if (binding.expandableLayout1.isExpanded) { if (binding.expandableLayout1.isExpanded) {
binding.expandableLayout1.toggle() binding.expandableLayout1.toggle()
binding.expandableLayout2.expand() binding.expandableLayout2.expand()
binding.btnExpendBg.setBackgroundResource(com.ccwangluo.accelerator.R.mipmap.quick_arrow_up)
} else { } else {
binding.expandableLayout1.expand() binding.expandableLayout1.expand()
binding.expandableLayout2.toggle() binding.expandableLayout2.toggle()
binding.btnExpendBg.setBackgroundResource(com.ccwangluo.accelerator.R.mipmap.quick_arrow_down)
} }
} }
binding.btnQuick.setOnClickListener { binding.btnQuick.setOnClickListener {
if (!LoginUtils.hasToken()) { // if (!LoginUtils.hasToken()) {
LoginUtils.login(this,{ // LoginUtils.login(this, {
//
// })
// return@setOnClickListener
// } else {
// val token = LoginUtils.token
// println(token)
// }
//
// if (!SysUtils.getConnectivityStatus(attachContext!!)) {
// binding.quickTopToast.visibility = View.VISIBLE
// binding.quickTopToastTx.setText("网络异常,请检查网络后重试")
// return@setOnClickListener
// }
//用户是否有使用时长
// if (){
//
// }
MemberDialog(this).show<MemberDialog>()
// startAnim()
})
} else {
}
} }
} }
......
package com.ccwangluo.accelerator.ui.home
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.ccwangluo.accelerator.model.NetState
class QuickViewModel : ViewModel() {
//加速状态
var accState = MutableLiveData<Int>()
//网络状态
var netState = MutableLiveData<NetState>()
}
\ No newline at end of file
...@@ -15,10 +15,12 @@ class LoginViewModel : ViewModel() { ...@@ -15,10 +15,12 @@ class LoginViewModel : ViewModel() {
val sendCodeState = MutableLiveData<Boolean>() val sendCodeState = MutableLiveData<Boolean>()
val loginState = MutableLiveData<Boolean>() val loginState = MutableLiveData<Boolean>()
val timerNumber = MutableLiveData<Int>()
fun login(phone: String, authCdoe: String) { fun login(phone: String, authCdoe: String) {
val map = mutableMapOf<String, String>() val map = mutableMapOf<String, String>()
map.put("phone", phone) map.put("phone", phone)
map.put("verifyCode",authCdoe) map.put("verifyCode", authCdoe)
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
val res = HttpGo.postSync<LoginRes>("/user/verifyCode/login", map) val res = HttpGo.postSync<LoginRes>("/user/verifyCode/login", map)
res?.let { res?.let {
...@@ -33,6 +35,7 @@ class LoginViewModel : ViewModel() { ...@@ -33,6 +35,7 @@ class LoginViewModel : ViewModel() {
} }
} }
fun getAuthCode(phone: String) { fun getAuthCode(phone: String) {
val map = mutableMapOf<String, String>() val map = mutableMapOf<String, String>()
map.put("phone", phone) map.put("phone", phone)
...@@ -42,9 +45,13 @@ class LoginViewModel : ViewModel() { ...@@ -42,9 +45,13 @@ class LoginViewModel : ViewModel() {
if (it.code == 200) { if (it.code == 200) {
sendCodeState.postValue(true) sendCodeState.postValue(true)
} else { } else {
sendCodeState.postValue(false)
ToastUtils.show(it.error) ToastUtils.show(it.error)
} }
} }
if (res == null) {
sendCodeState.postValue(false)
}
} }
} }
......
package com.ccwangluo.cc_quickly.ui.login package com.ccwangluo.accelerator.ui.login
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
...@@ -8,9 +8,8 @@ import android.view.ViewGroup ...@@ -8,9 +8,8 @@ import android.view.ViewGroup
import androidx.core.widget.addTextChangedListener import androidx.core.widget.addTextChangedListener
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.ccwangluo.accelerator.ui.login.LoginViewModel import com.ccwangluo.accelerator.databinding.FragmentLoginPhoneBinding
import com.ccwangluo.accelerator.ui.view.PrivacyDialog import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.cc_quickly.databinding.FragmentLoginPhoneBinding
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.xuexiang.xpage.annotation.Page import com.xuexiang.xpage.annotation.Page
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
...@@ -40,7 +39,7 @@ class PhoneLoginFragment : XPageFragment() { ...@@ -40,7 +39,7 @@ class PhoneLoginFragment : XPageFragment() {
override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View { override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View {
binding = FragmentLoginPhoneBinding.inflate(inflater!!, container, false) binding = FragmentLoginPhoneBinding.inflate(inflater!!, container, false)
loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) loginViewModel = ViewModelProvider(requireActivity()).get(LoginViewModel::class.java)
return binding.root return binding.root
} }
...@@ -68,14 +67,18 @@ class PhoneLoginFragment : XPageFragment() { ...@@ -68,14 +67,18 @@ class PhoneLoginFragment : XPageFragment() {
} else { } else {
binding.login.isEnabled = false binding.login.isEnabled = false
} }
if (isPhone(phone) && authCdoe.length == 6 && binding.cbProtocol.isChecked) {
loginViewModel.login(phone, authCdoe)
}
} }
loginViewModel.sendCodeState.observe(this, { loginViewModel.sendCodeState.observe(this, {
if (it) { if (it) {
sendVerifyCode() LoginUtils.startTimer()
} else { } else {
binding.authCodeBtn.visibility = View.VISIBLE binding.authCodeBtn.visibility = View.VISIBLE
binding.authCodeWait.visibility = View.GONE binding.authCodeWait.visibility = View.GONE
binding.authCodeBtn.isEnabled = true
} }
}) })
...@@ -84,13 +87,21 @@ class PhoneLoginFragment : XPageFragment() { ...@@ -84,13 +87,21 @@ class PhoneLoginFragment : XPageFragment() {
popToBack() popToBack()
} }
}) })
loginViewModel.timerNumber.observe(this, {
if (it > 0) {
binding.authCodeBtn.visibility = View.GONE
binding.authCodeWait.visibility = View.VISIBLE
binding.authCodeBtn.isEnabled = false
binding.authCodeWait.setText("${it}秒后重新获得验证码")
} else {
resetCounter()
}
})
} }
override fun initListeners() { override fun initListeners() {
binding.privacyAggreement.setOnClickListener({ binding.privacyAggreement.setOnClickListener({
PrivacyDialog(this, "http://www.baidu.com", {
}).show<PrivacyDialog>()
}) })
binding.userAggreement.setOnClickListener { binding.userAggreement.setOnClickListener {
...@@ -104,11 +115,9 @@ class PhoneLoginFragment : XPageFragment() { ...@@ -104,11 +115,9 @@ class PhoneLoginFragment : XPageFragment() {
binding.authCodeBtn.setOnClickListener { binding.authCodeBtn.setOnClickListener {
val phone = binding.phoneEt.text.toString() val phone = binding.phoneEt.text.toString()
if (StringUtils.isEmpty(phone) || !isPhone(phone)) { if (StringUtils.isEmpty(phone) || !isPhone(phone)) {
ToastUtils.show("请输入手机号码") ToastUtils.show("输入正确的手机号")
return@setOnClickListener return@setOnClickListener
} }
binding.authCodeBtn.visibility = View.GONE
binding.authCodeWait.visibility = View.VISIBLE
binding.authCodeBtn.isEnabled = false binding.authCodeBtn.isEnabled = false
loginViewModel.getAuthCode(phone) loginViewModel.getAuthCode(phone)
} }
...@@ -123,7 +132,7 @@ class PhoneLoginFragment : XPageFragment() { ...@@ -123,7 +132,7 @@ class PhoneLoginFragment : XPageFragment() {
val authCdoe = binding.authCodeEt.text.toString() val authCdoe = binding.authCodeEt.text.toString()
if (StringUtils.isEmpty(phone) || !isPhone(phone)) { if (StringUtils.isEmpty(phone) || !isPhone(phone)) {
ToastUtils.show("请输入手机号码") ToastUtils.show("输入正确的手机号")
return@setOnClickListener return@setOnClickListener
} }
if (StringUtils.isEmpty(authCdoe) || authCdoe.length < 6) { if (StringUtils.isEmpty(authCdoe) || authCdoe.length < 6) {
...@@ -146,34 +155,24 @@ class PhoneLoginFragment : XPageFragment() { ...@@ -146,34 +155,24 @@ class PhoneLoginFragment : XPageFragment() {
return Pattern.matches(regex, phone) return Pattern.matches(regex, phone)
} }
fun sendVerifyCode() { override fun onResume() {
mHandler.postDelayed(countDown, 0) super.onResume()
} LoginUtils.registerTimerCallBack {
loginViewModel.timerNumber.postValue(it)
/*
倒计时
*/
private val countDown = object : Runnable {
override fun run() {
if (mCountTime > 0) {
mHandler.postDelayed(this, 1000)
} else {
resetCounter()
}
mCountTime--
binding.authCodeWait.setText("${mCountTime}秒后重新获得验证码")
} }
} }
fun removeRunable() { override fun onPause() {
mHandler.removeCallbacks(countDown) super.onPause()
LoginUtils.unRegisterTimerCallBack()
} }
//重置按钮状态 //重置按钮状态
fun resetCounter(vararg text: String) { fun resetCounter() {
mCountTime = 60 mCountTime = 60
binding.authCodeBtn.visibility = View.VISIBLE binding.authCodeBtn.visibility = View.VISIBLE
binding.authCodeWait.visibility = View.GONE binding.authCodeWait.visibility = View.GONE
binding.authCodeBtn.setText("重新获取验证码") binding.authCodeBtn.setText("重新获取验证码")
binding.authCodeBtn.isEnabled = true
} }
} }
\ No newline at end of file
package com.ccwangluo.accelerator.ui.news
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
class DemoCollectionAdapter(fragment: Fragment, val titles: Array<String>) :
FragmentStateAdapter(fragment) {
override fun getItemCount(): Int = titles.size
var list = mutableListOf<DemoObjectFragment>()
override fun createFragment(position: Int): Fragment {
val fragment = DemoObjectFragment()
fragment.arguments = Bundle().apply {
// Our object is just an integer :-P
putInt(ARG_OBJECT, position)
}
list.add(fragment)
return fragment
}
fun refresh(index:Int) {
list.get(index).refresh()
}
companion object {
val ARG_OBJECT = "object"
}
}
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.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
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<DeviceModel>()
// .setData(deviceList)
// .setLayoutId(R.layout.item_device)
// .addBindView { itemView, itemData ->
// itemView.tv_device_name.text = if (itemData.platform.isEmpty()) "未命名" else
// }
// .create()
}
fun refresh() {
recycle_view?.postDelayed({
newsViewModel.refreshState.postValue(false )
}, 1000)
}
}
\ No newline at end of file
...@@ -3,7 +3,7 @@ package com.ccwangluo.accelerator.ui.view ...@@ -3,7 +3,7 @@ package com.ccwangluo.accelerator.ui.view
import android.content.Context import android.content.Context
import android.widget.TextView import android.widget.TextView
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.ccwangluo.cc_quickly.R import com.ccwangluo.accelerator.R
import com.xuexiang.xui.widget.dialog.materialdialog.CustomMaterialDialog import com.xuexiang.xui.widget.dialog.materialdialog.CustomMaterialDialog
import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
...@@ -16,7 +16,7 @@ class CommonDialog( ...@@ -16,7 +16,7 @@ class CommonDialog(
override fun getDialogBuilder(context: Context?): MaterialDialog.Builder { override fun getDialogBuilder(context: Context?): MaterialDialog.Builder {
return MaterialDialog.Builder(context!!) return MaterialDialog.Builder(context!!)
.customView(R.layout.dialog_common, true); .customView(R.layout.dialog_common, false);
} }
......
package com.ccwangluo.accelerator.ui.view
import android.content.Context
import android.os.Bundle
import android.widget.ImageView
import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import com.ccwangluo.accelerator.utils.http.HttpConfig
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xui.widget.dialog.materialdialog.CustomMaterialDialog
import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
/**
* 会员购买框
*/
class MemberDialog(
var fragment: XPageFragment,
) : CustomMaterialDialog(fragment.context) {
override fun getDialogBuilder(context: Context?): MaterialDialog.Builder {
return MaterialDialog.Builder(context!!)
.customView(R.layout.dialog_member, false);
}
override fun initViews(context: Context?) {
val btn = findViewById<ImageView>(R.id.dialog_memeber_btn)
btn.setOnClickListener {
dismiss<MemberDialog>()
val params = Bundle()
params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, HttpConfig.privacy_url)
fragment.openPage(CommonWebViewFragment::class.java, params)
}
}
}
\ No newline at end of file
package com.ccwangluo.accelerator.ui.view package com.ccwangluo.accelerator.ui.view
import android.content.Context import android.content.Context
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.TextView import android.widget.TextView
import androidx.fragment.app.Fragment import com.ccwangluo.accelerator.R
import com.ccwangluo.cc_quickly.R
import com.just.agentweb.core.AgentWeb import com.just.agentweb.core.AgentWeb
import com.just.agentweb.core.client.DefaultWebClient import com.just.agentweb.core.client.DefaultWebClient
import com.xuexiang.xpage.base.XPageActivity
import com.xuexiang.xui.widget.dialog.materialdialog.CustomMaterialDialog import com.xuexiang.xui.widget.dialog.materialdialog.CustomMaterialDialog
import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
class PrivacyDialog( class PrivacyDialog(
var fragment: Fragment, var xPageActivity: XPageActivity,
var privacy_url: String, var privacy_url: String,
var callback: (Boolean) -> Unit var callback: (Boolean) -> Unit
) : CustomMaterialDialog(fragment.context) { ) : CustomMaterialDialog(xPageActivity) {
override fun getDialogBuilder(context: Context?): MaterialDialog.Builder { override fun getDialogBuilder(context: Context?): MaterialDialog.Builder {
return MaterialDialog.Builder(context!!) return MaterialDialog.Builder(context!!)
.customView(R.layout.dialog_privacy, true); .customView(R.layout.dialog_privacy, false);
} }
...@@ -40,11 +41,11 @@ class PrivacyDialog( ...@@ -40,11 +41,11 @@ class PrivacyDialog(
init { init {
val container = findViewById<FrameLayout>(R.id.privacy_webview) val container = findViewById<FrameLayout>(R.id.privacy_webview)
val agentWeb = val agentWeb =
createAgentWeb(fragment, container, privacy_url) createAgentWeb(xPageActivity, container, privacy_url)
} }
fun createAgentWeb(fragment: Fragment?, viewGroup: ViewGroup, url: String): AgentWeb { fun createAgentWeb(xPageActivity: XPageActivity, viewGroup: ViewGroup, url: String): AgentWeb {
return AgentWeb.with(fragment!!) return AgentWeb.with(xPageActivity)
.setAgentWebParent( .setAgentWebParent(
viewGroup!!, viewGroup!!,
-1, -1,
......
package com.ccwangluo.accelerator.ui.web package com.ccwangluo.accelerator.ui.web
import android.os.Bundle
import android.webkit.JavascriptInterface import android.webkit.JavascriptInterface
import androidx.core.content.ContextCompat.checkSelfPermission import androidx.core.content.ContextCompat.checkSelfPermission
import com.ccwangluo.accelerator.utils.LoginUtils import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.SysUtils import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.cc_quickly.utils.XToastUtils import com.ccwangluo.cc_quickly.utils.XToastUtils
import com.just.agentweb.core.AgentWeb import com.just.agentweb.core.AgentWeb
import com.karumi.dexter.Dexter
import com.karumi.dexter.MultiplePermissionsReport
import com.karumi.dexter.PermissionToken
import com.karumi.dexter.listener.PermissionRequest
import com.karumi.dexter.listener.multi.MultiplePermissionsListener
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
...@@ -25,10 +31,17 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -25,10 +31,17 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
} }
@JavascriptInterface @JavascriptInterface
fun open(pageName: String) { fun openNative(pageName: String) {
xPageFragment.openPage(pageName) xPageFragment.openPage(pageName)
} }
@JavascriptInterface
fun openWebview(url: String) {
val params = Bundle()
params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, url)
xPageFragment.openPage(CommonWebViewFragment::class.java, params)
}
@JavascriptInterface @JavascriptInterface
fun login(callback: String) { fun login(callback: String) {
LoginUtils.login(xPageFragment, { LoginUtils.login(xPageFragment, {
...@@ -48,7 +61,41 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -48,7 +61,41 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
xPageFragment.context?.let { xPageFragment.context?.let {
val hasPermission: Boolean = if (checkSelfPermission(it, key) > 0) true else false val hasPermission: Boolean = if (checkSelfPermission(it, key) > 0) true else false
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs(callback,key, hasPermission.toString()) .quickCallJs(callback, key, hasPermission.toString())
}
}
/**
* 申请权限
*/
@JavascriptInterface
fun requirePermissionState(key: String, callback: String) {
xPageFragment.context?.let {
//获取权限
Dexter.withContext(it)
.withPermissions(key)
.withListener(object : MultiplePermissionsListener {
override fun onPermissionsChecked(p0: MultiplePermissionsReport?) {
p0?.let {
it.grantedPermissionResponses.forEach {
agentWeb.getJsAccessEntrace()
.quickCallJs(callback, key, "true")
}
it.deniedPermissionResponses.forEach {
agentWeb.getJsAccessEntrace()
.quickCallJs(callback, key, "false")
}
}
}
override fun onPermissionRationaleShouldBeShown(
p0: MutableList<PermissionRequest>?,
p1: PermissionToken?
) {
}
}).check()
} }
} }
......
package com.ccwangluo.accelerator.ui.web package com.ccwangluo.accelerator.ui.web
import android.view.KeyEvent
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.ccwangluo.accelerator.utils.http.HttpConfig import com.ccwangluo.accelerator.databinding.FragmentWebviewBinding
import com.ccwangluo.cc_quickly.databinding.FragmentWebviewBinding
import com.just.agentweb.core.AgentWeb import com.just.agentweb.core.AgentWeb
import com.just.agentweb.core.client.DefaultWebClient import com.just.agentweb.core.client.DefaultWebClient
import com.xuexiang.xpage.annotation.Page import com.xuexiang.xpage.annotation.Page
...@@ -16,6 +16,7 @@ import com.xuexiang.xpage.base.XPageFragment ...@@ -16,6 +16,7 @@ import com.xuexiang.xpage.base.XPageFragment
@Page(name = "webview") @Page(name = "webview")
class CommonWebViewFragment : XPageFragment() { class CommonWebViewFragment : XPageFragment() {
var agentWeb: AgentWeb? = null
lateinit var binding: FragmentWebviewBinding lateinit var binding: FragmentWebviewBinding
override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View { override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View {
binding = FragmentWebviewBinding.inflate(inflater!!, container, false) binding = FragmentWebviewBinding.inflate(inflater!!, container, false)
...@@ -23,9 +24,11 @@ class CommonWebViewFragment : XPageFragment() { ...@@ -23,9 +24,11 @@ class CommonWebViewFragment : XPageFragment() {
} }
override fun initViews() { override fun initViews() {
val agentWeb = val url = arguments?.getString(WEBVIEW_URL_KEY)
createAgentWeb(this, binding.commonWebview, HttpConfig.UI_MAIN_URL) agentWeb =
agentWeb.getJsInterfaceHolder().addJavaObject("android", AndroidInterface(this, agentWeb)) url?.let { createAgentWeb(this, binding.commonWebview, it) }
agentWeb?.getJsInterfaceHolder()
?.addJavaObject("android", AndroidInterface(this, agentWeb!!))
} }
fun createAgentWeb(fragment: Fragment?, viewGroup: ViewGroup, url: String): AgentWeb { fun createAgentWeb(fragment: Fragment?, viewGroup: ViewGroup, url: String): AgentWeb {
...@@ -48,4 +51,35 @@ class CommonWebViewFragment : XPageFragment() { ...@@ -48,4 +51,35 @@ class CommonWebViewFragment : XPageFragment() {
override fun initListeners() { override fun initListeners() {
} }
override fun onPause() {
agentWeb?.getWebLifeCycle()?.onPause()
super.onPause()
}
override fun onResume() {
agentWeb?.getWebLifeCycle()?.onResume()
super.onResume()
}
override fun onDestroyView() {
agentWeb?.getWebLifeCycle()?.onDestroy()
super.onDestroyView()
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
agentWeb?.let {
if (it.back()) {
return true
}
}
}
return super.onKeyDown(keyCode, event)
}
companion object {
var WEBVIEW_URL_KEY = "WEBVIEW_URL_KEY"
}
} }
\ No newline at end of file
package com.ccwangluo.accelerator.utils
/**
* 加速功能工具类
*/
object AcceleratorUtils {
}
\ No newline at end of file
...@@ -3,8 +3,8 @@ package com.ccwangluo.accelerator.utils ...@@ -3,8 +3,8 @@ package com.ccwangluo.accelerator.utils
import android.content.Context import android.content.Context
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.ccwangluo.accelerator.model.LoginRes import com.ccwangluo.accelerator.model.LoginRes
import com.ccwangluo.accelerator.ui.login.PhoneLoginFragment
import com.ccwangluo.accelerator.utils.http.HttpGo import com.ccwangluo.accelerator.utils.http.HttpGo
import com.ccwangluo.cc_quickly.ui.login.PhoneLoginFragment
import com.chuanglan.shanyan_sdk.OneKeyLoginManager import com.chuanglan.shanyan_sdk.OneKeyLoginManager
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.tencent.mmkv.MMKV import com.tencent.mmkv.MMKV
...@@ -13,9 +13,43 @@ import com.xuexiang.xpage.core.PageOption ...@@ -13,9 +13,43 @@ import com.xuexiang.xpage.core.PageOption
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import java.util.*
object LoginUtils { object LoginUtils {
var loginRes: LoginRes? = null
var timeNumber = 60
private var timer: Timer? = null
private var timerTask: TimerTask? = null
private var timerCallBack: (Int) -> Unit? = {}
fun registerTimerCallBack(callBack: (Int) -> Unit) {
timerCallBack = callBack
}
fun unRegisterTimerCallBack() {
timerCallBack = {}
}
fun startTimer() {
timer?.cancel()
timerTask = object : TimerTask() {
override fun run() {
timeNumber--
timerCallBack(timeNumber)
if (timeNumber == 0) {
timer?.cancel()
}
}
}
timer = Timer();
timer?.schedule(timerTask, 0, 1000);
}
fun login(xPageFragment: XPageFragment, callBack: (Boolean) -> Unit) { fun login(xPageFragment: XPageFragment, callBack: (Boolean) -> Unit) {
PhoneUtils.openLoginAuth(xPageFragment) { b, s -> PhoneUtils.openLoginAuth(xPageFragment) { b, s ->
if (b) { if (b) {
...@@ -26,16 +60,17 @@ object LoginUtils { ...@@ -26,16 +60,17 @@ object LoginUtils {
res?.let { res?.let {
if (it.code == 200) { if (it.code == 200) {
token = it.data?.token token = it.data?.token
loginRes = it.data
ToastUtils.show("登录成功") ToastUtils.show("登录成功")
OneKeyLoginManager.getInstance().finishAuthActivity() OneKeyLoginManager.getInstance().finishAuthActivity()
withContext(Dispatchers.Main){ withContext(Dispatchers.Main) {
callBack(true) callBack(true)
} }
} else { } else {
it.error?.let { it.error?.let {
ToastUtils.show(it) ToastUtils.show(it)
} }
withContext(Dispatchers.Main){ withContext(Dispatchers.Main) {
callBack(false) callBack(false)
} }
} }
...@@ -73,4 +108,9 @@ object LoginUtils { ...@@ -73,4 +108,9 @@ object LoginUtils {
return MMKV.defaultMMKV().containsKey(KEY_TOKEN) return MMKV.defaultMMKV().containsKey(KEY_TOKEN)
} }
fun logout() {
}
} }
\ No newline at end of file
...@@ -8,8 +8,9 @@ import android.util.Log ...@@ -8,8 +8,9 @@ import android.util.Log
import android.util.TypedValue import android.util.TypedValue
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.TextView import android.widget.TextView
import com.ccwangluo.cc_quickly.R import com.ccwangluo.accelerator.R
import com.ccwangluo.cc_quickly.ui.login.PhoneLoginFragment import com.ccwangluo.accelerator.ui.login.PhoneLoginFragment
import com.chuanglan.shanyan_sdk.OneKeyLoginManager import com.chuanglan.shanyan_sdk.OneKeyLoginManager
import com.chuanglan.shanyan_sdk.tool.ShanYanUIConfig import com.chuanglan.shanyan_sdk.tool.ShanYanUIConfig
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
...@@ -77,10 +78,10 @@ object PhoneUtils { ...@@ -77,10 +78,10 @@ object PhoneUtils {
// context.getResources().getDrawable(R.drawable.login_demo_auth_bt_cus_e) // context.getResources().getDrawable(R.drawable.login_demo_auth_bt_cus_e)
//协议复选框选中时图标 //协议复选框选中时图标
val mCheckedImg: Drawable = val mCheckedImg: Drawable =
context.getResources().getDrawable(com.ccwangluo.cc_quickly.R.mipmap.login_check_cus) context.getResources().getDrawable(R.mipmap.login_check_cus)
//协议复选框未选中时图标 //协议复选框未选中时图标
val mCunheckedImg: Drawable = val mCunheckedImg: Drawable =
context.getResources().getDrawable(com.ccwangluo.cc_quickly.R.mipmap.login_uncheck_cus) context.getResources().getDrawable(R.mipmap.login_uncheck_cus)
//自定义控件(右上角“使用其他手机>”) //自定义控件(右上角“使用其他手机>”)
val mOtherTv = TextView(context) val mOtherTv = TextView(context)
mOtherTv.text = "其他方式登录" mOtherTv.text = "其他方式登录"
...@@ -124,7 +125,7 @@ object PhoneUtils { ...@@ -124,7 +125,7 @@ object PhoneUtils {
.setLogoHeight(130) .setLogoHeight(130)
.setLogoWidth(130) .setLogoWidth(130)
.setLogoOffsetY(30) .setLogoOffsetY(30)
.setLogoImgPath(context.resources.getDrawable(com.ccwangluo.cc_quickly.R.mipmap.ic_launcher)) .setLogoImgPath(context.resources.getDrawable(R.mipmap.ic_launcher))
// .addCustomView( // .addCustomView(
// mOtherTv2, true, false, null // mOtherTv2, true, false, null
// ) // )
......
...@@ -41,5 +41,4 @@ object SysUtils { ...@@ -41,5 +41,4 @@ object SysUtils {
return packageNames.contains(packageName) return packageNames.contains(packageName)
} }
} }
\ No newline at end of file
...@@ -3,4 +3,7 @@ package com.ccwangluo.accelerator.utils.http ...@@ -3,4 +3,7 @@ package com.ccwangluo.accelerator.utils.http
object HttpConfig { object HttpConfig {
val baseUrl = "http://10.16.1.98:9002/api" val baseUrl = "http://10.16.1.98:9002/api"
val UI_MAIN_URL = "http:wwww.baidu.com" val UI_MAIN_URL = "http:wwww.baidu.com"
//隐私协议地址
val privacy_url = "http:wwww.baidu.com"
} }
\ No newline at end of file
package com.ccwangluo.accelerator.wxapi;
import com.umeng.socialize.weixin.view.WXCallbackActivity;
public class WXEntryActivity extends WXCallbackActivity {
}
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:fromDegrees="0"
android:toDegrees="359"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"
android:repeatCount="-1">
</rotate>
</rotate>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#FF000000"/>
<item android:state_selected="false" android:color="#9E9E9E" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@mipmap/tab_bg_selected"/>
<item android:state_selected="false" android:drawable="@color/white"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="308dp"
android:layout_height="381dp"
android:background="@mipmap/dialog_member"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="178.25dp"
android:text="您的加速特权已到期"
android:textColor="#FF000000"
android:textSize="18sp" />
<TextView
android:layout_width="232dp"
android:layout_height="47.5dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="14dp"
android:text="此游戏加速为会员服务,成为会员,体验一件加速的超快感吧!"
android:textColor="#FF343434"
android:textSize="15sp" />
<ImageView
android:id="@+id/dialog_memeber_btn"
android:layout_width="235dp"
android:layout_height="49dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="35dp"
android:background="@mipmap/dialog_member_btn" />
</LinearLayout>
\ No newline at end of file
<?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"
android:layout_width="match_parent" android:layout_width="302dp"
android:orientation="vertical" android:orientation="vertical"
android:layout_height="720dp"> android:layout_height="418.5dp">
<FrameLayout <FrameLayout
android:id="@+id/privacy_webview" android:id="@+id/privacy_webview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="500dp"/> android:layout_height="364.5dp"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="horizontal" android:orientation="horizontal"
android:layout_height="wrap_content"> android:layout_height="53.5dp">
<TextView <TextView
android:id="@+id/privacy_disagree" android:id="@+id/privacy_disagree"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:text="不同意" android:text="不同意"
android:padding="20dp" android:textColor="#FFA8A8A8"
android:textSize="15sp"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:gravity="center"
/> />
...@@ -28,10 +29,10 @@ ...@@ -28,10 +29,10 @@
android:id="@+id/privacy_agree" android:id="@+id/privacy_agree"
android:layout_weight="1" android:layout_weight="1"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:textColor="@color/colorPrimary"
android:text="同意" android:text="同意"
android:padding="20dp" android:textColor="#FF3CA4FD"
android:textSize="15sp"
android:gravity="center" android:gravity="center"
/> />
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
\ No newline at end of file
...@@ -59,12 +59,13 @@ ...@@ -59,12 +59,13 @@
<EditText <EditText
android:id="@+id/phone_et" android:id="@+id/phone_et"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="30dp"
android:inputType="number" android:inputType="number"
android:background="@null" android:background="@null"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:textColor="#FF000000" android:textColor="#FF000000"
android:layout_weight="1" android:layout_weight="1"
android:hint="请输入手机号"
android:maxLength="11" android:maxLength="11"
android:textSize="15sp"/> android:textSize="15sp"/>
...@@ -93,12 +94,13 @@ ...@@ -93,12 +94,13 @@
<EditText <EditText
android:id="@+id/auth_code_et" android:id="@+id/auth_code_et"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="30dp"
android:inputType="number" android:inputType="number"
android:background="@null" android:background="@null"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:textColor="#FF000000" android:textColor="#FF000000"
android:layout_weight="1" android:layout_weight="1"
android:hint="请输入验证码"
android:maxLength="6" android:maxLength="6"
android:textSize="15sp"/> android:textSize="15sp"/>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/refresh_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".ui.notifications.NotificationsFragment" > android:background="@color/black"
android:orientation="vertical">
<TextView <LinearLayout
android:id="@+id/text_notifications"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_marginStart="8dp" android:orientation="vertical">
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp" <TextView
android:textAlignment="center" android:layout_width="match_parent"
android:textSize="20sp" android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="36dp"
app:layout_constraintStart_toStartOf="parent" android:gravity="center_horizontal"
app:layout_constraintTop_toTopOf="parent" android:text="地下城与勇士 韩服"
app:layout_constraintBottom_toBottomOf="parent" /> android:textColor="#FFFFFFFF"
</androidx.constraintlayout.widget.ConstraintLayout> android:textSize="16sp" />
\ No newline at end of file
<com.xuexiang.xui.widget.layout.XUILinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:background="@color/white"
android:orientation="vertical"
app:xui_hideRadiusSide="bottom"
app:xui_radius="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="21dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:orientation="vertical">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/game_download" />
<TextView
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="游戏下载"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:orientation="vertical">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/game_group" />
<TextView
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="万能宝藏群"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:orientation="vertical">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/game_google" />
<TextView
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="谷歌套件"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="21dp"
android:layout_marginRight="20dp">
<ImageView
android:layout_width="17.95dp"
android:layout_height="14.6dp"
android:layout_gravity="center_vertical"
android:background="@mipmap/icon_notice" />
<com.xuexiang.xui.widget.textview.MarqueeTextView
android:id="@+id/tv_marquee"
android:layout_width="299dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center"
android:text=""
android:textColor="#FF1A1A1A"
android:textSize="14sp"
app:mtv_isAutoDisplay="true"
app:mtv_isAutoFit="true" />
</LinearLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
style="@style/MyTablayoutstyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.xuexiang.xui.widget.layout.XUILinearLayout>
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
\ No newline at end of file
...@@ -5,14 +5,13 @@ ...@@ -5,14 +5,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#313344" android:background="#313344"
android:orientation="vertical" android:orientation="vertical">
tools:context=".ui.quick.QuickFragment">
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:background="@color/nr_gray" android:layout_height="match_parent"
android:layout_weight="1" android:layout_weight="1"
android:layout_height="match_parent"> android:background="@color/nr_gray">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -22,32 +21,30 @@ ...@@ -22,32 +21,30 @@
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="36dp"> android:layout_marginTop="40.5dp">
<TextView <TextView
android:id="@+id/quick_state" android:id="@+id/quick_state"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="加速中 00:00:21"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="16sp" android:textSize="16sp" />
/>
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="16dp"
android:layout_height="wrap_content" android:layout_height="22dp"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginEnd="18dp" android:layout_marginEnd="58.5dp"
android:src="@mipmap/share" /> android:src="@mipmap/share" />
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="19dp"
android:layout_height="wrap_content" android:layout_height="21dp"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginEnd="50dp" android:layout_marginEnd="22.15dp"
android:src="@mipmap/message" /> android:src="@mipmap/message" />
</RelativeLayout> </RelativeLayout>
...@@ -55,13 +52,42 @@ ...@@ -55,13 +52,42 @@
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<com.xuexiang.xui.widget.layout.XUILinearLayout
android:id="@+id/quick_top_toast"
android:visibility="gone"
android:layout_width="320dp"
android:layout_height="34dp"
android:layout_centerHorizontal="true"
android:background="#FF151721"
android:gravity="center"
android:orientation="horizontal"
app:xui_radius="10dp">
<ImageView
android:layout_width="14dp"
android:layout_height="14dp"
android:background="@mipmap/icon_error"/>
<TextView
android:id="@+id/quick_top_toast_tx"
android:layout_marginLeft="4dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请先安装游戏后加速"
android:textColor="#FFD5D7DF"
android:textSize="14sp"
/>
</com.xuexiang.xui.widget.layout.XUILinearLayout>
<ImageView <ImageView
android:id="@+id/game_pic_out" android:id="@+id/game_pic_out"
android:layout_width="250dp" android:layout_width="250dp"
android:layout_height="250dp" android:layout_height="250dp"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:layout_margin="5dp" android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp"
android:background="@mipmap/circle_out" /> android:background="@mipmap/circle_out" />
<ImageView <ImageView
...@@ -92,7 +118,7 @@ ...@@ -92,7 +118,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="15dp"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="horizontal"> android:orientation="horizontal">
...@@ -109,7 +135,6 @@ ...@@ -109,7 +135,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginLeft="5dp" android:layout_marginLeft="5dp"
android:background="@color/xui_transparent"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
app:xui_borderColor="@color/white" app:xui_borderColor="@color/white"
...@@ -141,30 +166,37 @@ ...@@ -141,30 +166,37 @@
</LinearLayout> </LinearLayout>
<com.xuexiang.xui.widget.layout.XUILinearLayout <com.xuexiang.xui.widget.layout.XUILinearLayout
android:id="@+id/btn_expend"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_marginTop="75dp" android:layout_marginTop="75dp"
android:background="#313344" android:background="#313344"
android:orientation="vertical" android:orientation="vertical"
android:paddingBottom="10dp"
app:xui_hideRadiusSide="bottom" app:xui_hideRadiusSide="bottom"
app:xui_radius="10dp"> app:xui_radius="10dp">
<ImageView <FrameLayout
android:layout_width="22dp" android:paddingTop="15dp"
android:layout_height="11dp" android:id="@+id/btn_expend"
android:layout_gravity="center_horizontal" android:layout_width="match_parent"
android:layout_marginTop="15dp" android:layout_height="wrap_content">
android:layout_marginBottom="10dp"
android:background="@mipmap/quick_arrow_up" /> <ImageView
android:layout_centerInParent="true"
android:id="@+id/btn_expend_bg"
android:layout_width="22dp"
android:layout_height="11dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/quick_arrow_up" />
</FrameLayout>
<com.xuexiang.xui.widget.layout.ExpandableLayout <com.xuexiang.xui.widget.layout.ExpandableLayout
android:id="@+id/expandable_layout1" android:id="@+id/expandable_layout1"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:el_duration="300" app:el_duration="300"
android:layout_marginBottom="22dp"
app:el_expanded="false"> app:el_expanded="false">
<LinearLayout <LinearLayout
...@@ -176,32 +208,34 @@ ...@@ -176,32 +208,34 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:padding="10dp" android:layout_marginTop="15dp"
android:text="网络详情" android:text="网络详情"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="14sp" /> android:textSize="14sp" />
<com.xuexiang.xui.widget.layout.XUILinearLayout <com.xuexiang.xui.widget.layout.XUIRelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="78dp" android:layout_height="wrap_content"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
android:layout_marginBottom="10dp" android:layout_marginTop="10dp"
android:paddingTop="16.5dp"
android:paddingLeft="23dp"
android:paddingRight="23dp"
android:paddingBottom="16.5dp"
android:background="#252736" android:background="#252736"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="10dp"
app:xui_radius="10dp"> app:xui_radius="10dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="30dp" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:text="正在使用" android:text="正在使用"
android:textColor="#FF707386" android:textColor="#FF707386"
android:textSize="13sp" /> android:textSize="13sp" />
...@@ -209,23 +243,23 @@ ...@@ -209,23 +243,23 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="4dp"
android:gravity="center" android:gravity="center_vertical"
android:text="FIWI" android:text="FIWI"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="16sp" /> android:textSize="16sp" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="30dp" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:text="网络质量" android:text="网络质量"
android:textColor="#FF707386" android:textColor="#FF707386"
android:textSize="13sp" /> android:textSize="13sp" />
...@@ -233,23 +267,23 @@ ...@@ -233,23 +267,23 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="4dp"
android:gravity="center" android:gravity="center_vertical"
android:text="极好" android:text="极好"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="16sp" /> android:textSize="16sp" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="30dp" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:text="网络质量" android:text="网络质量"
android:textColor="#FF707386" android:textColor="#FF707386"
android:textSize="13sp" /> android:textSize="13sp" />
...@@ -257,41 +291,43 @@ ...@@ -257,41 +291,43 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="4dp"
android:gravity="center" android:gravity="center_vertical"
android:text="极好" android:text="未开启"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="16sp" /> android:textSize="16sp" />
</LinearLayout> </LinearLayout>
</com.xuexiang.xui.widget.layout.XUILinearLayout> </com.xuexiang.xui.widget.layout.XUIRelativeLayout>
<com.xuexiang.xui.widget.layout.XUILinearLayout <com.xuexiang.xui.widget.layout.XUIRelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="78dp" android:layout_height="78dp"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
android:layout_marginBottom="10dp" android:layout_marginTop="10dp"
android:paddingTop="16.5dp"
android:paddingLeft="23dp"
android:paddingRight="23dp"
android:paddingBottom="16.5dp"
android:background="#252736" android:background="#252736"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="10dp"
app:xui_radius="10dp"> app:xui_radius="10dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:text="152" android:text="152"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="16sp" /> android:textSize="16sp" />
...@@ -299,7 +335,7 @@ ...@@ -299,7 +335,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:text="%" android:text="%"
android:textColor="#FF94949B" android:textColor="#FF94949B"
android:textSize="12sp" /> android:textSize="12sp" />
...@@ -308,7 +344,7 @@ ...@@ -308,7 +344,7 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="2.5dp"
android:gravity="center" android:gravity="center"
android:text="综合提速" android:text="综合提速"
android:textColor="#FF707386" android:textColor="#FF707386"
...@@ -316,21 +352,21 @@ ...@@ -316,21 +352,21 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_centerInParent="true"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:text="2" android:text="2"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="16sp" /> android:textSize="16sp" />
...@@ -338,7 +374,7 @@ ...@@ -338,7 +374,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:text="ms" android:text="ms"
android:textColor="#FF94949B" android:textColor="#FF94949B"
android:textSize="12sp" /> android:textSize="12sp" />
...@@ -347,7 +383,7 @@ ...@@ -347,7 +383,7 @@
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="2.5dp"
android:gravity="center" android:gravity="center"
android:text="网络延迟" android:text="网络延迟"
android:textColor="#FF707386" android:textColor="#FF707386"
...@@ -355,13 +391,14 @@ ...@@ -355,13 +391,14 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_alignParentRight="true"
android:layout_marginRight="18.5dp"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="horizontal">
...@@ -369,7 +406,7 @@ ...@@ -369,7 +406,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:text="1" android:text="1"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="16sp" /> android:textSize="16sp" />
...@@ -377,158 +414,163 @@ ...@@ -377,158 +414,163 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center_vertical"
android:text="%" android:text="%"
android:textColor="#FF94949B" android:textColor="#FF94949B"
android:textSize="12sp" /> android:textSize="12sp" />
</LinearLayout> </LinearLayout>
<TextView <TextView
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="2.5dp"
android:gravity="center" android:gravity="center"
android:text="丢包率" android:text="丢包率"
android:textColor="#FF707386" android:textColor="#FF707386"
android:textSize="13sp" /> android:textSize="13sp" />
</LinearLayout> </LinearLayout>
</com.xuexiang.xui.widget.layout.XUILinearLayout> </com.xuexiang.xui.widget.layout.XUIRelativeLayout>
<com.xuexiang.xui.widget.layout.XUILinearLayout <com.xuexiang.xui.widget.layout.XUILinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:background="#252736" android:background="#252736"
android:orientation="vertical" android:orientation="vertical"
android:padding="10dp" android:paddingLeft="12dp"
android:paddingRight="10dp"
app:xui_radius="10dp"> app:xui_radius="10dp">
<LinearLayout <LinearLayout
android:layout_marginTop="13dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:orientation="horizontal" android:layout_height="wrap_content"
android:layout_height="wrap_content"> android:orientation="horizontal">
<View <View
android:layout_width="6dp" android:layout_width="6dp"
android:layout_gravity="center"
android:layout_height="6dp" android:layout_height="6dp"
android:background="@mipmap/circle_lt" android:layout_gravity="center"
/> android:background="@mipmap/circle_lt" />
<TextView <TextView
android:layout_marginLeft="5dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="加速助手" android:text="加速助手"
android:textColor="#FF999CC7" android:textColor="#FF999CC7"
android:textSize="13sp" android:textSize="13sp" />
/>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="horizontal" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="11dp"
android:layout_height="wrap_content"> android:orientation="horizontal">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="vertical" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:layout_height="wrap_content"> android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="开启双通道极限加速模式" android:text="开启双通道极限加速模式"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:textSize="14sp" android:textSize="14sp" />
/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="3dp"
android:text="同时使用双通道式,极大提升稳定性,改善掉线和红延迟" android:text="同时使用双通道式,极大提升稳定性,改善掉线和红延迟"
android:textColor="#FF707386" android:textColor="#FF707386"
android:textSize="11sp"/> android:textSize="11sp" />
</LinearLayout> </LinearLayout>
<com.xuexiang.xui.widget.button.roundbutton.RoundButton <com.xuexiang.xui.widget.button.roundbutton.RoundButton
android:layout_width="70dp" android:layout_width="70dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center"
android:text="开启"
android:textColor="#FFD8CFCF" android:textColor="#FFD8CFCF"
android:textSize="11sp" android:textSize="11sp"
android:gravity="center"
app:rb_backgroundColor="@color/btn_blue_1" app:rb_backgroundColor="@color/btn_blue_1"
android:text="开启" app:rb_radius="10dp" />
app:rb_radius="10dp"/>
</LinearLayout> </LinearLayout>
<View <View
android:layout_marginTop="10dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0.5dp" android:layout_height="0.5dp"
android:background="#FF4F526A" android:layout_marginTop="11dp"
/> android:background="#FF4F526A" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="horizontal" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="10dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_height="wrap_content"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="84dp" android:layout_width="84dp"
android:layout_height="20dp" android:layout_height="20dp"
android:layout_weight="1"
android:text="防止加速掉线" android:text="防止加速掉线"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:layout_weight="1" android:textSize="14sp" />
android:textSize="14sp"
/>
<com.xuexiang.xui.widget.button.roundbutton.RoundButton <com.xuexiang.xui.widget.button.roundbutton.RoundButton
android:layout_width="70dp" android:layout_width="70dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center"
android:text="查看教程"
android:textColor="#FFD8CFCF" android:textColor="#FFD8CFCF"
android:textSize="11sp" android:textSize="11sp"
android:gravity="center"
app:rb_backgroundColor="@color/btn_blue_1" app:rb_backgroundColor="@color/btn_blue_1"
android:text="查看教程" app:rb_radius="10dp" />
app:rb_radius="10dp"/>
</LinearLayout> </LinearLayout>
<View <View
android:layout_marginTop="10dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0.5dp" android:layout_height="0.5dp"
android:background="#FF4F526A" android:layout_marginTop="10dp"
/> android:background="#FF4F526A" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="horizontal" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="24dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_height="wrap_content"> android:orientation="horizontal">
<TextView <TextView
android:layout_width="84dp" android:layout_width="wrap_content"
android:layout_height="20dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:text="防止TT加速失效" android:text="防止TT加速失效"
android:textColor="#FFFFFFFF" android:textColor="#FFFFFFFF"
android:layout_weight="1" android:textSize="14sp" />
android:textSize="14sp"
/>
<com.xuexiang.xui.widget.button.roundbutton.RoundButton <com.xuexiang.xui.widget.button.roundbutton.RoundButton
android:layout_width="70dp" android:layout_width="70dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center"
android:text="查看教程"
android:textColor="#FFD8CFCF" android:textColor="#FFD8CFCF"
android:textSize="11sp" android:textSize="11sp"
android:gravity="center"
app:rb_backgroundColor="@color/btn_blue_1" app:rb_backgroundColor="@color/btn_blue_1"
android:text="查看教程" app:rb_radius="10dp" />
app:rb_radius="10dp"/>
</LinearLayout> </LinearLayout>
...@@ -548,9 +590,8 @@ ...@@ -548,9 +590,8 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingTop="10dp"> android:paddingTop="15.25dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -559,8 +600,8 @@ ...@@ -559,8 +600,8 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:layout_width="52dp" android:layout_width="wrap_content"
android:layout_height="18.5dp" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:text="综合提速" android:text="综合提速"
android:textColor="#FF999CC7" android:textColor="#FF999CC7"
...@@ -570,13 +611,13 @@ ...@@ -570,13 +611,13 @@
android:layout_width="35dp" android:layout_width="35dp"
android:layout_height="35dp" android:layout_height="35dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp" android:layout_marginTop="12dp"
android:background="@mipmap/icon_ts" /> android:background="@mipmap/icon_ts" />
<LinearLayout <LinearLayout
android:layout_marginTop="10dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="horizontal">
...@@ -605,8 +646,8 @@ ...@@ -605,8 +646,8 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:layout_width="52dp" android:layout_width="wrap_content"
android:layout_height="18.5dp" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:text="网络延迟" android:text="网络延迟"
android:textColor="#FF999CC7" android:textColor="#FF999CC7"
...@@ -616,13 +657,13 @@ ...@@ -616,13 +657,13 @@
android:layout_width="35dp" android:layout_width="35dp"
android:layout_height="35dp" android:layout_height="35dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp" android:layout_marginTop="12dp"
android:background="@mipmap/icon_time_out" /> android:background="@mipmap/icon_time_out" />
<LinearLayout <LinearLayout
android:layout_marginTop="10dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="horizontal">
...@@ -652,9 +693,9 @@ ...@@ -652,9 +693,9 @@
<TextView <TextView
android:layout_width="52dp" android:layout_width="wrap_content"
android:layout_height="18.5dp" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center"
android:text="丢包率" android:text="丢包率"
android:textColor="#FF999CC7" android:textColor="#FF999CC7"
android:textSize="13sp" /> android:textSize="13sp" />
...@@ -662,14 +703,14 @@ ...@@ -662,14 +703,14 @@
<ImageView <ImageView
android:layout_width="35dp" android:layout_width="35dp"
android:layout_height="35dp" android:layout_height="35dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center"
android:layout_marginTop="10dp" android:layout_marginTop="12dp"
android:background="@mipmap/icon_miss" /> android:background="@mipmap/icon_miss" />
<LinearLayout <LinearLayout
android:layout_marginTop="10dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center" android:gravity="center"
android:orientation="horizontal"> android:orientation="horizontal">
...@@ -696,12 +737,16 @@ ...@@ -696,12 +737,16 @@
</com.xuexiang.xui.widget.layout.XUILinearLayout> </com.xuexiang.xui.widget.layout.XUILinearLayout>
</RelativeLayout> </RelativeLayout>
<ImageView <ImageView
android:id="@+id/btnQuick" android:id="@+id/btnQuick"
android:layout_width="300dp" android:layout_width="match_parent"
android:layout_height="40dp" android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_height="43dp"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_margin="20dp" android:layout_marginTop="15dp"
android:layout_marginBottom="24dp"
android:background="@mipmap/quick_start" /> android:background="@mipmap/quick_start" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="32dp"
android:layout_height="22.5dp">
<ImageView
android:layout_alignParentBottom="true"
android:id="@+id/tab_icon"
android:layout_width="32dp"
android:layout_height="10.5dp"
android:src="@drawable/tab_bg" />
<com.google.android.material.textview.MaterialTextView
android:id="@android:id/text1"
android:layout_centerInParent="true"
android:textSize="16sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/tab_color" />
</RelativeLayout>
\ No newline at end of file
...@@ -11,6 +11,6 @@ ...@@ -11,6 +11,6 @@
<color name="nr_gray">#272934</color> <color name="nr_gray">#272934</color>
<color name="btn_blue_1">#FF3B4FBE</color> <color name="btn_blue_1">#FF3B4FBE</color>
<color name="btn_blue_2">#685FF5</color> <color name="btn_blue_2">#685FF5</color>
<color name="transparent">#00000000</color>
</resources> </resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--DialogTheme,用于将Activity作为Dialog的主题-->
<style name="DialogTheme" parent="XUITheme.Phone"><!--name是我们在使用时要用到的资源的标志,parent是指当前的样式所继承的父类样式-->
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowNoTitle">true</item><!--隐藏标题栏-->
<item name="android:background">@color/transparent</item>
<item name="android:windowBackground">@color/transparent
</item><!--这儿也很重要啊,我这儿用了一张透明的.9.png的图,当然用#00000000也是可以的,否则的话这儿出来后有一个黑色的背景-->
<item name="android:backgroundDimEnabled">false</item>
</style>
<style name="MyTablayoutstyle" parent="Base.Widget.Design.TabLayout">
<item name="tabIndicatorHeight">0dp</item>
<item name="tabSelectedTextColor">@color/black</item>
<item name="android:textSize">16sp</item>
<item name="android:textColor">#FF9E9E9E</item>
</style>
</resources>
\ No newline at end of file
...@@ -39,11 +39,11 @@ ...@@ -39,11 +39,11 @@
<!--标题栏两侧文字的padding,默认14dp--> <!--标题栏两侧文字的padding,默认14dp-->
<item name="xpage_actionbar_side_text_padding">16dp</item> <item name="xpage_actionbar_side_text_padding">16dp</item>
<item name="XPageTitleBarStyle">@style/XPageTitleBar.Custom</item> <item name="XPageTitleBarStyle">@style/XPageTitleBar.Custom</item>
</style> </style>
<style name="XPageTitleBar.Custom"> <style name="XPageTitleBar.Custom">
<item name="tb_immersive">false</item> <item name="tb_immersive">false</item>
<item name="tb_centerGravity">center</item> <item name="tb_centerGravity">center</item>
......
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="umeng_cache" path="umeng_cache"/>
<!-- QQ 官方分享SDK 共享路径 -->
<root-path name="opensdk_root" path=""/>
<external-files-path name="opensdk_external" path="Images/tmp"/>
</paths>
\ No newline at end of file
...@@ -6,6 +6,7 @@ buildscript { ...@@ -6,6 +6,7 @@ buildscript {
maven { maven {
url "https://nexus.sky-shark.com/repository/ccnet-group/" url "https://nexus.sky-shark.com/repository/ccnet-group/"
} }
maven { url 'https://repo1.maven.org/maven2/'}
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:4.2.2' classpath 'com.android.tools.build:gradle:4.2.2'
...@@ -22,6 +23,7 @@ allprojects { ...@@ -22,6 +23,7 @@ allprojects {
url "https://nexus.sky-shark.com/repository/ccnet-group/" url "https://nexus.sky-shark.com/repository/ccnet-group/"
} }
google() google()
maven { url 'https://repo1.maven.org/maven2/'}
maven { maven {
url "https://jitpack.io" url "https://jitpack.io"
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment