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 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 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +