leiyun 3 лет назад
Родитель
Сommit
5ab3fb589c
38 измененных файлов: 558 добавлений и 96 удалений
  1. +1
    -1
      .idea/.name
  2. +17
    -0
      .idea/deploymentTargetDropDown.xml
  3. +6
    -0
      .idea/misc.xml
  4. +2
    -2
      app/build.gradle
  5. +1
    -1
      app/src/main/AndroidManifest.xml
  6. +5
    -0
      app/src/main/java/com/yzx/escreen/App.kt
  7. +210
    -5
      app/src/main/java/com/yzx/escreen/MainActivity.kt
  8. +11
    -1
      app/src/main/java/com/yzx/escreen/activity/base/BaseActivity.kt
  9. +1
    -0
      app/src/main/java/com/yzx/escreen/config/Config.kt
  10. +130
    -39
      app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt
  11. +20
    -8
      app/src/main/java/com/yzx/escreen/fragment/MyFragment.kt
  12. +14
    -0
      app/src/main/java/com/yzx/escreen/presenter/base/JsonCallBack.java
  13. +44
    -3
      app/src/main/java/com/yzx/escreen/utils/KotlinX.kt
  14. +1
    -1
      app/src/main/java/com/yzx/escreen/utils/Monitor.kt
  15. +1
    -1
      app/src/main/res/drawable/shape_corner.xml
  16. +1
    -1
      app/src/main/res/drawable/shape_corner_plain.xml
  17. +41
    -0
      app/src/main/res/layout/dialog_test.xml
  18. +7
    -4
      app/src/main/res/layout/fragment_home.xml
  19. +1
    -1
      app/src/main/res/layout/fragment_my.xml
  20. +15
    -7
      app/src/main/res/layout/layout_empty.xml
  21. +15
    -0
      app/src/main/res/layout/layout_loading.xml
  22. +9
    -9
      app/src/main/res/layout/version_dialog.xml
  23. +0
    -5
      app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  24. +0
    -5
      app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  25. Двоичные данные
      app/src/main/res/mipmap-hdpi/ic_launcher.png
  26. Двоичные данные
      app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  27. Двоичные данные
      app/src/main/res/mipmap-mdpi/empty.png
  28. Двоичные данные
      app/src/main/res/mipmap-mdpi/ic_launcher.png
  29. Двоичные данные
      app/src/main/res/mipmap-mdpi/ic_launcher_round.png
  30. Двоичные данные
      app/src/main/res/mipmap-xhdpi/ic_launcher.png
  31. Двоичные данные
      app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  32. Двоичные данные
      app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  33. Двоичные данные
      app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  34. Двоичные данные
      app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  35. Двоичные данные
      app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  36. +1
    -1
      app/src/main/res/values/strings.xml
  37. +3
    -0
      app/src/main/res/values/styles.xml
  38. +1
    -1
      settings.gradle

+ 1
- 1
.idea/.name Просмотреть файл

@@ -1 +1 @@
WebEBook
WebScreen

+ 17
- 0
.idea/deploymentTargetDropDown.xml Просмотреть файл

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\Administrator\.android\avd\EScreen_API_27.avd" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-04-24T07:25:04.726554600Z" />
</component>
</project>

+ 6
- 0
.idea/misc.xml Просмотреть файл

@@ -5,6 +5,8 @@
<map> <map>
<entry key="..\:/work/escreen/app/src/main/res/drawable/btn_select.xml" value="0.321" /> <entry key="..\:/work/escreen/app/src/main/res/drawable/btn_select.xml" value="0.321" />
<entry key="..\:/work/escreen/app/src/main/res/drawable/selector_btn_read_setting.xml" value="0.321" /> <entry key="..\:/work/escreen/app/src/main/res/drawable/selector_btn_read_setting.xml" value="0.321" />
<entry key="..\:/work/escreen/app/src/main/res/drawable/shape_corner.xml" value="0.268" />
<entry key="..\:/work/escreen/app/src/main/res/drawable/shape_corner_plain.xml" value="0.331" />
<entry key="..\:/work/escreen/app/src/main/res/drawable/switch_ios_thumb.xml" value="0.372" /> <entry key="..\:/work/escreen/app/src/main/res/drawable/switch_ios_thumb.xml" value="0.372" />
<entry key="..\:/work/escreen/app/src/main/res/drawable/switch_ios_track_off.xml" value="0.372" /> <entry key="..\:/work/escreen/app/src/main/res/drawable/switch_ios_track_off.xml" value="0.372" />
<entry key="..\:/work/escreen/app/src/main/res/drawable/switch_ios_track_on.xml" value="0.372" /> <entry key="..\:/work/escreen/app/src/main/res/drawable/switch_ios_track_on.xml" value="0.372" />
@@ -17,12 +19,16 @@
<entry key="..\:/work/escreen/app/src/main/res/layout/activity_web.xml" value="0.30483112441214194" /> <entry key="..\:/work/escreen/app/src/main/res/layout/activity_web.xml" value="0.30483112441214194" />
<entry key="..\:/work/escreen/app/src/main/res/layout/dialog_exit.xml" value="0.30483112441214194" /> <entry key="..\:/work/escreen/app/src/main/res/layout/dialog_exit.xml" value="0.30483112441214194" />
<entry key="..\:/work/escreen/app/src/main/res/layout/dialog_leave.xml" value="0.5" /> <entry key="..\:/work/escreen/app/src/main/res/layout/dialog_leave.xml" value="0.5" />
<entry key="..\:/work/escreen/app/src/main/res/layout/dialog_test.xml" value="0.29827742520398914" />
<entry key="..\:/work/escreen/app/src/main/res/layout/fragment_home.xml" value="0.6594650205761317" /> <entry key="..\:/work/escreen/app/src/main/res/layout/fragment_home.xml" value="0.6594650205761317" />
<entry key="..\:/work/escreen/app/src/main/res/layout/fragment_my.xml" value="0.45940721649484534" /> <entry key="..\:/work/escreen/app/src/main/res/layout/fragment_my.xml" value="0.45940721649484534" />
<entry key="..\:/work/escreen/app/src/main/res/layout/layout_empty.xml" value="0.37135416666666665" /> <entry key="..\:/work/escreen/app/src/main/res/layout/layout_empty.xml" value="0.37135416666666665" />
<entry key="..\:/work/escreen/app/src/main/res/layout/layout_leave_step.xml" value="0.4681549573210768" /> <entry key="..\:/work/escreen/app/src/main/res/layout/layout_leave_step.xml" value="0.4681549573210768" />
<entry key="..\:/work/escreen/app/src/main/res/layout/layout_leave_table.xml" value="0.41030092592592593" /> <entry key="..\:/work/escreen/app/src/main/res/layout/layout_leave_table.xml" value="0.41030092592592593" />
<entry key="..\:/work/escreen/app/src/main/res/layout/layout_loading.xml" value="0.30483112441214194" />
<entry key="..\:/work/escreen/app/src/main/res/layout/leave_dialog_title.xml" value="0.37135416666666665" /> <entry key="..\:/work/escreen/app/src/main/res/layout/leave_dialog_title.xml" value="0.37135416666666665" />
<entry key="..\:/work/escreen/app/src/main/res/layout/version_dialog.xml" value="0.30483112441214194" />
<entry key="..\:/work/escreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml" value="0.331" />
</map> </map>
</option> </option>
</component> </component>


+ 2
- 2
app/build.gradle Просмотреть файл

@@ -16,8 +16,8 @@ android {
// minSdkVersion 26 // minSdkVersion 26
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 25 targetSdkVersion 25
versionCode 3
versionName "2.0.1"
versionCode 5
versionName "2.0.3"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"


// ndk { // ndk {


+ 1
- 1
app/src/main/AndroidManifest.xml Просмотреть файл

@@ -33,7 +33,7 @@
android:name="com.yzx.escreen.MainActivity" android:name="com.yzx.escreen.MainActivity"
android:configChanges="orientation|keyboard" android:configChanges="orientation|keyboard"
android:launchMode="singleTask" android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize|stateHidden"
android:windowSoftInputMode="adjustPan|stateHidden"
android:screenOrientation="landscape"> android:screenOrientation="landscape">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />


+ 5
- 0
app/src/main/java/com/yzx/escreen/App.kt Просмотреть файл

@@ -4,10 +4,12 @@ import android.app.Application
import com.blankj.utilcode.util.Utils import com.blankj.utilcode.util.Utils
import com.lzy.okgo.OkGo import com.lzy.okgo.OkGo
import com.lzy.okgo.model.HttpHeaders import com.lzy.okgo.model.HttpHeaders
import com.lzy.okgo.model.HttpParams
import com.tencent.smtt.export.external.TbsCoreSettings import com.tencent.smtt.export.external.TbsCoreSettings
import com.tencent.smtt.sdk.QbSdk import com.tencent.smtt.sdk.QbSdk
import com.umeng.analytics.MobclickAgent import com.umeng.analytics.MobclickAgent
import com.umeng.commonsdk.UMConfigure import com.umeng.commonsdk.UMConfigure
import com.yzx.escreen.config.Config
import com.yzx.escreen.model.User import com.yzx.escreen.model.User




@@ -29,8 +31,11 @@ class App : Application() {
val user = User.getUser() val user = User.getUser()
headers.put("phone",user.phone) headers.put("phone",user.phone)
headers.put("token",user.token) headers.put("token",user.token)
val params = HttpParams()
params.put("app_id",Config.APP_ID)
OkGo.getInstance() OkGo.getInstance()
.addCommonHeaders(headers) .addCommonHeaders(headers)
.addCommonParams(params)
.init(this) .init(this)






+ 210
- 5
app/src/main/java/com/yzx/escreen/MainActivity.kt Просмотреть файл

@@ -1,40 +1,76 @@
package com.yzx.escreen package com.yzx.escreen


import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.Intent import android.content.Intent
import android.text.InputType
import android.util.Log
import android.view.KeyEvent import android.view.KeyEvent
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.widget.ContentLoadingProgressBar
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.allenliu.versionchecklib.v2.AllenVersionChecker
import com.allenliu.versionchecklib.v2.builder.UIData
import com.allenliu.versionchecklib.v2.callback.CustomDownloadingDialogListener
import com.blankj.utilcode.constant.PermissionConstants
import com.blankj.utilcode.util.*
import com.flyco.tablayout.listener.CustomTabEntity import com.flyco.tablayout.listener.CustomTabEntity
import com.flyco.tablayout.listener.OnTabSelectListener import com.flyco.tablayout.listener.OnTabSelectListener
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.lzy.okgo.OkGo
import com.lzy.okgo.callback.StringCallback
import com.lzy.okgo.model.Response
import com.qmuiteam.qmui.widget.dialog.QMUIDialog
import com.yzx.escreen.activity.WebActivity import com.yzx.escreen.activity.WebActivity
import com.yzx.escreen.activity.base.BaseActivity import com.yzx.escreen.activity.base.BaseActivity
import com.yzx.escreen.config.Config import com.yzx.escreen.config.Config
import com.yzx.escreen.fragment.HomeFragment import com.yzx.escreen.fragment.HomeFragment
import com.yzx.escreen.fragment.MyFragment import com.yzx.escreen.fragment.MyFragment
import com.yzx.escreen.model.BaseBean
import com.yzx.escreen.model.TabEntity import com.yzx.escreen.model.TabEntity
import com.yzx.escreen.model.User import com.yzx.escreen.model.User
import com.yzx.escreen.model.Version
import com.yzx.escreen.presenter.base.BasePresenter import com.yzx.escreen.presenter.base.BasePresenter
import com.yzx.escreen.utils.hideNavigationBar
import com.yzx.escreen.widget.BaseDialog
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import org.jetbrains.anko.find
import org.jetbrains.anko.toast
import java.util.*
import kotlin.system.exitProcess




/** /**
* Yun.Lei * Yun.Lei
* 2020年5月6日14:49:10 * 2020年5月6日14:49:10
*/ */
class MainActivity : BaseActivity<BasePresenter<*>>() {
class MainActivity : BaseActivity<BasePresenter<*>>(), NetworkUtils.OnNetworkStatusChangedListener {




override val inflateId: Int override val inflateId: Int
get() = R.layout.activity_main get() = R.layout.activity_main

var netLoadingDialog:QMUIDialog? = null
var netErrorDialog:QMUIDialog? = null
private val netLoadingRun = Runnable {
showNetworkError()
}


override fun initView() { override fun initView() {
if (!User.isLogin()) {
WebActivity.active(this, "${Config.OA_URL}/login")
finish()

if(NetworkUtils.isConnected()){
if (!User.isLogin()) {
WebActivity.active(this, "${Config.OA_URL}/login")
finish()
}
checkVersion()
}else{
showNetworkLoading() //显示网络检查中
} }
val tabData = arrayListOf<CustomTabEntity>() val tabData = arrayListOf<CustomTabEntity>()
tabData.add(TabEntity("首页", R.mipmap.home_select, R.mipmap.home_unselect)) tabData.add(TabEntity("首页", R.mipmap.home_select, R.mipmap.home_unselect))
@@ -51,6 +87,7 @@ class MainActivity : BaseActivity<BasePresenter<*>>() {
tabLayout.setOnTabSelectListener(object : OnTabSelectListener { tabLayout.setOnTabSelectListener(object : OnTabSelectListener {
override fun onTabSelect(position: Int) { override fun onTabSelect(position: Int) {
viewPager2.currentItem = position viewPager2.currentItem = position
KeyboardUtils.hideSoftInput( viewPager2)
} }


override fun onTabReselect(position: Int) { override fun onTabReselect(position: Int) {
@@ -60,10 +97,55 @@ class MainActivity : BaseActivity<BasePresenter<*>>() {
} }


override fun initData() { override fun initData() {
NetworkUtils.registerNetworkStatusChangedListener(this)
PermissionUtils.permissionGroup(PermissionConstants.STORAGE)
.rationale { activity, shouldRequest ->


}.callback(object : PermissionUtils.FullCallback {
override fun onGranted(granted: MutableList<String>) {
LogUtils.d("权限通过", granted)
}

override fun onDenied(
deniedForever: MutableList<String>,
denied: MutableList<String>
) {
LogUtils.d("权限拒绝", denied)
}

}).theme { activity -> ScreenUtils.setFullScreen(activity) }
.request()


} }


private fun showNetworkError(){
val builder = QMUIDialog.MessageDialogBuilder(this)

builder.setMessage("你还没有连接网络,请先连接网络!")
.setTitle("温馨提示")
.addAction("去设置"
) { dialog, index ->
NetworkUtils.openWirelessSettings()
}
.setCancelable(false)
.setCanceledOnTouchOutside(false)
netErrorDialog = builder.show()
netErrorDialog?.hideNavigationBar()
}

private fun showNetworkLoading(){
val builder = QMUIDialog.MessageDialogBuilder(this)

builder.setMessage("网络检查中,请稍后...")
.setTitle("温馨提示")
.setCancelable(false)
.setCanceledOnTouchOutside(false)
netLoadingDialog = builder.show()
netLoadingDialog?.hideNavigationBar()

viewPager2.postDelayed(netLoadingRun,5000)
}

override fun initPresenter(): BasePresenter<*>? { override fun initPresenter(): BasePresenter<*>? {
return null return null
} }
@@ -83,6 +165,129 @@ class MainActivity : BaseActivity<BasePresenter<*>>() {
} }
return super.onKeyUp(keyCode, event) return super.onKeyUp(keyCode, event)
} }

override fun onDisconnected() {
showNetworkError()
}

override fun onConnected(networkType: NetworkUtils.NetworkType?) {
netLoadingDialog?.apply {
if(isShowing){
dismiss()
}
}
netErrorDialog?.apply {
if(isShowing){
dismiss()
}
}
if (!User.isLogin()) {
WebActivity.active(this, "${Config.OA_URL}/login?logout=1")
finish()
}
checkVersion()
}

private fun checkVersion(userCheck: Boolean = false): Unit {
val BASE_URL = Config.BASE_URL
OkGo.post<String>("$BASE_URL/parent/common/getInkBottleMaxVersion")
.tag(this)
.params("app_id",Config.APP_ID)
.execute(object : StringCallback() {

override fun onSuccess(response: Response<String>) {
val json = response.body()
Log.d("checkVersion", "onSuccess: ${json}")
val resultType = object : TypeToken<BaseBean<Version>>() {}.type
val gson = Gson()
val res = gson.fromJson<BaseBean<Version>>(json, resultType)
if (res.code == 0) {
val appVersion = AppUtils.getAppVersionName()
val appVersionCode = AppUtils.getAppVersionCode()
val versionCode = res?.data?.version_code ?: 0
val curr = Date().time
val lastTipTime = SPUtils.getInstance()
.getLong("last_tip_time${res.data.version_code}", 0)
if (versionCode > appVersionCode) { //有新版本
when {
res.data.type == 1 -> { //强制升级
updateApp(res.data)
}
curr - lastTipTime > 24 * 60 * 60 * 1000 -> { //非强制一天以内提示一次
updateApp(res.data)
}
userCheck -> { //
updateApp(res.data)
}
}

} else {
if (userCheck) {
toast("已经是最新版本了!")
}
}
}
}

})


}


private fun updateApp(version: Version) {
AllenVersionChecker
.getInstance()
.downloadOnly(
UIData.create()
.setTitle("检测到新版本")
.setContent(version.explain)
.setDownloadUrl(version.app_src)
)
.setCustomVersionDialogListener { context, versionBundle ->
val dialog = BaseDialog(context, R.style.BaseDialog, R.layout.version_dialog)
val title = dialog.find<TextView>(R.id.tv_title)
title.text = "检测到新版本"
val content = dialog.find<TextView>(R.id.tv_msg)
content.text = version.explain
val cancelBtn = dialog.find<View>(R.id.cancel_btn)
if (version.type == 1) {
cancelBtn.visibility = View.GONE
}
dialog.hideNavigationBar()
return@setCustomVersionDialogListener dialog
}
.setOnCancelListener {
SPUtils.getInstance().put("last_tip_time${version.version_code}", Date().time)
}
.setCustomDownloadingDialogListener(object : CustomDownloadingDialogListener {
@SuppressLint("SetTextI18n")
override fun updateUI(dialog: Dialog?, progress: Int, versionBundle: UIData?) {
val tvProgress: TextView = dialog!!.findViewById(R.id.tv_progress)
val progressBar: ContentLoadingProgressBar = dialog.findViewById(R.id.pb)
progressBar.progress = progress
tvProgress.text = "$progress%"

Log.d("checkVersion", "onSuccess: ${progress}")
}

override fun getCustomDownloadingDialog(
context: Context?,
progress: Int,
versionBundle: UIData?
): Dialog {
val downDialog = BaseDialog(
context!!,
R.style.BaseDialog,
R.layout.download_dialog
)
downDialog.hideNavigationBar()
return downDialog
}

})
.executeMission(this)
}
} }


class HomePagerAdapter(act: AppCompatActivity) : FragmentStateAdapter(act) { class HomePagerAdapter(act: AppCompatActivity) : FragmentStateAdapter(act) {


+ 11
- 1
app/src/main/java/com/yzx/escreen/activity/base/BaseActivity.kt Просмотреть файл

@@ -43,11 +43,12 @@ abstract class BaseActivity<out P : BasePresenter<*>> : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
hideBottomUIMenu()
setContentView(inflateId) setContentView(inflateId)
initView() initView()
initData() initData()
setStatusBar() setStatusBar()
hideBottomUIMenu()
} }


open fun setStatusBar() { open fun setStatusBar() {
@@ -66,6 +67,15 @@ abstract class BaseActivity<out P : BasePresenter<*>> : AppCompatActivity() {
params.systemUiVisibility = params.systemUiVisibility =
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE
window.attributes = params window.attributes = params

// window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
// window.decorView.setOnSystemUiVisibilityChangeListener {
// val uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
// View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
// View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
// View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// window.decorView.systemUiVisibility = uiOptions
// }
} }






+ 1
- 0
app/src/main/java/com/yzx/escreen/config/Config.kt Просмотреть файл

@@ -7,4 +7,5 @@ object Config {
var APP_NAME = BuildConfig.APP_NAME var APP_NAME = BuildConfig.APP_NAME
var M_URL = BuildConfig.M_URL var M_URL = BuildConfig.M_URL
var OA_URL = BuildConfig.OA_URL var OA_URL = BuildConfig.OA_URL
val APP_ID = 602
} }

+ 130
- 39
app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt Просмотреть файл

@@ -5,12 +5,17 @@ import android.content.res.ColorStateList
import android.graphics.Color import android.graphics.Color
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.text.Editable
import android.text.TextWatcher
import android.view.KeyEvent import android.view.KeyEvent
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.core.widget.addTextChangedListener
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.blankj.utilcode.util.KeyboardUtils
import com.blankj.utilcode.util.NetworkUtils
import com.blankj.utilcode.util.SPUtils import com.blankj.utilcode.util.SPUtils
import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
import com.yzx.escreen.R import com.yzx.escreen.R
@@ -23,16 +28,21 @@ import com.yzx.escreen.adapter.HomeListAdapter
import com.yzx.escreen.model.LeaveID import com.yzx.escreen.model.LeaveID
import com.yzx.escreen.presenter.HomePresenter import com.yzx.escreen.presenter.HomePresenter
import com.yzx.escreen.presenter.HomeView import com.yzx.escreen.presenter.HomeView
import com.yzx.escreen.utils.hideNavigationBar
import com.yzx.escreen.utils.setSrc import com.yzx.escreen.utils.setSrc
import com.yzx.escreen.utils.toTime import com.yzx.escreen.utils.toTime
import com.yzx.escreen.widget.BaseDialog import com.yzx.escreen.widget.BaseDialog
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_home.* import kotlinx.android.synthetic.main.fragment_home.*
import kotlinx.android.synthetic.main.layout_loading.*
import kotlinx.android.synthetic.main.layout_loading.view.*
import org.jetbrains.anko.find import org.jetbrains.anko.find
import org.jetbrains.anko.support.v4.act import org.jetbrains.anko.support.v4.act
import org.jetbrains.anko.support.v4.ctx import org.jetbrains.anko.support.v4.ctx
import org.jetbrains.anko.textColor import org.jetbrains.anko.textColor


class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
class HomeFragment : BaseFragment<HomePresenter>(), HomeView,
NetworkUtils.OnNetworkStatusChangedListener {


companion object { companion object {


@@ -63,15 +73,19 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
mHandler.postDelayed(this, 2000) mHandler.postDelayed(this, 2000)
} }
} }
private val refreshRun = Runnable {
refreshData()
}


override val inflateId: Int override val inflateId: Int
get() = R.layout.fragment_home get() = R.layout.fragment_home


override fun initView() { override fun initView() {
NetworkUtils.registerNetworkStatusChangedListener(this)
recyclerView.layoutManager = recyclerView.layoutManager =
LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
recyclerView.adapter = mAdapter recyclerView.adapter = mAdapter
mAdapter.setEmptyView(R.layout.layout_empty)
preTxtBtn.setOnClickListener { pre() } preTxtBtn.setOnClickListener { pre() }
nextTxtBtn.setOnClickListener { next() } nextTxtBtn.setOnClickListener { next() }
allBtn.setOnClickListener { changeStatus(0) } allBtn.setOnClickListener { changeStatus(0) }
@@ -94,6 +108,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
clearBtn.setOnClickListener { clearBtn.setOnClickListener {
keyword = "" keyword = ""
keywordInput.setText("") keywordInput.setText("")
KeyboardUtils.hideSoftInput(keywordInput)
initData() initData()
} }


@@ -120,6 +135,27 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
switchBtnTxt.setOnClickListener { switchBtnTxt.setOnClickListener {
switchBtn.isChecked = !switchBtn.isChecked switchBtn.isChecked = !switchBtn.isChecked
} }
keywordInput.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {

}

override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
if (s != null && s.isNotEmpty()) {
clearBtn.visibility = View.VISIBLE
} else {
clearBtn.visibility = View.INVISIBLE
}
}

override fun afterTextChanged(s: Editable?) {

}

})
filterLayout.setOnClickListener {
KeyboardUtils.hideSoftInput( keywordInput)
}
} }


private fun changeSwitchBtnTxt(isChecked: Boolean) { private fun changeSwitchBtnTxt(isChecked: Boolean) {
@@ -178,6 +214,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
} }
} }
dialog.show() dialog.show()
dialog.hideNavigationBar()
dialog.setLeaveId(detail.id) dialog.setLeaveId(detail.id)
mShowDialogList.add(dialog) mShowDialogList.add(dialog)
} }
@@ -197,6 +234,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
} }


private fun changeStatus(status: Int) { private fun changeStatus(status: Int) {
KeyboardUtils.hideSoftInput( keywordInput)
if (isLoading) { if (isLoading) {
return return
} }
@@ -212,8 +250,41 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
override fun initData() { override fun initData() {


mPager.page_no = 1 mPager.page_no = 1
isLoading = true
mPresenter?.getLeaveList(mPager.page_no, keyword, status)
if (NetworkUtils.isConnected()) {
showEmpty(1)
isLoading = true
mPresenter?.getLeaveList(mPager.page_no, keyword, status)
} else {
showEmpty(2)
}

}

/**
* type 1 loading 2 neterror 3 empty
*/
private fun showEmpty(type: Int) {
when (type) {
1 -> {
mAdapter.setEmptyView(R.layout.layout_loading)
mAdapter.emptyLayout?.apply {
this.QMUIEmptyView.setLoadingShowing(true)
this.QMUIEmptyView.setTitleText("数据加载中")
}
}
2 -> {
mAdapter.setEmptyView(R.layout.layout_loading)
mAdapter.emptyLayout?.apply {
this.QMUIEmptyView.show(false, null, "网络连接异常,请检查", "去设置") {
NetworkUtils.openWirelessSettings()
}
}
}
3 -> {
mAdapter.setEmptyView(R.layout.layout_empty)
}
}

} }


private fun refreshData() { private fun refreshData() {
@@ -225,6 +296,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
} }


private fun pre() { private fun pre() {
KeyboardUtils.hideSoftInput( keywordInput)
if (isLoading) { if (isLoading) {
return return
} }
@@ -236,6 +308,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
} }


private fun next() { private fun next() {
KeyboardUtils.hideSoftInput( keywordInput)
if (isLoading) { if (isLoading) {
return return
} }
@@ -250,29 +323,37 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {


@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun onLeaveListSuccess(list: MutableList<StuLeave>, pager: Pager) { override fun onLeaveListSuccess(list: MutableList<StuLeave>, pager: Pager) {
mAdapter.setList(list)
mPager = pager
pageTv.text = "${pager.page_no} / ${pager.total_pages}"
totalTv.text = "共${pager.total_count}条"

val disabledColor = Color.parseColor("#666666")
val color = Color.parseColor("#3ca0e9")
if (pager.page_no <= 1) {
preTxtBtn.textColor = disabledColor
} else {
preTxtBtn.textColor = color
}
pageTv?.apply {
mAdapter.setList(list)
mPager = pager
pageTv.text = "${pager.page_no} / ${pager.total_pages}"
totalTv.text = "共${pager.total_count}条"

val disabledColor = Color.parseColor("#666666")
val color = Color.parseColor("#3ca0e9")
if (pager.page_no <= 1) {
preTxtBtn.textColor = disabledColor
} else {
preTxtBtn.textColor = color
}


if (pager.page_no >= pager.total_pages) {
nextTxtBtn.textColor = disabledColor
} else {
nextTxtBtn.textColor = color
if (pager.page_no >= pager.total_pages) {
nextTxtBtn.textColor = disabledColor
} else {
nextTxtBtn.textColor = color
}
isLoading = false
showEmpty(3)
pageTv.postDelayed({
refreshData()
}, 30 * 1000)
} }
isLoading = false
}


pageTv.postDelayed({
refreshData()
}, 30 * 1000)
override fun onStop() {
super.onStop()
pageTv.removeCallbacks(refreshRun)
mHandler.removeCallbacks(runnable)
} }


override fun onLeaveListError(error: String) { override fun onLeaveListError(error: String) {
@@ -280,23 +361,25 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
} }


override fun onLeaveDetailSuccess(detail: StuLeave) { override fun onLeaveDetailSuccess(detail: StuLeave) {
val item = mShowList.find { it.id == detail.id }
if (item != null) {
//替换新的数据
val index = mShowList.indexOf(item)
mShowList[index] = detail

//移除原本的dialog
val dialogIndex = mShowDialogList.indexOfFirst { it.getLeaveId() == item.id }
if (dialogIndex > -1) {
mShowDialogList[dialogIndex].hide()
mShowDialogList.removeAt(dialogIndex)
}
pageTv?.apply {
val item = mShowList.find { it.id == detail.id }
if (item != null) {
//替换新的数据
val index = mShowList.indexOf(item)
mShowList[index] = detail

//移除原本的dialog
val dialogIndex = mShowDialogList.indexOfFirst { it.getLeaveId() == item.id }
if (dialogIndex > -1) {
mShowDialogList[dialogIndex].hide()
mShowDialogList.removeAt(dialogIndex)
}


} else {
mShowList.add(detail)
} else {
mShowList.add(detail)
}
showLeaveDialog(detail)
} }
showLeaveDialog(detail)
} }


override fun onLeaveDetailError(error: String) { override fun onLeaveDetailError(error: String) {
@@ -308,4 +391,12 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView {
mPresenter?.getDetail(leaveID.id) mPresenter?.getDetail(leaveID.id)
} }
} }

override fun onDisconnected() {

}

override fun onConnected(networkType: NetworkUtils.NetworkType?) {
refreshData()
}
} }

+ 20
- 8
app/src/main/java/com/yzx/escreen/fragment/MyFragment.kt Просмотреть файл

@@ -1,6 +1,7 @@
package com.yzx.escreen.fragment package com.yzx.escreen.fragment


import android.text.InputType import android.text.InputType
import com.blankj.utilcode.util.KeyboardUtils
import com.blankj.utilcode.util.LogUtils import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ScreenUtils import com.blankj.utilcode.util.ScreenUtils
import com.blankj.utilcode.util.ToastUtils import com.blankj.utilcode.util.ToastUtils
@@ -15,6 +16,7 @@ import com.yzx.escreen.model.TeacherInfo
import com.yzx.escreen.model.User import com.yzx.escreen.model.User
import com.yzx.escreen.presenter.MyPresenter import com.yzx.escreen.presenter.MyPresenter
import com.yzx.escreen.presenter.MyView import com.yzx.escreen.presenter.MyView
import com.yzx.escreen.utils.hideNavigationBar
import kotlinx.android.synthetic.main.activity_home.* import kotlinx.android.synthetic.main.activity_home.*
import kotlinx.android.synthetic.main.fragment_my.* import kotlinx.android.synthetic.main.fragment_my.*
import org.jetbrains.anko.startActivity import org.jetbrains.anko.startActivity
@@ -53,24 +55,30 @@ class MyFragment : BaseFragment<MyPresenter>(), MyView {


builder.setPlaceholder("输入密码") builder.setPlaceholder("输入密码")
.setTitle("请输入密码") .setTitle("请输入密码")
.setInputType(InputType.TYPE_CLASS_PHONE)
.addAction("取消"
) { dialog, index -> dialog?.dismiss() }
.addAction("确定"
.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD or InputType.TYPE_CLASS_NUMBER)
.addAction(
"取消"
) { dialog, index ->
KeyboardUtils.hideSoftInput(builder.editText)
dialog?.dismiss()
}
.addAction(
"确定"
) { dialog, index -> ) { dialog, index ->
val text = builder.editText.text val text = builder.editText.text
LogUtils.d(text) LogUtils.d(text)
LogUtils.d("112233".equals(text)) LogUtils.d("112233".equals(text))
if("112233" == text.toString()){
if ("112233" == text.toString()) {
activity?.finish() activity?.finish()
exitProcess(0) exitProcess(0)
}else{
} else {
ToastUtils.showShort("密码不正确") ToastUtils.showShort("密码不正确")
} }
} }
.setCancelable(false) .setCancelable(false)
.setCanceledOnTouchOutside(false) .setCanceledOnTouchOutside(false)
.show()
val dialog = builder.show()
dialog.hideNavigationBar()
} }


override fun initData() { override fun initData() {
@@ -104,7 +112,11 @@ class MyFragment : BaseFragment<MyPresenter>(), MyView {
val group = unit.teacherUnitGroups[0] val group = unit.teacherUnitGroups[0]
unitName.text = unit.unit_name unitName.text = unit.unit_name
groupName.text = group.group_name groupName.text = group.group_name
jobType.text = group.job_type_name
jobType.text = if (group.job_type_name.isNotEmpty()) {
group.job_type_name
} else {
"-"
}
isLeader.text = if (group.is_leader == 0) { isLeader.text = if (group.is_leader == 0) {
"是" "是"
} else { } else {


+ 14
- 0
app/src/main/java/com/yzx/escreen/presenter/base/JsonCallBack.java Просмотреть файл

@@ -1,9 +1,17 @@
package com.yzx.escreen.presenter.base; package com.yzx.escreen.presenter.base;


import android.content.Intent;

import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.AppUtils;
import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonReader;
import com.lzy.okgo.callback.AbsCallback; import com.lzy.okgo.callback.AbsCallback;
import com.lzy.okgo.model.HttpHeaders; import com.lzy.okgo.model.HttpHeaders;
import com.lzy.okgo.request.base.Request; import com.lzy.okgo.request.base.Request;
import com.yzx.escreen.App;
import com.yzx.escreen.MainActivity;
import com.yzx.escreen.activity.WebActivity;
import com.yzx.escreen.config.Config;
import com.yzx.escreen.model.User; import com.yzx.escreen.model.User;
import com.yzx.escreen.utils.Monitor; import com.yzx.escreen.utils.Monitor;


@@ -137,6 +145,12 @@ public abstract class JsonCallBack<T> extends AbsCallback<T> {
//noinspection unchecked //noinspection unchecked
return (T) yzxResponse; return (T) yzxResponse;
} else if (code == 406) { } else if (code == 406) {
User.Companion.clearUserInfo();
Intent intent = new Intent(App.Companion.getContext(),WebActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("link", Config.INSTANCE.getOA_URL()+"/login?logout=1");
ActivityUtils.startActivity(intent);
ActivityUtils.finishActivity(MainActivity.class);
throw new IllegalStateException("错误代码:" + code + ",错误信息:" + yzxResponse.msg); throw new IllegalStateException("错误代码:" + code + ",错误信息:" + yzxResponse.msg);
} else { } else {
// 直接将服务端的错误信息抛出,onError中可以获取 // 直接将服务端的错误信息抛出,onError中可以获取


+ 44
- 3
app/src/main/java/com/yzx/escreen/utils/KotlinX.kt Просмотреть файл

@@ -1,10 +1,10 @@
package com.yzx.escreen.utils package com.yzx.escreen.utils


import android.app.Dialog
import android.view.View
import android.widget.ImageView import android.widget.ImageView
import com.blankj.utilcode.util.TimeUtils import com.blankj.utilcode.util.TimeUtils
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import java.lang.Float.parseFloat
import java.lang.Integer.parseInt
import java.util.* import java.util.*


fun ImageView.setSrc(identity: String, key: String) { fun ImageView.setSrc(identity: String, key: String) {
@@ -56,4 +56,45 @@ fun Int.durationStr(): String {
} }
return "${day}天${hour.toInt()}小时" return "${day}天${hour.toInt()}小时"
} }
}
}

fun Dialog.hideNavigationBar(){
val window = this.window
window?.apply {
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
window.decorView.setOnSystemUiVisibilityChangeListener {
val uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
window.decorView.systemUiVisibility = uiOptions
}
}
}


























+ 1
- 1
app/src/main/java/com/yzx/escreen/utils/Monitor.kt Просмотреть файл

@@ -61,7 +61,7 @@ object Monitor {
"errorMessage:${errorMessage}\n" + "errorMessage:${errorMessage}\n" +
"errorStack:\n${errorStack}" "errorStack:\n${errorStack}"
val stringBuffer = StringBuffer() val stringBuffer = StringBuffer()
stringBuffer.append("墨水屏异常上报:").append("\n")
stringBuffer.append("电子屏异常上报:").append("\n")
stringBuffer.append("系统信息:").append(AppUtils.getAppInfo().versionName).append("\n") stringBuffer.append("系统信息:").append(AppUtils.getAppInfo().versionName).append("\n")
val user = User.getUser() val user = User.getUser()
if (user.user_id > 0) { if (user.user_id > 0) {


+ 1
- 1
app/src/main/res/drawable/shape_corner.xml Просмотреть файл

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"></corners> <corners android:radius="5dp"></corners>
<solid android:color="#000"></solid>
<solid android:color="@color/colorPrimary"></solid>
</shape> </shape>

+ 1
- 1
app/src/main/res/drawable/shape_corner_plain.xml Просмотреть файл

@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"></corners> <corners android:radius="5dp"></corners>
<solid android:color="#fff"></solid> <solid android:color="#fff"></solid>
<stroke android:color="#000" android:width="1px"></stroke>
<stroke android:color="@color/gray_1" android:width="1px"></stroke>
</shape> </shape>

+ 41
- 0
app/src/main/res/layout/dialog_test.xml Просмотреть файл

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<FrameLayout
android:id="@+id/cancel_btn"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginEnd="15dp"
android:layout_height="wrap_content">

<Button
android:id="@id/versionchecklib_version_dialog_cancel"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:background="@drawable/shape_corner_plain"
android:text="取消"
android:textSize="20sp"
android:textColor="@color/gray" />
</FrameLayout>

<Button
android:id="@id/versionchecklib_version_dialog_commit"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:background="@drawable/shape_corner"
android:text="立即升级"
android:textSize="20sp"
android:textColor="@android:color/white" />

</LinearLayout>
</LinearLayout>

+ 7
- 4
app/src/main/res/layout/fragment_home.xml Просмотреть файл

@@ -38,17 +38,19 @@
android:thumb="@drawable/switch_ios_thumb" android:thumb="@drawable/switch_ios_thumb"
android:track="@drawable/switch_ios_track_selector" android:track="@drawable/switch_ios_track_selector"
tools:ignore="UseSwitchCompatOrMaterialXml" /> tools:ignore="UseSwitchCompatOrMaterialXml" />

<TextView <TextView
android:id="@+id/switchBtnTxt" android:id="@+id/switchBtnTxt"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="自动弹出请假单"
android:layout_marginStart="@dimen/d_10" android:layout_marginStart="@dimen/d_10"
android:textColor="#53a051"/>
android:text="自动弹出请假单"
android:textColor="#53a051" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>




<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/filterLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingHorizontal="@dimen/dp_40" android:paddingHorizontal="@dimen/dp_40"
@@ -90,16 +92,17 @@
android:id="@+id/clearBtn" android:id="@+id/clearBtn"
android:layout_width="@dimen/d_25" android:layout_width="@dimen/d_25"
android:layout_height="@dimen/d_25" android:layout_height="@dimen/d_25"
android:src="@mipmap/ic_clear" />
android:src="@mipmap/ic_clear"
android:visibility="invisible" />
</com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout> </com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout>


<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
android:id="@+id/allBtn" android:id="@+id/allBtn"
style="@style/home_status_btn" style="@style/home_status_btn"
android:layout_marginStart="50dp"
android:text="全部" android:text="全部"
android:textColor="@color/white" android:textColor="@color/white"
app:qmui_backgroundColor="#3ca0e9" app:qmui_backgroundColor="#3ca0e9"
android:layout_marginStart="50dp"
app:qmui_borderColor="@color/colorPrimary" /> app:qmui_borderColor="@color/colorPrimary" />


<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton


+ 1
- 1
app/src/main/res/layout/fragment_my.xml Просмотреть файл

@@ -210,7 +210,7 @@


<TextView <TextView
style="@style/my_info_title" style="@style/my_info_title"
android:text="部门" />
android:text="岗位类别" />


<TextView <TextView
android:id="@+id/jobType" android:id="@+id/jobType"


+ 15
- 7
app/src/main/res/layout/layout_empty.xml Просмотреть файл

@@ -1,14 +1,22 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">


<com.qmuiteam.qmui.widget.QMUIEmptyView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:qmui_show_loading="true"
app:qmui_title_text="数据加载中"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/empty" />


<TextView
android:id="@+id/emptyTipsView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="暂无数据"
android:textColor="@color/gray_1"
android:textSize="@dimen/d_24" />
</LinearLayout> </LinearLayout>

+ 15
- 0
app/src/main/res/layout/layout_loading.xml Просмотреть файл

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.qmuiteam.qmui.widget.QMUIEmptyView
android:id="@+id/QMUIEmptyView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:qmui_show_loading="true"
app:qmui_title_text="数据加载中"/>

</LinearLayout>

+ 9
- 9
app/src/main/res/layout/version_dialog.xml Просмотреть файл

@@ -11,8 +11,8 @@
android:orientation="vertical"> android:orientation="vertical">


<ImageView <ImageView
android:layout_width="300dp"
android:layout_height="150dp"
android:layout_width="450dp"
android:layout_height="204dp"
android:background="@drawable/custom_bg" android:background="@drawable/custom_bg"
android:scaleType="centerCrop" /> android:scaleType="centerCrop" />


@@ -31,7 +31,7 @@
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/update_title" android:text="@string/update_title"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:textSize="18sp" />
android:textSize="20sp" />


<TextView <TextView
android:id="@+id/tv_msg" android:id="@+id/tv_msg"
@@ -40,7 +40,7 @@
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="@string/updatecontent" android:text="@string/updatecontent"
android:textColor="#666" android:textColor="#666"
android:textSize="16sp" />
android:textSize="18sp" />


<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -56,24 +56,24 @@
<Button <Button
android:id="@id/versionchecklib_version_dialog_cancel" android:id="@id/versionchecklib_version_dialog_cancel"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_height="50dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/shape_corner_plain" android:background="@drawable/shape_corner_plain"
android:text="取消" android:text="取消"
android:textSize="16sp"
android:textColor="@android:color/black" />
android:textSize="20sp"
android:textColor="@color/gray" />
</FrameLayout> </FrameLayout>


<Button <Button
android:id="@id/versionchecklib_version_dialog_commit" android:id="@id/versionchecklib_version_dialog_commit"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="35dp"
android:layout_height="50dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/shape_corner" android:background="@drawable/shape_corner"
android:text="立即升级" android:text="立即升级"
android:textSize="16sp"
android:textSize="20sp"
android:textColor="@android:color/white" /> android:textColor="@android:color/white" />


</LinearLayout> </LinearLayout>


+ 0
- 5
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml Просмотреть файл

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

+ 0
- 5
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml Просмотреть файл

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

Двоичные данные
app/src/main/res/mipmap-hdpi/ic_launcher.png Просмотреть файл

До После
Ширина: 72  |  Высота: 72  |  Размер: 2.9 KiB Ширина: 72  |  Высота: 72  |  Размер: 2.5 KiB

Двоичные данные
app/src/main/res/mipmap-hdpi/ic_launcher_round.png Просмотреть файл

До После
Ширина: 72  |  Высота: 72  |  Размер: 4.8 KiB Ширина: 72  |  Высота: 72  |  Размер: 3.7 KiB

Двоичные данные
app/src/main/res/mipmap-mdpi/empty.png Просмотреть файл

До После
Ширина: 349  |  Высота: 305  |  Размер: 20 KiB

Двоичные данные
app/src/main/res/mipmap-mdpi/ic_launcher.png Просмотреть файл

До После
Ширина: 48  |  Высота: 48  |  Размер: 2.0 KiB Ширина: 48  |  Высота: 48  |  Размер: 1.8 KiB

Двоичные данные
app/src/main/res/mipmap-mdpi/ic_launcher_round.png Просмотреть файл

До После
Ширина: 48  |  Высота: 48  |  Размер: 2.7 KiB Ширина: 48  |  Высота: 48  |  Размер: 2.2 KiB

Двоичные данные
app/src/main/res/mipmap-xhdpi/ic_launcher.png Просмотреть файл

До После
Ширина: 96  |  Высота: 96  |  Размер: 4.4 KiB Ширина: 96  |  Высота: 96  |  Размер: 3.1 KiB

Двоичные данные
app/src/main/res/mipmap-xhdpi/ic_launcher_round.png Просмотреть файл

До После
Ширина: 96  |  Высота: 96  |  Размер: 6.7 KiB Ширина: 96  |  Высота: 96  |  Размер: 5.1 KiB

Двоичные данные
app/src/main/res/mipmap-xxhdpi/ic_launcher.png Просмотреть файл

До После
Ширина: 144  |  Высота: 144  |  Размер: 6.2 KiB Ширина: 144  |  Высота: 144  |  Размер: 4.8 KiB

Двоичные данные
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png Просмотреть файл

До После
Ширина: 144  |  Высота: 144  |  Размер: 10 KiB Ширина: 144  |  Высота: 144  |  Размер: 7.6 KiB

Двоичные данные
app/src/main/res/mipmap-xxxhdpi/ic_launcher.png Просмотреть файл

До После
Ширина: 192  |  Высота: 192  |  Размер: 8.9 KiB Ширина: 192  |  Высота: 192  |  Размер: 5.8 KiB

Двоичные данные
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png Просмотреть файл

До После
Ширина: 192  |  Высота: 192  |  Размер: 15 KiB Ширина: 192  |  Высота: 192  |  Размер: 8.0 KiB

+ 1
- 1
app/src/main/res/values/strings.xml Просмотреть файл

@@ -1,5 +1,5 @@
<resources> <resources>
<string name="app_name">云智学</string>
<string name="app_name">一体化平台</string>
<string name="update_title">检测到新版本</string> <string name="update_title">检测到新版本</string>
<string name="updatecontent">解决了若干bug</string> <string name="updatecontent">解决了若干bug</string>
</resources> </resources>

+ 3
- 0
app/src/main/res/values/styles.xml Просмотреть файл

@@ -18,6 +18,9 @@
<item name="android:background">@android:color/transparent</item> <item name="android:background">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item> <item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item> <item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style> </style>


<!--Splash--> <!--Splash-->


+ 1
- 1
settings.gradle Просмотреть файл

@@ -1,2 +1,2 @@
include ':app' include ':app'
rootProject.name='WebEBook'
rootProject.name='WebScreen'

Загрузка…
Отмена
Сохранить