From 7a14b58120edce1f68bd4b929f617a3409dec651 Mon Sep 17 00:00:00 2001
From: lh <1209405678@qq.com>
Date: Tue, 28 Nov 2017 11:12:15 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E6=90=AD=E5=BB=BA=E7=99=BB?=
=?UTF-8?q?=E5=BD=95=E7=95=8C=E9=9D=A2=20=E4=BC=98=E5=8C=96=20=20=20=20?=
=?UTF-8?q?=E7=99=BB=E5=BD=95=E5=8A=9F=E8=83=BD=E5=AE=9E=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 1 +
.../com/qhclh/ytzh/home/MainActivity.java | 12 +-
.../com/qhclh/ytzh/login/LoginActivity.java | 123 +++++++
.../com/qhclh/ytzh/splash/SplashActivity.java | 3 +-
.../com/qhclh/ytzh/utils/ActivityUtil.java | 44 +++
.../java/com/qhclh/ytzh/utils/HdHttpUtil.java | 321 ++++++++++++++++++
.../main/res/drawable-xhdpi/gongzuo1_3x.png | Bin 0 -> 2760 bytes
.../main/res/drawable-xhdpi/gongzuo_3x.png | Bin 0 -> 3335 bytes
.../main/res/drawable-xhdpi/shouye1_3x.png | Bin 0 -> 2552 bytes
app/src/main/res/drawable-xhdpi/shouye_3x.png | Bin 0 -> 2893 bytes
app/src/main/res/drawable-xhdpi/wode1_3x.png | Bin 0 -> 2462 bytes
app/src/main/res/drawable-xhdpi/wode_3x.png | Bin 0 -> 3087 bytes
app/src/main/res/layout/act_login.xml | 84 +++++
app/src/main/res/values/colors.xml | 1 +
app/src/main/res/values/dimens.xml | 6 +-
app/src/main/res/values/strings.xml | 3 +
app/src/main/res/values/styles.xml | 4 +-
17 files changed, 591 insertions(+), 11 deletions(-)
create mode 100644 app/src/main/java/com/qhclh/ytzh/login/LoginActivity.java
create mode 100644 app/src/main/java/com/qhclh/ytzh/utils/ActivityUtil.java
create mode 100644 app/src/main/java/com/qhclh/ytzh/utils/HdHttpUtil.java
create mode 100644 app/src/main/res/drawable-xhdpi/gongzuo1_3x.png
create mode 100644 app/src/main/res/drawable-xhdpi/gongzuo_3x.png
create mode 100644 app/src/main/res/drawable-xhdpi/shouye1_3x.png
create mode 100644 app/src/main/res/drawable-xhdpi/shouye_3x.png
create mode 100644 app/src/main/res/drawable-xhdpi/wode1_3x.png
create mode 100644 app/src/main/res/drawable-xhdpi/wode_3x.png
create mode 100644 app/src/main/res/layout/act_login.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6fcfd81..9cb3ea6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -26,6 +26,7 @@
+
diff --git a/app/src/main/java/com/qhclh/ytzh/home/MainActivity.java b/app/src/main/java/com/qhclh/ytzh/home/MainActivity.java
index 4294f44..fdfdede 100644
--- a/app/src/main/java/com/qhclh/ytzh/home/MainActivity.java
+++ b/app/src/main/java/com/qhclh/ytzh/home/MainActivity.java
@@ -106,20 +106,20 @@ public class MainActivity extends BaseActivity {
clearAllTabState();
switch (tabPosition) {
case TAB_POSITION_INDEX: {
-// iv_index.setImageResource(R.drawable.ghs12x);
+ iv_index.setImageResource(R.drawable.shouye_3x);
tv_index.setTextColor(getResources().getColor(R.color.green029737));
mTvToolbarTitle.setText(R.string.index);
break;
}
case TAB_POSITION_WORK: {
-// iv_work.setImageResource(R.drawable.gwc12x);
+ iv_work.setImageResource(R.drawable.gongzuo_3x);
tv_work.setTextColor(getResources().getColor(R.color.green029737));
mTvToolbarTitle.setText(R.string.work);
break;
}
case TAB_POSITION_ME: {
-// iv_me.setImageResource(R.drawable.dd12x);
+ iv_me.setImageResource(R.drawable.wode_3x);
tv_me.setTextColor(getResources().getColor(R.color.green029737));
mTvToolbarTitle.setText(R.string.me);
break;
@@ -130,14 +130,14 @@ public class MainActivity extends BaseActivity {
private void clearAllTabState() {
///< 首页
-// iv_index.setImageResource(R.drawable.ghs2x);
+ iv_index.setImageResource(R.drawable.shouye1_3x);
tv_index.setTextColor(getResources().getColor(R.color.grey888888));
///< 工作
-// iv_work.setImageResource(R.drawable.gwc2x);
+ iv_work.setImageResource(R.drawable.gongzuo1_3x);
tv_work.setTextColor(getResources().getColor(R.color.grey888888));
///< 我的
-// iv_me.setImageResource(R.drawable.dd2x);
+ iv_me.setImageResource(R.drawable.wode1_3x);
tv_me.setTextColor(getResources().getColor(R.color.grey888888));
}
diff --git a/app/src/main/java/com/qhclh/ytzh/login/LoginActivity.java b/app/src/main/java/com/qhclh/ytzh/login/LoginActivity.java
new file mode 100644
index 0000000..1040a6f
--- /dev/null
+++ b/app/src/main/java/com/qhclh/ytzh/login/LoginActivity.java
@@ -0,0 +1,123 @@
+package com.qhclh.ytzh.login;
+
+import android.content.Intent;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+import com.qhclh.ytzh.R;
+import com.qhclh.ytzh.base.BaseActivity;
+import com.qhclh.ytzh.configs.ConfigUtil;
+import com.qhclh.ytzh.configs.LoginUserConfig;
+import com.qhclh.ytzh.configs.ServerConfig;
+import com.qhclh.ytzh.home.MainActivity;
+import com.qhclh.ytzh.home.MyApplication;
+import com.qhclh.ytzh.tasks.ViewOnClickTask;
+import com.qhclh.ytzh.utils.ActivityUtil;
+import com.qhclh.ytzh.utils.DialogUtil;
+import com.qhclh.ytzh.utils.HdHttpUtil;
+
+import org.forks.jsonrpc.RpcFacade;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+/**
+ * Created by 青花瓷 on 2017/11/28.
+ */
+
+public class LoginActivity extends BaseActivity {
+ @BindView(R.id.login_username)
+ EditText login_username;
+ @BindView(R.id.login_psw)
+ EditText login_psw;
+ @BindView(R.id.login_sure)
+ Button login_sure;
+
+ private LoginUserConfig config = new LoginUserConfig(this);
+ private ServerConfig sconfig = new ServerConfig(this);
+ @Override
+ protected int setLayoutId() {
+ return R.layout.act_login;
+ }
+
+ @Override
+ protected void initView() {
+ loginOut.execute();
+ MyApplication.ClearLogin();
+ ConfigUtil.Fill(sconfig);
+ ConfigUtil.Fill(config);
+ login_username.setText(config.Username);
+ login_psw.setText(config.Password);
+
+ }
+
+ @Override
+ protected void initData() {
+
+ }
+
+ @Override
+ protected void initOper() {
+
+ }
+
+ @OnClick({R.id.login_sure})
+ public void onClick(View view) {
+ switch (view.getId()) {
+ case R.id.login_sure:
+ if (HdHttpUtil.isNetworkAvailable(LoginActivity.this)) {
+ loginTask.execute();
+ } else {
+ DialogUtil.AutoHiddenAlert(LoginActivity.this, "网络不可用");
+ }
+ break;
+ }
+ }
+
+
+ ViewOnClickTask loginOut = new ViewOnClickTask(this, "") {
+
+ @Override
+ public Object call() throws Exception {
+ RpcFacade.logout();
+ return null;
+ }
+
+ @Override
+ protected void successUI() {
+
+ }
+ };
+ ViewOnClickTask loginTask = new ViewOnClickTask(this, "登录中...") {
+ public Object call() throws Exception {
+ String username = login_username.getText().toString();
+ String password = login_psw.getText().toString();
+ config.Username = username;
+ config.Password = password;
+ RpcFacade.logout();
+ RpcFacade.login(username, password);
+ config.DisplayName = username;
+ ConfigUtil.Save(config);
+ return null;
+ }
+
+ @Override
+ protected void successUI() {
+ ConfigUtil.Fill(sconfig);
+ ActivityUtil.Go(LoginActivity.this, MainActivity.class);
+ }
+ };
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ //按返回键,程序进入后台运行,不关闭程序
+ MyApplication.getInstance().exit();
+ finish();
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+}
diff --git a/app/src/main/java/com/qhclh/ytzh/splash/SplashActivity.java b/app/src/main/java/com/qhclh/ytzh/splash/SplashActivity.java
index 6850548..3b7e89a 100644
--- a/app/src/main/java/com/qhclh/ytzh/splash/SplashActivity.java
+++ b/app/src/main/java/com/qhclh/ytzh/splash/SplashActivity.java
@@ -8,6 +8,7 @@ import android.widget.LinearLayout;
import com.qhclh.ytzh.R;
import com.qhclh.ytzh.base.BaseActivity;
import com.qhclh.ytzh.home.MainActivity;
+import com.qhclh.ytzh.login.LoginActivity;
import butterknife.BindView;
@@ -60,7 +61,7 @@ public class SplashActivity extends BaseActivity {
}
private void redirectTo() {
- startActivity(new Intent(this, MainActivity.class));
+ startActivity(new Intent(this, LoginActivity.class));
finish();
}
}
diff --git a/app/src/main/java/com/qhclh/ytzh/utils/ActivityUtil.java b/app/src/main/java/com/qhclh/ytzh/utils/ActivityUtil.java
new file mode 100644
index 0000000..dd50da8
--- /dev/null
+++ b/app/src/main/java/com/qhclh/ytzh/utils/ActivityUtil.java
@@ -0,0 +1,44 @@
+package com.qhclh.ytzh.utils;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class ActivityUtil {
+ public String GetText(Activity activity, int id) {
+ View view = activity.findViewById(id);
+ if (view instanceof EditText) {
+ return ((EditText) view).getText().toString();
+ }
+
+ return String.format("未支持得到类型%s的文本", view.getClass());
+ }
+
+ public static Button FindButton(Activity activity, int id) {
+ return (Button) activity.findViewById(id);
+ }
+
+ public static void Go(Context context, Class> class1) {
+ Intent intent = new Intent();
+ intent.setClass(context, class1);
+ context.startActivity(intent);
+ }
+
+ public static void Go(View arg0, Class> class1) {
+ Go(arg0.getContext(), class1);
+ }
+
+ @SuppressWarnings("unchecked")
+ public static T Find(Activity activity, int id) {
+ return (T) activity.findViewById(id);
+ }
+
+ public static void Finish(Activity activity, Intent data) {
+ activity.setResult(Activity.RESULT_OK, data);
+ activity.finish();
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/qhclh/ytzh/utils/HdHttpUtil.java b/app/src/main/java/com/qhclh/ytzh/utils/HdHttpUtil.java
new file mode 100644
index 0000000..bad8909
--- /dev/null
+++ b/app/src/main/java/com/qhclh/ytzh/utils/HdHttpUtil.java
@@ -0,0 +1,321 @@
+package com.qhclh.ytzh.utils;
+
+import android.content.Context;
+import android.location.LocationManager;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.telephony.TelephonyManager;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+/**
+ * Created by luanhui on 2016/7/8.
+ */
+public class HdHttpUtil {
+ public static final int NETWORK_OPERATOR_UNKOWN = 0;
+ public static final int NETWORK_OPERATOR_MOBILE = 1;
+ public static final int NETWORK_OPERATOR_UNICOM = 2;
+ public static final int NETWORK_OPERATOR_TELECOM = 3;
+
+ private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
+
+ /**
+ * String is null。
+ *
+ * @param src
+ * @return boolean
+ */
+ public static boolean isEmptyString(String src) {
+ return src == null || src.trim().length() == 0;
+ }
+
+ /**
+ * Return if the device is connected to wifi.
+ *
+ * @return boolean
+ */
+ public static boolean isWifi(Context context) {
+ try {
+ ConnectivityManager connectivityManager = (ConnectivityManager) context
+ .getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
+ if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) {
+ return true;
+ }
+ } catch (Exception e) {
+ }
+ return false;
+ }
+
+ /**
+ * 判断WiFi是否打开
+ *
+ * @param context
+ * @return
+ */
+ public static boolean isWifiEnabled(Context context) {
+ ConnectivityManager mgrConn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ TelephonyManager mgrTel = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+ return ((mgrConn.getActiveNetworkInfo() != null
+ && mgrConn.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED)
+ || mgrTel.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
+ }
+
+ /**
+ * Return if the device is connected to the 3G net.
+ *
+ * @param context
+ * @return boolean
+ */
+ public static boolean is3G(Context context) {
+ TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+ int networkType = telephony.getNetworkType();
+
+ return networkType == TelephonyManager.NETWORK_TYPE_UMTS || networkType == TelephonyManager.NETWORK_TYPE_HSDPA
+ || networkType == TelephonyManager.NETWORK_TYPE_EVDO_0
+ || networkType == TelephonyManager.NETWORK_TYPE_EVDO_A
+ || networkType == TelephonyManager.NETWORK_TYPE_LTE
+ || networkType == TelephonyManager.NETWORK_TYPE_EVDO_B
+ || networkType == TelephonyManager.NETWORK_TYPE_EHRPD
+ || networkType == TelephonyManager.NETWORK_TYPE_HSUPA;
+
+ }
+
+ /**
+ * 判断当前网络是WiFi还是3G
+ *
+ * @param context
+ * @return
+ */
+ public static boolean isWifiOr3G(Context context) {
+ ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo networkINfo = cm.getActiveNetworkInfo();
+ if (networkINfo != null && networkINfo.getType() == ConnectivityManager.TYPE_WIFI) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Return if the device is connected to the 2G net.
+ *
+ * @param context
+ * @return boolean
+ */
+ public static boolean is2G(Context context) {
+ TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+ int networkType = telephony.getNetworkType();
+
+ return networkType == TelephonyManager.NETWORK_TYPE_1xRTT || networkType == TelephonyManager.NETWORK_TYPE_CDMA
+ || networkType == TelephonyManager.NETWORK_TYPE_EDGE
+ || networkType == TelephonyManager.NETWORK_TYPE_IDEN
+ || networkType == TelephonyManager.NETWORK_TYPE_GPRS;
+
+ }
+
+ /**
+ * 判断Gsp是否可用
+ *
+ * @param context
+ * @return
+ */
+ public static boolean isGpsEnabled(Context context) {
+ LocationManager lm = ((LocationManager) context.getSystemService(Context.LOCATION_SERVICE));
+ List accessibleProviders = lm.getProviders(true);
+ return accessibleProviders != null && accessibleProviders.size() > 0;
+ }
+
+ /**
+ * Return if the network is available for the device
+ *
+ * @return boolean
+ */
+ public static boolean isNetAvailable(Context context) {
+ ConnectivityManager connectivityManager = (ConnectivityManager) context
+ .getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
+ if (networkInfo != null) {
+ return networkInfo.isAvailable();
+ }
+
+ return false;
+ }
+
+ /**
+ * 判断网络连接是否可用
+ *
+ * @param context
+ * @return
+ */
+ public static boolean isNetworkAvailable(Context context) {
+ ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (cm == null) {
+ } else {
+ // 如果仅仅是用来判断网络连接
+ // 则可以使用 cm.getActiveNetworkInfo().isAvailable();
+ NetworkInfo[] info = cm.getAllNetworkInfo();
+ if (info != null) {
+ for (int i = 0; i < info.length; i++) {
+ if (info[i].getState() == NetworkInfo.State.CONNECTED) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return if the device is connected to mobile network.
+ *
+ * @return boolean
+ */
+ public static boolean isMobile(Context context) {
+ try {
+ ConnectivityManager connectivityManager = (ConnectivityManager) context
+ .getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
+ if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
+ return true;
+ }
+ } catch (Exception e) {
+ }
+ return false;
+ }
+
+ /**
+ * Return if the device is connected to wap network.
+ *
+ * @return boolean
+ */
+ public static boolean isWap(String proxyhost) {
+ Pattern pattern = Pattern.compile("^[0]{0,1}10\\.[0]{1,3}\\.[0]{1,3}\\.172$", Pattern.MULTILINE);
+ boolean ret = false;
+ Matcher m = pattern.matcher(proxyhost);
+ if (m.find()) {
+ ret = true;
+ } else {
+ ret = false;
+ }
+ return ret;
+ }
+
+ /**
+ * return if proxy is used for connect to the network
+ *
+ * @return
+ */
+ public static boolean isPorxyUsed(Context context) {
+ if (isWifi(context)) {
+ return false;
+ }
+
+ // 不管cmnet和cmwap都选择直连方式
+ if (readNetworkOperatorType(context) == NETWORK_OPERATOR_MOBILE) {
+ return false;
+ }
+
+ String proxyHost = android.net.Proxy.getDefaultHost();
+ if (isEmptyString(proxyHost)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * read the network operator type
+ */
+ public static int readNetworkOperatorType(Context context) {
+ TelephonyManager telManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+ String operator = telManager.getNetworkOperator();
+
+ // 飞行模式下 获取不到operator
+ if (isEmptyString(operator)) {
+ return NETWORK_OPERATOR_UNKOWN;
+ }
+
+ // 非中国运营商
+ String mcc = operator.substring(0, 3);
+ if (mcc == null || !mcc.equals("460")) {
+ return NETWORK_OPERATOR_UNKOWN;
+ }
+
+ // operator 由mcc + mnc组成 中国的mcc为460
+ // 这里取得mnc来判断是国内的哪个运营商
+ String mnc = operator.substring(3);
+ int mncIntVar = 0;
+ try {
+ mncIntVar = Integer.parseInt(mnc);
+ } catch (NumberFormatException e) {
+ }
+
+ switch (mncIntVar) {
+ case 0:
+ case 2:
+ case 7:
+ return NETWORK_OPERATOR_MOBILE;
+ case 1:
+ case 6:
+ return NETWORK_OPERATOR_UNICOM;
+ case 3:
+ case 5:
+ return NETWORK_OPERATOR_TELECOM;
+ default:
+ break;
+ }
+
+ return NETWORK_OPERATOR_UNKOWN;
+ }
+
+ /**
+ * gzip decompress
+ *
+ * @param is
+ * @param os
+ * @throws Exception
+ */
+ public static void decompress(InputStream is, OutputStream os) throws Exception {
+ GZIPInputStream gin = new GZIPInputStream(is);
+ int count;
+ byte data[] = new byte[1024];
+ while ((count = gin.read(data, 0, 1024)) != -1) {
+ os.write(data, 0, count);
+ }
+ gin.close();
+ }
+
+ /**
+ * gzip compress
+ *
+ * @param is
+ * @param os
+ * @throws Exception
+ */
+ public static void compress(InputStream is, OutputStream os) throws Exception {
+ GZIPOutputStream gos = new GZIPOutputStream(os);
+ int count;
+ byte data[] = new byte[1024];
+ while ((count = is.read(data, 0, 1024)) != -1) {
+ gos.write(data, 0, count);
+ }
+ gos.flush();
+ gos.finish();
+ gos.close();
+ }
+
+ public static byte[] compress(byte[] is) throws Exception {
+ ByteArrayInputStream tmpInput = new ByteArrayInputStream(is);
+ ByteArrayOutputStream tmpOutput = new ByteArrayOutputStream(1024);
+ HdHttpUtil.compress(tmpInput, tmpOutput);
+ return tmpOutput.toByteArray();
+ }
+}
diff --git a/app/src/main/res/drawable-xhdpi/gongzuo1_3x.png b/app/src/main/res/drawable-xhdpi/gongzuo1_3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..1793af4ae45281f4262b4d8404bec8dab32f637b
GIT binary patch
literal 2760
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
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable-xhdpi/gongzuo_3x.png b/app/src/main/res/drawable-xhdpi/gongzuo_3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..b6b2be0b71408bb67b35c6fc282ac16ea930b27f
GIT binary patch
literal 3335
zcmaJ^X;_l!8s@ZWYC36!J5d=qB8!${0xGzWVu)snIwQg-P_e|4YcV-)s5O;arD@`Z
zxl~G-T2i@9%TyX|wm23rAqeeZHT_x;?@^WN`|Peuv!HCke^
z1Ox&Zk^G2M-RPrx33`ik-&HR}F1o>7>>VZ!=EsWT=t2PG$>hfX5E7Tp0;m9;nXv0B
z;0^-Kx8sC_iNnYNZVW!xkv)aIK3+g)>;S}&7=Xp$VWIEaR8RX;Zo2v0HUbLy
zGeo=t3;jz}7?}bg@PzNd80X~37qSp236ZghKQ#N5GY6FTuEO8
z$>jeZ%H{qOEfQ0K|LFan#G;S{0f3+aBECe(&>dXt>bX<`H-ZqLi}}J3K7Z%eE>hTh
zF<->y3m^o-T-RJ6ux%V3lOHEq|0jk_b|djbVmgljkce2Qj>VC~VY(q*U7ZQeKF&lZ
zZ!`+!?SesidK0~!om`0CXdjHT=T|I|&ya8dp7<-4`5)|tZ(`@{z!m5+69FM-H^B4}
z^0|;d%XZ^@TMPP|e1Bt^-`3*vO)Nqu1~GTI|8>}3w{#AgoBm^6-Qpkf13aDMg*t1S
z85|;mK>BecqGw2azdF)C$IKhtP!gpVJZNX;
z;RhqVi&E^vzZ7#MO?ce4vUXb|h9Pt7JH}4eYdm#zEh6{MFP7`TjE0Hq$fWoNLa?e^
z_Mv4T^&?00NHJ`xQ{y4*oe6y{-
z)*f3lW~Hp}shGl?Em#8%o&ukgnrrGz?hf##dRy}@Eqs8Bf}I;A%DbRu+~RQ8ov}bz
z?Ukl-0N3wQ;fE>=b)YeEW6<^se>_TFSsqFEx+*Whwzbq$<{8B;IUq8n0v1KDy^5c%
zxD{69Trb>8-z9Y4qyK#1j%%IyIetit>5a&&8{vRS)(W56h-91S6-vJs2yX!X;-twR
z_Jwz*PC#Av(+hjzt*V>T-NP(vJRJL|iq19qCeUszk4KWn&D3PiRTwAi7
z)?k_S{z&J%dwZP{Z0=Z5+@U`b3gf?Nsrkz!Uty=^sRkMZF#0H
zeVltF&F0AUM*ClTHjlfQ$+Vqh?J3j)=gXUR7AXpE97-~{-!B1;epoA6IaC!QIU@Rj?i*Iw%;Fl<;py}koKn$0HbkY5+|ol2d1m`)
zUDmU&lC`q6uwQz#2hgNw%gt#u(xpmvO8@@EB%PwTu=TG$l@BK6ZKE-Imw9TBW@xTk
zupHlM!Q(|EzS%3qprk&?r0&4Mi^=)d)XTzm&`m_eU@)>n$zf#rxp`f7#D7%dt026vM3_H3Hx%dWh
zR!Hfm@M%kK)-f9N&v|0zHqz6ky9ZkWrIJIr}q)`|6ELB>Pp?QDVy~-0-%{KmlK4NRVdgKhB
zaShk$WE@e%ftpp#Y@$@X(3ltAYHk9L8z)3u>rPm6h4NB?@E#a?E^RAynTR`2%^-g^=~GO$l$&A9}Z=De1;-%p?q|s>
z$uE16CHp(IyQ6DPo&&dqrY@rdf;+3gGs_%}l`VZDTdtFmZ^&z9mHWbr&$t
z_qIvk!2klXD~5OzxO^eqnz67(g`BQBF$^v4c}DwQV->LeUtHKCDXr*;O{`w;FkV(Z
z6XhyNFzkv}hQtRr^>tjiIOA}MzMK#1vmK(I9N*pr`kbFD{sOofk6LCu9XoyJsP7;1
z=|y1*{NS+*RvEsOwxutOSV7DKa>EM-@t%-@xWCnmD>9?>P#(hi{S7==~)+`Km0N;tp198jghirUYA2WKdT;yduN6B^OQG$a&vTpGwqP2OYUziaEGdI>O)IlJO;WGv-dm11S<)$72V@+)t~So!nwvYe@^K
zH?v*+F=#fnI-^CQDm0@hsp1@1s%GkHq_(dkSzY=nqO9S!Pg}H>bl69>QhkIE8)qp^
zW{lPNGm}c~Icme$>BO$gW4eU;Pj}Z7Ay5Zw-47`FbM=61g-y;1()Y^)jk9InjmO6j
zCEorqm5AYSRiuASEnQt2X#D1MXXakGkJh^OXD@#^ysIkz%gsnN-rc7nx8>~$^xQ2T
z+Ka9}u&&WrC5Bfn4_LFbi#nT}{yZo-in}Uz;Ed2>Gee=8th;rhSOTx?c#WBl*CY{h
zV8-M4!#QMwQe`uX%L(~ztM8|HpZNZx_O
J2CwLpe*<_!+&usQ
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable-xhdpi/shouye1_3x.png b/app/src/main/res/drawable-xhdpi/shouye1_3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9ee872dbf7fb4ba00d2bb83209db18af15b1856
GIT binary patch
literal 2552
zcmaJ@c|4T+9v*~#mpETX{dF}Qm{c!I;XoQ3$xndA3?YQ@WAWo5fXrniLJ<&ywQcJ)$P0nc
zvSCNjU>YTaz~pmLj5!QS!WF352!xl9M8IHjAQ*^;64^X&aJ0D<1lTNZkm^doPy_)`
z5}TAJgd)>IqnK$NrUwi3Sp#@U2x3QNW8%>x&-xp?ivjOUm!5Y8~igV
z8YK(};0qzZ6@_@2LXcxzCNHjnvj)1
zh#;>08cTih29sb|KtQ9#VlhhWjN%Iu(O3@;4>Sgc#^IdQ2q)1t9?Xz9@kG|&6o`9WfRyx&IR{F
zy{}x>k8^SUAs4Mq20b_2{~GqUE472>w%@I*K72Pn#8W$7sJ6CDAJ~pS=p>Peeo>MK
z!<#tCCebD>v6UpNCFKBJ`;5R4f%<+cpZiUy5*tv#6+eR(C)
z&OVv$ja;tY{5!)%33t;BF*=gfz{_k;xKUj%N+e68$l
zV$`XUDmW>#q4F!QF7T_R1y;Ywn!+ndir(g^8}y0P(g}GXts4nh?Cfgt6YC?Nikmjz
z^Ip4ij8w`OG-P;*9{YfaxZtjFYwt!DM|x;95_sQq?s{gparmiKTWm4poXF_e(9xq^
z`v{M9LNrJJaIm&+?Kc&arcYwO|RTb-T97Hzw|SYCSN
zSKppTHUn#BLh8*r^NUE*&h?e)hxDz6Wa<0rsh#;Y&AC?Q$eV+|^p^_E#wxeAUb2a^
zIeqqsYNcW#zkP{$)pQ}ME=;5UQQ;WJAK9j9Kc#H+!CWmXmYC+G2X;iZWjBV#36_oE
z2a>D0xI)_fK_i*b{%1F|US@-I`!TkDknG>t#ssu`yIC6=uc1o7wJ|lpLL!nis73
zE3GrksWvO)+;U{JlC8Y3nYdeC+xtBISP*CUYT>f9K98}EjV#|kqM>!LvP*(
zRG|>4S%lY=yQ?1jod$;qx+4*6Ydv=?VL12(DKTEmoZRCg4I!^PWO-BB1xQ
zt|tk~#d)sZ7pikePq@?;;Ri9P&TeFRBLG&AD9S{0&*MJgI@oKPfe?XC}
zY{2rK5qR3IfQ4+c>E7`nI0*cMYjd}3-`|&BGkS^w!E@NvmeT3K;sG_jcIE66u0d|)
zgz?zPl0Lk4a#nJ;s!BKVCQ*XQpiJ+-urt=2B$R3GweDfEg>
z(Hxh{VYWKsq^8q>cHf#4u?O=!1v3>eS{B_tGV8v9>@K@%Xr`I
vPvyy*4Wx8vHoZ%C*!0ohyMOMQXO6h?Iq}rHe+1ag{fm(ULy0y1^xgjf|H&QZ
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable-xhdpi/shouye_3x.png b/app/src/main/res/drawable-xhdpi/shouye_3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..86c0f467e414e14d6f5b162ec968f62f388828ab
GIT binary patch
literal 2893
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
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable-xhdpi/wode1_3x.png b/app/src/main/res/drawable-xhdpi/wode1_3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0ef40795985401f3458b48ef4c4f0f0d01146de
GIT binary patch
literal 2462
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
JN?k$^{s-hMS_=RG
literal 0
HcmV?d00001
diff --git a/app/src/main/res/layout/act_login.xml b/app/src/main/res/layout/act_login.xml
new file mode 100644
index 0000000..332e845
--- /dev/null
+++ b/app/src/main/res/layout/act_login.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 7f21df9..cc018a1 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -23,6 +23,7 @@
#888888
#f4f4f4
#dbdbdb
+ #cacaca
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 9caafe2..40ea8ad 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -131,9 +131,9 @@
8px
20px
- @dimen/text_size_16
- 30dp
- 30dp
+ @dimen/text_size_12
+ 28dp
+ 28dp
8dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 412173c..5e5c09b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4,4 +4,7 @@
工作
我的
再按一次返回键退出应用
+ 请输入用户名
+ 请输入密码
+ 登录
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 8b8bd9b..553594a 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -32,7 +32,8 @@