From 595ad483a4991d7a760225d16750f27da28c2c8b Mon Sep 17 00:00:00 2001 From: leiyun Date: Thu, 4 Mar 2021 18:42:08 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E5=8E=9F=E7=94=9F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 29 +- app/src/main/AndroidManifest.xml | 21 +- .../java/com/yzx/webebook/MainActivity.kt | 45 +++- .../com/yzx/webebook/activity/HomeActivity.kt | 251 ++++++++++++++++++ .../com/yzx/webebook/activity/WebActivity.kt | 76 ++++-- .../com/yzx/webebook/adapter/HomeAdapter.kt | 14 + .../java/com/yzx/webebook/config/Config.kt | 9 + .../java/com/yzx/webebook/model/HomeItem.kt | 7 + .../main/java/com/yzx/webebook/model/User.kt | 82 ++++++ .../main/res/drawable/shape_switch_btn.xml | 6 + app/src/main/res/layout/activity_home.xml | 145 ++++++++++ app/src/main/res/layout/activity_main.xml | 48 +++- app/src/main/res/layout/activity_web.xml | 4 +- app/src/main/res/layout/item_home.xml | 26 ++ .../res/mipmap-xhdpi/ic_home_errorbook.png | Bin 0 -> 3857 bytes app/src/main/res/mipmap-xhdpi/ic_home_my.png | Bin 0 -> 4964 bytes .../res/mipmap-xhdpi/ic_home_notebook.png | Bin 0 -> 2855 bytes .../main/res/mipmap-xhdpi/ic_home_rack.png | Bin 0 -> 3255 bytes .../main/res/mipmap-xhdpi/ic_home_work.png | Bin 0 -> 4552 bytes .../main/res/mipmap-xhdpi/ic_home_write.png | Bin 0 -> 4624 bytes .../main/res/mipmap-xhdpi/ic_unit_switch.png | Bin 0 -> 389 bytes app/src/main/res/mipmap-xhdpi/student.png | Bin 0 -> 3377 bytes 22 files changed, 717 insertions(+), 46 deletions(-) create mode 100644 app/src/main/java/com/yzx/webebook/activity/HomeActivity.kt create mode 100644 app/src/main/java/com/yzx/webebook/adapter/HomeAdapter.kt create mode 100644 app/src/main/java/com/yzx/webebook/config/Config.kt create mode 100644 app/src/main/java/com/yzx/webebook/model/HomeItem.kt create mode 100644 app/src/main/java/com/yzx/webebook/model/User.kt create mode 100644 app/src/main/res/drawable/shape_switch_btn.xml create mode 100644 app/src/main/res/layout/activity_home.xml create mode 100644 app/src/main/res/layout/item_home.xml create mode 100644 app/src/main/res/mipmap-xhdpi/ic_home_errorbook.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_home_my.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_home_notebook.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_home_rack.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_home_work.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_home_write.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_unit_switch.png create mode 100644 app/src/main/res/mipmap-xhdpi/student.png diff --git a/app/build.gradle b/app/build.gradle index 47a30ef..e62bcf1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,15 +47,37 @@ android { signingConfig signingConfigs.release // 移除无用的resource文件 // shrinkResources false + buildConfigField "String", "BASE_URL", '"https://oa.qbjjyyun.net/api"' + buildConfigField "String", "M_URL", '"https://m.qbjjyyun.net"' + buildConfigField "String", "APP_NAME", '"家校互通"' + +// buildConfigField "String", "BASE_URL", '"http://192.168.69.99:9009"' +// buildConfigField "String", "M_URL", '"http://192.168.69.99:8098"' +// buildConfigField "String", "APP_NAME", '"家校互通(测试)"' } debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' +// debuggable true + signingConfig signingConfigs.release + // 移除无用的resource文件 +// shrinkResources false + buildConfigField "String", "BASE_URL", '"http://192.168.69.99:9009"' + buildConfigField "String", "M_URL", '"http://192.168.69.112:8098"' + buildConfigField "String", "APP_NAME", '"家校互通(开发)"' + } + + yzx_test { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' debuggable true - signingConfig signingConfigs.yzx + signingConfig signingConfigs.release // 移除无用的resource文件 - shrinkResources false +// shrinkResources false + buildConfigField "String", "BASE_URL", '"http://192.168.69.99:9009"' + buildConfigField "String", "M_URL", '"http://192.168.69.99:8098"' + buildConfigField "String", "APP_NAME", '"家校互通(测试)"' } applicationVariants.all { variant -> @@ -65,6 +87,7 @@ android { output.outputFileName = fileName } } + } lintOptions { @@ -102,4 +125,6 @@ dependencies { // 友盟统计SDK implementation 'com.umeng.umsdk:common:9.3.6' // 必选 implementation 'com.umeng.umsdk:asms:1.2.1' // 必选 + implementation 'com.github.thomhurst:RoundImageView:1.0.2' + implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1876c5b..2a17176 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,6 @@ - - @@ -39,6 +34,14 @@ + + - - + android:screenOrientation="portrait" /> >() { override fun initView() { btn1.setOnClickListener { - WebActivity.active(this, "https://m.qbjjyyun.net/") + Config.APP_NAME = "家校互通" + Config.BASE_URL = "https://oa.qbjjyyun.net/api" + Config.M_URL = "https://m.qbjjyyun.net" + User.clearUserInfo() + startActivity() } btn2.setOnClickListener { - WebActivity.active(this, "https://m.live.educlouddata.com/") + Config.APP_NAME = "家校互通(LIVE)" + Config.BASE_URL = "https://oa.live.educlouddata.com/api" + Config.M_URL = "https://m.live.educlouddata.com" + User.clearUserInfo() + startActivity() } btn6.setOnClickListener { - WebActivity.active(this, "http://192.168.69.200:8098/") + Config.APP_NAME = "家校互通(测试)" + Config.BASE_URL = "http://192.168.69.99:9009" + Config.M_URL = "http://192.168.69.99:8098" + User.clearUserInfo() + startActivity() } btn3.setOnClickListener { - WebActivity.active(this, editText.text.toString()) + val mBaseUrl = mBaseUrlTv.text.toString() + if(StringUtils.isTrimEmpty(mBaseUrl)){ + toast("请输入BASE_URL") + return@setOnClickListener + } + val mUrl = mUrlTv.text.toString() + if(StringUtils.isTrimEmpty(mUrl)){ + toast("请输入M_URL") + return@setOnClickListener + } + Config.APP_NAME = "家校互通(本地)" + Config.BASE_URL = mBaseUrl + Config.M_URL = mUrl + User.clearUserInfo() + startActivity() } btn4.setOnClickListener { BookActivity.active( diff --git a/app/src/main/java/com/yzx/webebook/activity/HomeActivity.kt b/app/src/main/java/com/yzx/webebook/activity/HomeActivity.kt new file mode 100644 index 0000000..ee20ad4 --- /dev/null +++ b/app/src/main/java/com/yzx/webebook/activity/HomeActivity.kt @@ -0,0 +1,251 @@ +package com.yzx.webebook.activity + +import android.annotation.SuppressLint +import android.app.AlertDialog +import android.app.Dialog +import android.content.Context +import android.content.DialogInterface +import android.util.Log +import android.view.View +import android.widget.TextView +import androidx.core.widget.ContentLoadingProgressBar +import androidx.recyclerview.widget.GridLayoutManager +import com.allenliu.versionchecklib.v2.AllenVersionChecker +import com.allenliu.versionchecklib.v2.builder.UIData +import com.allenliu.versionchecklib.v2.callback.CustomDownloadingDialogListener +import com.blankj.utilcode.util.AppUtils +import com.blankj.utilcode.util.NetworkUtils +import com.blankj.utilcode.util.SPUtils +import com.blankj.utilcode.util.StringUtils +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.yzx.webebook.MainActivity +import com.yzx.webebook.R +import com.yzx.webebook.activity.base.BaseActivity +import com.yzx.webebook.adapter.HomeAdapter +import com.yzx.webebook.config.Config +import com.yzx.webebook.model.BaseBean +import com.yzx.webebook.model.HomeItem +import com.yzx.webebook.model.User +import com.yzx.webebook.model.Version +import com.yzx.webebook.presenter.base.BasePresenter +import com.yzx.webebook.widget.BaseDialog +import kotlinx.android.synthetic.main.activity_home.* +import kotlinx.android.synthetic.main.activity_home.titleTv +import org.jetbrains.anko.find +import org.jetbrains.anko.startActivity +import org.jetbrains.anko.toast +import java.util.* + +class HomeActivity : BaseActivity>() { + + private val mAdapter: HomeAdapter by lazy { + val list = mutableListOf() + list.add(HomeItem("家庭作业", R.mipmap.ic_home_work, "/homework/ebook_list")) + list.add(HomeItem("笔记本", R.mipmap.ic_home_notebook, "/notebook/list")) + list.add(HomeItem("背诵默写", R.mipmap.ic_home_write, "/write/index")) + list.add(HomeItem("书架", R.mipmap.ic_home_rack)) + list.add(HomeItem("错题本", R.mipmap.ic_home_errorbook, "/errorbook/ebookindex")) + list.add(HomeItem("我的", R.mipmap.ic_home_my, "/mine/ebook")) + HomeAdapter(list) + } + + private var count = 0 + private val run = Runnable { + count = 0 + } + + override val inflateId: Int + get() = R.layout.activity_home + + override fun initView() { + val layoutManager = GridLayoutManager(this, 3) + homeGridView.layoutManager = layoutManager + homeGridView.adapter = mAdapter + + switchBtn.setOnClickListener { + val url = "${Config.M_URL}/choiceunit.html?from=ehome" + WebActivity.active(this, url) + } + + loginBtn.setOnClickListener { + val url = "${Config.M_URL}/login.html?from=ehome" + WebActivity.active(this, url) + } + + testBtn.setOnClickListener { + count++ + testBtn.removeCallbacks(run) + testBtn.postDelayed(run, 1000) + if (count >= 5) { + startActivity() + } + } + } + + override fun initData() { + mAdapter.setOnItemClickListener { adapter, view, position -> + if (User.getUser().user_id == 0) { + val url = "${Config.M_URL}/login.html?from=ehome" + WebActivity.active(this, url) + } else { + val list = mAdapter.data + val item = list[position] + if (StringUtils.isTrimEmpty(item.url)) { + toast("功能设计中,敬请期待") + } else { + val url = Config.M_URL + item.url + WebActivity.active(this, url) + } + } + } + } + + override fun initPresenter(): BasePresenter<*>? { + return null + } + + @SuppressLint("SetTextI18n") + override fun onResume() { + super.onResume() + val user = User.getUser() + if (user.user_id != 0) { + userNameTv.text = "你好,${user.user_name}" + userInfoTv.text = "${user.school_name} | ${user.grade_name}${user.class_name}" + userInfoTv.visibility = View.VISIBLE + loginBtn.visibility = View.GONE + switchBtn.visibility = if (User.getUnitCount() > 1) { + View.VISIBLE + } else { + View.GONE + } + } else { + userNameTv.text = "未登录" + userInfoTv.text = "" + userInfoTv.visibility = View.GONE + loginBtn.visibility = View.VISIBLE + switchBtn.visibility = View.GONE + } + titleTv.text = Config.APP_NAME + if (NetworkUtils.isConnected()) { + checkVersion(false) + }else{ + checkNetwork() + } + } + + private fun checkNetwork() { + val builder = AlertDialog.Builder(this) + builder.setTitle("温馨提示") + builder.setMessage("你还没有链接网络,请先连接网络!") + builder.setPositiveButton("去设置") { _, _ -> + NetworkUtils.openWirelessSettings() + } + builder.setCancelable(false) + val dialog = builder.create() + dialog.setCanceledOnTouchOutside(false) + dialog.getButton(DialogInterface.BUTTON_NEGATIVE)?.visibility = View.GONE + dialog.show() + } + + private fun checkVersion(userCheck: Boolean = false): Unit { + val BASE_URL = Config.BASE_URL + OkGo.post("$BASE_URL/parent/common/getInkBottleMaxVersion") + .tag(this) + .execute(object : StringCallback() { + + override fun onSuccess(response: Response) { + val json = response.body() + Log.d("checkVersion", "onSuccess: ${json}") + val resultType = object : TypeToken>() {}.type + val gson = Gson() + val res = gson.fromJson>(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(R.id.tv_title) + title.text = "检测到新版本" + val content = dialog.find(R.id.tv_msg) + content.text = version.explain + dialog.window?.setDimAmount(0.5f) + val cancelBtn = dialog.find(R.id.cancel_btn) + if (version.type == 1) { + cancelBtn.visibility = View.GONE + } + + 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 { + return BaseDialog( + context!!, + R.style.BaseDialog, + R.layout.download_dialog + ) + } + + }) + .executeMission(this) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt b/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt index 5fb550f..9cc5689 100644 --- a/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt +++ b/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt @@ -32,7 +32,9 @@ import com.lzy.okgo.model.Response import com.yzx.webebook.MainActivity import com.yzx.webebook.R import com.yzx.webebook.activity.base.BaseActivity +import com.yzx.webebook.config.Config import com.yzx.webebook.model.BaseBean +import com.yzx.webebook.model.User import com.yzx.webebook.model.Version import com.yzx.webebook.presenter.base.BasePresenter import com.yzx.webebook.widget.BaseDialog @@ -79,9 +81,7 @@ class WebActivity : BaseActivity>() { } fun checkVersion(userCheck: Boolean = false): Unit { - val test = "192.168.69.112:9009" - val online = "https://oa.qbjjyyun.net/api" - val BASE_URL = online + val BASE_URL = Config.BASE_URL OkGo.post("$BASE_URL/parent/common/getInkBottleMaxVersion") .tag(this) .execute(object : StringCallback() { @@ -132,8 +132,6 @@ class WebActivity : BaseActivity>() { UIData.create() .setTitle("检测到新版本") .setContent(version.explain) -// .setDownloadUrl("https://oa-edu-1259243469.cos.ap-chengdu.myqcloud.com/public/Yzx_2.0.0.apk") -// .setDownloadUrl("https://filea.oa.qbjjyyun.net/edufile/202102/5986/27a58c0b85cb42aee37ce85fe956b743.apk") .setDownloadUrl(version.app_src) ) .setCustomVersionDialogListener { context, versionBundle -> @@ -183,17 +181,18 @@ class WebActivity : BaseActivity>() { @SuppressLint("SetJavaScriptEnabled") override fun initView() { url = intent?.getStringExtra("link") ?: "https://m.qbjjyyun.net/" - titleTv.setOnClickListener { - count++ - titleTv.removeCallbacks(run) - titleTv.postDelayed(run, 1000) - if (count >= 5) { - startActivity() - } - } +// titleTv.setOnClickListener { +// count++ +// titleTv.removeCallbacks(run) +// titleTv.postDelayed(run, 1000) +// if (count >= 5) { +// startActivity() +// } +// } btnBack.setOnClickListener { onBackPressed() } btnClose.setOnClickListener { - webView.loadUrl(url) +// webView.loadUrl(url) + finish() } btnRefresh.setOnClickListener { webView.reload() @@ -261,11 +260,11 @@ class WebActivity : BaseActivity>() { view?.post { progressbar.visibility = View.GONE if (view.canGoBack()) { - btnBack.visibility = View.VISIBLE -// btnClose.visibility = View.VISIBLE +// btnBack.visibility = View.VISIBLE + btnClose.visibility = View.VISIBLE } else { - btnBack.visibility = View.GONE -// btnClose.visibility = View.GONE +// btnBack.visibility = View.GONE + btnClose.visibility = View.GONE } } } else { @@ -436,6 +435,47 @@ class YzxJavascriptInterface(var ctx: Activity) { val act = ctx as WebActivity act.checkVersion(true) } + + /** + * 保存用户信息 + */ + @JavascriptInterface + fun saveUserInfo(json:String){ + val resultType = object : TypeToken() {}.type + val gson = Gson() + val user = gson.fromJson(json, resultType) + user?.save() + } + + @JavascriptInterface + fun saveUnitCount(count:Int){ + User.saveUnitCount(count) + } + + @JavascriptInterface + fun toHome(){ + ctx.startActivity() + } + + @JavascriptInterface + fun logout(){ + val sp = SPUtils.getInstance() + sp.remove("user_name") + sp.remove("user_id") + sp.remove("type") + sp.remove("token") + sp.remove("school_id") + sp.remove("school_name") + sp.remove("phone") + sp.remove("grade_name") + sp.remove("grade_id") + sp.remove("class_name") + sp.remove("class_id") + sp.remove("ticket") + sp.remove("login_start") + sp.remove("unit_count") + ctx.startActivity() + } } diff --git a/app/src/main/java/com/yzx/webebook/adapter/HomeAdapter.kt b/app/src/main/java/com/yzx/webebook/adapter/HomeAdapter.kt new file mode 100644 index 0000000..aadd092 --- /dev/null +++ b/app/src/main/java/com/yzx/webebook/adapter/HomeAdapter.kt @@ -0,0 +1,14 @@ +package com.yzx.webebook.adapter + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.yzx.webebook.R +import com.yzx.webebook.model.HomeItem +import kotlinx.android.synthetic.main.item_home.view.* + +class HomeAdapter(list: MutableList) : BaseQuickAdapter(R.layout.item_home,list) { + override fun convert(holder: BaseViewHolder, item: HomeItem) { + holder.itemView.img.setImageResource(item.img) + holder.itemView.name.text = item.title + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yzx/webebook/config/Config.kt b/app/src/main/java/com/yzx/webebook/config/Config.kt new file mode 100644 index 0000000..cdb8631 --- /dev/null +++ b/app/src/main/java/com/yzx/webebook/config/Config.kt @@ -0,0 +1,9 @@ +package com.yzx.webebook.config + +import com.yzx.webebook.BuildConfig + +object Config { + var BASE_URL = BuildConfig.BASE_URL + var APP_NAME = BuildConfig.APP_NAME + var M_URL = BuildConfig.M_URL +} \ No newline at end of file diff --git a/app/src/main/java/com/yzx/webebook/model/HomeItem.kt b/app/src/main/java/com/yzx/webebook/model/HomeItem.kt new file mode 100644 index 0000000..739d2e8 --- /dev/null +++ b/app/src/main/java/com/yzx/webebook/model/HomeItem.kt @@ -0,0 +1,7 @@ +package com.yzx.webebook.model + +class HomeItem ( + var title:String, + var img:Int, + var url:String = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/yzx/webebook/model/User.kt b/app/src/main/java/com/yzx/webebook/model/User.kt new file mode 100644 index 0000000..28ac934 --- /dev/null +++ b/app/src/main/java/com/yzx/webebook/model/User.kt @@ -0,0 +1,82 @@ +package com.yzx.webebook.model + +import android.content.Context +import com.blankj.utilcode.util.SPUtils + +class User( + var user_name: String, + var user_id: Int, + var type: Int, + var token: String, + var school_id: Int, + var school_name: String, + var phone: String, + var grade_name: String, + var grade_id: Int, + var class_name: String, + var class_id: Int, + var ticket: String, + var login_start: String +) { + fun save() { + val sp = SPUtils.getInstance() + sp.put("user_name", user_name) + sp.put("user_id", user_id) + sp.put("type", type) + sp.put("token", token) + sp.put("school_id", school_id) + sp.put("school_name", school_name) + sp.put("phone", phone) + sp.put("grade_name", grade_name) + sp.put("grade_id", grade_id) + sp.put("class_name", class_name) + sp.put("class_id", class_id) + sp.put("ticket", ticket) + sp.put("login_start", login_start) + } + + companion object { + fun getUser(): User { + val sp = SPUtils.getInstance() + return User( + sp.getString("user_name", ""), + sp.getInt("user_id", 0), + sp.getInt("type", 0), + sp.getString("token", ""), + sp.getInt("school_id", 0), + sp.getString("school_name", ""), + sp.getString("phone", ""), + sp.getString("grade_name", ""), + sp.getInt("grade_id", 0), + sp.getString("class_name", ""), + sp.getInt("class_id", 0), + sp.getString("ticket", ""), + sp.getString("login_start", "") + ) + } + + fun getUnitCount():Int = SPUtils.getInstance().getInt("unit_count",1) + + fun saveUnitCount(count:Int){ + SPUtils.getInstance().put("unit_count",count); + } + + fun clearUserInfo(){ + val sp = SPUtils.getInstance() + sp.remove("user_name") + sp.remove("user_id") + sp.remove("type") + sp.remove("token") + sp.remove("school_id") + sp.remove("school_name") + sp.remove("phone") + sp.remove("grade_name") + sp.remove("grade_id") + sp.remove("class_name") + sp.remove("class_id") + sp.remove("ticket") + sp.remove("login_start") + sp.remove("unit_count") + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_switch_btn.xml b/app/src/main/res/drawable/shape_switch_btn.xml new file mode 100644 index 0000000..24236b5 --- /dev/null +++ b/app/src/main/res/drawable/shape_switch_btn.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml new file mode 100644 index 0000000..b6ee42a --- /dev/null +++ b/app/src/main/res/layout/activity_home.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 24fa0c6..fe224fc 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -52,17 +52,53 @@ android:id="@+id/btn6" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="家校本地" + android:text="家校测试" android:layout_marginTop="@dimen/d_20"/> - + android:gravity="center" + android:paddingHorizontal="@dimen/d_15"> + + + + + + + + + + android:visibility="visible"/> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xhdpi/ic_home_errorbook.png b/app/src/main/res/mipmap-xhdpi/ic_home_errorbook.png new file mode 100644 index 0000000000000000000000000000000000000000..75b8bf88601d69828f0dafe8efbda91d350f8394 GIT binary patch literal 3857 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_home_my.png b/app/src/main/res/mipmap-xhdpi/ic_home_my.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1ce129e50c432bcccd5da15dd6c0d59f3e0ae6 GIT binary patch literal 4964 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_home_rack.png b/app/src/main/res/mipmap-xhdpi/ic_home_rack.png new file mode 100644 index 0000000000000000000000000000000000000000..b879b03b15824d83a4672ddc7cf1dfb33edfdb31 GIT binary patch literal 3255 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_home_work.png b/app/src/main/res/mipmap-xhdpi/ic_home_work.png new file mode 100644 index 0000000000000000000000000000000000000000..da251c451b5265d53325abe6b63600b8a3e3498a GIT binary patch literal 4552 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 a6twtGMqw#F`VnhF1F%HcnzdZV-2X4%#W;ol literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_home_write.png b/app/src/main/res/mipmap-xhdpi/ic_home_write.png new file mode 100644 index 0000000000000000000000000000000000000000..58221adaf3e28b363baee8fdb2ab4ae3f2e023ae GIT binary patch literal 4624 zcmX9?byO4H`(8K(V~nB12xWAtqf2DcNJxi_maYKpA*^G` zeu8{Fmbf(VM36hfUMw?-DQL=w<-Qk8PNm*#z`Jua;%CU{oz>&oj+vF+g-8wGFT<$a zrhwJvt6j~%Rz5_`$lm5D0X4<8fCIrZP-{>z=mH=B9B`)idxA&iwtGaZbxp&gQ_ts1vkXBfl`>r5qeE^O zRB-5x)T>8J7&r(9EqT{gxKuginN-cNA6AA(S0{BwcG2p_lrlzQF61#UfooabaM`Zp z9r}HojE+3|j78~n33`_+gZC(s6R-d5IUb!Zv`l7{-5Li z?jL!a4c(qaLK49)dOcxcfTI}FF7c%-^(j%Z?rc=P zVx26!YiLAh;1J;!I+CY?9HA~)R~h$Ud``EzF9W66#UM5hNq?VpT!0F;m)3F2$;0m@ z^u~GlpLo=H@ncVPa`wIO2PD78{n=dY=7j)0e{Y<(B0}3+$b9)i4|;any~dagzRU21 z+porG1{45LtfUv@hfsa*RAhn2tJYj^V$v-q2HKqt=wg+qVYfL*2L283G^r_HalVuQ zK%*L7Voz2pgr9X$_&mg4k}0(S5Is*4E}BpqaaH!`g}N>XnL6B+hN}TvEV&B&8eQhD zZqD~+eO@P?i_{T=mQdG-mMGoo0|Xr&hYn+i30M+UXS-sxXv@uMQ)^?YjC2PPZOUvw zQmFhx_}+fA4+P@!3`UEY>r*^uNLuJ1lzSR@&{+Q6dy-jsgReNgiuPTWoS z%ss@0cZ}G- z(3K!p(7)5H!SGKxgm*#Q#1zL|>s4vA*ux62;q~K{2}1K^HoqFPMWsgR*v$`dv8ew1 zH5`|Mnl>uey5}NnFGdfH>`1Vi3~%ziqoR}B?%TA9;nd{bIDOReyV}O98me-2d3w=? zyTE$czh0X$uxnHK4|BldqlC0X;<@?>rU?#O9}O#uer$R6~wbEz+6>xZRJu_T2M-*?s3Cf5zV8o9EV1fd`RI z)bih*+S9OaSql3WTwYebE;VMOn{mJph`XfIYOz#eoZc71qCDfJcBaWze1++sL4Y^0XkIhRwTGEgy`M6iJm$VftKqbcw`p;X$=adLuZq ze!W`Y%ciqte}$okqyPgf`cKTWswtQdRM5C@t{{xiIOsW9&1V_l9ZGH-P}QkC`ks{q zHgoEi*+6tXg<8MsA6$eYK3p3({oiGAv4alGfU3+GR<)s&6;yI;z2NC=yg?)4W zCG2DTfy+-jjuUVva5fR|!bS?R!e(-201%v1_=Ldmvi?kcQPj|D!X_cNfONG}cB=TM zo!reXtzm|M8&&ghw&opnYsUR6x-MTq?evP3)^Fy&W^gHrYM9n|BitSJWiaBLwbq-TKVzk{OjQe^RLVn<&9thejA-|l zl^lWRz?9=ykmRXcXTC^?GBVBikv-{OhO~i;DS>N0Dy?x*Tk5%6DHl(OI_wSjchh+1 zgdY{F49~VGwYoPaHw_C>x$McD3{Rju3K1>KRR~4tMtObnMz;&Ma^9sSpz@z?Is z@QA15US9u*z%`7#df&GVE+}QJSb*?mkGKCjnQKnerk3BWNK1B+`;q6%sQ&7S$FY~} zyb10o1y^yYglQEcG9yD9O2byc{3P-sB(>Apmyr(L{Ka4BX=;)SqkXwh?BfhAn$$hB z%6yML%2+ts^`8s7e0cjyhia9TV*hy14}}SDr6S{o>*O~MF|Oq8j)SS$ix%|0JX$M4 z50cG@&aDi#gJTXo&xKlTQ1tg;QwWLB60#_>CKkmLAKI6L<3iH4#KK)1TG!}hUg|ep zq>w7kNl_{Tqi+hN;t^?u^3e*b(pThaJ*Xdlb~|=Igp)D~_92YP#P3zE^=Qtd<9lw; z+Tul7jsOXivCr`PQtgwN{WWgQ6HG4mauPplgY{j0rTzeaOJ}!_y4_@BNgsDAMNT_& z)TMuLQmKhW>()+l`gt|sbypp?%sazmvU@P zA7pA&Z|XKUQw5QYCzy8Ygd4lmE7B$NzF;LV4Q2m=F=|zD!DOV?(7xOj#cp=vM6URU z6dJ`|-~)CWAGC4crWq*GU~~n3n0iV*Z^01UhlCGdD#>-us0q)wtt~p{()Zf*wZYOwbgjjT4B=9L;QgC^e^VrY1@_x~xGt^SoujW;B+cu2K zdb&-watux|!9d%2jM!(1sz@NAC9mQitd_^o{xHTJWni-a8^81Q<-d?%ACWEAEJqJ2 z?w&{y(>swDlU2g#|B%h4;hqo_XU=3|#6^k!WM28Lkm>sp^W+Cy;4W&}q^mrLzzXUN zd>z`P3}NT^6yfaarkFwTj2&%&mtE1?A5|Gv&b%&v4sMh5@-*j{1Dt9^0i^}m_?5TO zg?;~21fhjW^9D9vz@HoY0~XmB-dwmCg!0f=VnIjjvRXv?ke&tI`5251_>of@A|Cn6 zzd*j}lRtP3V_WW^rWk*XtBBT}Eg})sQL?4(DYH{;T<{3IAMTz<#$1 z&p81*1OC?{Vc*)G--$b?#GV%mf3G4P5I_o0XIAE)TeSU&bI$Dye7q2qgh!>zH9(qF zF;vvf}D0UT^) zE3;injn84>3v}w63$l~Hi-CN8wR{I;URq3^6JW`ERwPWjIQMvYB* z!ghQ)HojZk_4RIt-4=}4P}~Iwlb4(}UBXGf}{33INmPfQj-0fPy-W6Khk!;I+ntf?ETlb)@ z3_ZWFX?Y|Kd{=?gH?j>IX1c_k!^a9-1l?^!u`Y{pq;!FOjgV$C*G@5nOu0i1P6l;3 z>PE8IJx~>v+Hgufw{?g41${-;97FdmIdP}^j9?5Q z>kqqmMJ;P+F9|sd7Wtr~gcr|-cvA1kx4I3>&5;LPVWlAAx3L1TO0rgK(qLjkLoCJA zshwJg(0+ZZ&I6CSnayh+_uF5m)a$&?o9d0L2W4c|q=HQ8#nJ&v&9vIl#2@biAr8i( zuH^vDPlt@evlY`_^)u~}Db-?u>(#=jFi=31?EY#E2Yp&r@LBA2@v{HUeL&Z+2?@KU zaLJpsRt{P02NTaPF4_9?-g#20-AWRf%2(I1(^?w-^{Yo`S&onXt7-{1Q@C4#KKY~cYhk82fP;=ck^z@G^g|Cy7#Tm0Xf)>vg7yGSP+k z?tq>B{J>BTsQPbbvkayTPaI9LM87_-O3+;Ggz?#UtyWA+C%fEy&$|_hh6}pO&r2_L z`pk<;R1--Cx$d>AY1O7^j+Do-myIg5x@hP(Vn}!d+HnM(FWuRGLt}{M-RVv_V)l>F zg_`eMegG*6kU@qOhShA=IX!^uTAqLI9?W z{KFu~$q?>4SP@OiGLIX(-^wiZT32i*#oGx;pV&fr(BW`MC`mZny|GeWr@#_Tcw&}Yl5Uu~SV}ASo5z=Q z;epS8?Ti#XPXl@SuV^jPuMpMr$@4Ai_IsCt*NHMUYRWu`l0DKKj5>!idX+&2<2|dk zntF20*DyG+pSSdlPTb$yZDU@$9v0SU4o3gvoxHK+qqu|er2*Wu8ocd^bSodUS5aAY zEv&8quGmQS%Z4RH9q;C&V|Si6MMUOQzoSCa}L3$SWSlT?>^D!)er1iLd zxrnva+_7ckVrt^GAivQ4khnGmCF$!xsOvwxGF-=aI*jKr>@5wTuKdvO2CyNZLdwq9 z?kaBo)r&^Uwzl2>W`w%<5xRn5R40yO!@3v#f6h?KVl^l2vpT1waKj;-ZY>h_aZ`gn zK+SL~nw{qEdUH#RpneI{KEdS&J%cRziz5aQ%?2Tbd5gz8YN+Ex4$O<>i2==?Q%EuV z^jI1lDdIoKerRc6V<=Iad9vA+ygk9S9^oeE8d&_(#8e6AqDZ;(wX9bA3!unmR zRxpgVCABIV8hLVgJOU~hgWVVwzq~p@iu|troe!bC&WA^xg-EMMKHyjwrKp0bX*PM18WiaZ$j7L9tqzoSZo2OC1y260ywULY z37C=T#{ym^b*FZwg=x7-dN#RUESX3XLd~DxutwFtIATvE1~c5+_EuG$p8xd(N+q3E zu(}C7A~^jVqMXj|zOvv^VXiLBv`^XAJyh%R>F@jc*W{I7rQU%All8p##TAm-`G+7b zKI%Zm;uK@4C6`vd#7Ta{!U-Qc77cB>q>WJ7vQ%`}_9H?AfVk@TfF6UlWk40)6Pfb=f7&0cgVx`munUGKd_27Hne?SLu3N z6p;fES?viik4r4$t_UI*AhNo!iCJ7=1^3kuIRTN?n-Eht!zvzrLgWTS))3Y)fm5vE z@jFC40FgDE5TiIrh^Ma*Uje3ZUTy74-akx;=a2LL3J|$_3GwnCQLiN^T%ac4Usj+s zeL~UObB|9i{9Oe)v4OeFg2I5v?ZFnJt?s6_n%Sf3k!&#i>&NSbD6$Eotws|WsRyD6 zAj&?5eGKGA6a@rg5(ntci6{dI#0-wo0W{0TEDH!k9J`LwlEi_drtup<1TG~&P2n;5 jw}6_1-yYBeG`s?@_4h0xCg9)*00000NkvXXu0mjf^0%Si literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/student.png b/app/src/main/res/mipmap-xhdpi/student.png new file mode 100644 index 0000000000000000000000000000000000000000..08641e205ccb6afcab15e1167306b965b0a3c9c6 GIT binary patch literal 3377 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 SFCya_$fToXpovts5B)#BF?G`b literal 0 HcmV?d00001