liuyuqi-dellpc 4 years ago
parent
commit
8c3ba303fc
25 changed files with 87 additions and 233 deletions
  1. 6 3
      app/src/main/AndroidManifest.xml
  2. 18 0
      app/src/main/java/me/yoqi/android/netauth/App.java
  3. 8 3
      app/src/main/java/me/yoqi/android/netauth/MainActivity.java
  4. 12 2
      app/src/main/java/me/yoqi/android/netauth/data/LoginDataSource.java
  5. 8 0
      app/src/main/java/me/yoqi/android/netauth/data/LoginRepository.java
  6. 3 3
      app/src/main/java/me/yoqi/android/netauth/data/model/LoggedInUser.java
  7. 2 3
      app/src/main/java/me/yoqi/android/netauth/ui/login/LoginActivity.java
  8. 25 4
      app/src/main/java/me/yoqi/android/netauth/ui/login/LoginViewModel.java
  9. 0 30
      app/src/main/res/drawable-v24/ic_launcher_foreground.xml
  10. 0 170
      app/src/main/res/drawable/ic_launcher_background.xml
  11. 2 2
      app/src/main/res/layout/activity_login.xml
  12. 0 5
      app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  13. 0 5
      app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  14. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher.png
  15. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher_round.png
  16. BIN
      app/src/main/res/mipmap-mdpi/ic_launcher.png
  17. BIN
      app/src/main/res/mipmap-mdpi/ic_launcher_round.png
  18. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher.png
  19. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
  20. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  21. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
  22. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  23. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
  24. 1 1
      app/src/main/res/values-zh/strings.xml
  25. 2 2
      app/src/main/res/values/strings.xml

+ 6 - 3
app/src/main/AndroidManifest.xml

@@ -3,21 +3,24 @@
     package="me.yoqi.android.netauth">
     <!-- 获取网络状态 -->
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.INTERNET" /> <!-- 存储权限 -->
+    <uses-permission android:name="android.permission.INTERNET" />
+    <!-- 存储权限 -->
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
     <application
+        android:name=".App"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
-        android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
         <activity
             android:name=".ui.login.LoginActivity"
             android:label="@string/title_activity_login" />
-        <activity android:name=".MainActivity">
+        <activity
+            android:name=".MainActivity"
+            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 

+ 18 - 0
app/src/main/java/me/yoqi/android/netauth/App.java

@@ -0,0 +1,18 @@
+package me.yoqi.android.netauth;
+
+import android.app.Application;
+import android.content.Context;
+
+/**
+ * @author liuyuqi.gov@msn.cn
+ * @created 2020-10-17
+ */
+public class App extends Application {
+    Context mContext;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mContext = this;
+    }
+}

+ 8 - 3
app/src/main/java/me/yoqi/android/netauth/MainActivity.java

@@ -35,14 +35,18 @@ public class MainActivity extends AppCompatActivity {
         btnLogin.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                //跳转到登录界面
-                Intent intent = new Intent(mContext, LoginActivity.class);
-                startActivity(intent);
+                gotoLogin();
             }
         });
         changeStatus();
     }
 
+    void gotoLogin() {
+        //跳转到登录界面
+        Intent intent = new Intent(mContext, LoginActivity.class);
+        startActivity(intent);
+    }
+
     @Override
     protected void onResume() {
         super.onResume();
@@ -55,6 +59,7 @@ public class MainActivity extends AppCompatActivity {
             tvStatus.setText("登录成功");
         } else {
             tvStatus.setText("未登录");
+            gotoLogin();
         }
     }
 }

+ 12 - 2
app/src/main/java/me/yoqi/android/netauth/data/LoginDataSource.java

@@ -1,14 +1,21 @@
 package me.yoqi.android.netauth.data;
 
-import me.yoqi.android.netauth.data.model.LoggedInUser;
-
 import java.io.IOException;
 
+import me.yoqi.android.netauth.data.model.LoggedInUser;
+
 /**
  * Class that handles authentication w/ login credentials and retrieves user information.
  */
 public class LoginDataSource {
 
+    /**
+     * 登录
+     *
+     * @param username 用户名
+     * @param password 密码
+     * @return
+     */
     public Result<LoggedInUser> login(String username, String password) {
 
         try {
@@ -23,6 +30,9 @@ public class LoginDataSource {
         }
     }
 
+    /**
+     * 退出
+     */
     public void logout() {
         // TODO: revoke authentication
     }

+ 8 - 0
app/src/main/java/me/yoqi/android/netauth/data/LoginRepository.java

@@ -3,6 +3,7 @@ package me.yoqi.android.netauth.data;
 import me.yoqi.android.netauth.data.model.LoggedInUser;
 
 /**
+ * 数据层面操作
  * Class that requests authentication and user information from the remote data source and
  * maintains an in-memory cache of login status and user credentials information.
  */
@@ -43,6 +44,13 @@ public class LoginRepository {
         // @see https://developer.android.com/training/articles/keystore
     }
 
+    /**
+     * 登录
+     *
+     * @param username 用户名
+     * @param password 密码
+     * @return 登录成功
+     */
     public Result<LoggedInUser> login(String username, String password) {
         // handle login
         Result<LoggedInUser> result = dataSource.login(username, password);

+ 3 - 3
app/src/main/java/me/yoqi/android/netauth/data/model/LoggedInUser.java

@@ -1,12 +1,12 @@
 package me.yoqi.android.netauth.data.model;
 
 /**
- * Data class that captures user information for logged in users retrieved from LoginRepository
+ * 用户表
  */
 public class LoggedInUser {
 
-    private String userId;
-    private String displayName;
+    private String userId; //id
+    private String displayName; // 用户名
 
     public LoggedInUser(String userId, String displayName) {
         this.userId = userId;

+ 2 - 3
app/src/main/java/me/yoqi/android/netauth/ui/login/LoginActivity.java

@@ -43,6 +43,7 @@ public class LoginActivity extends AppCompatActivity {
         final Button loginButton = findViewById(R.id.login);   //登录按钮
         final ProgressBar loadingProgressBar = findViewById(R.id.loading);
 
+//        信息验证
         loginViewModel.getLoginFormState().observe(this, new Observer<LoginFormState>() {
             @Override
             public void onChanged(@Nullable LoginFormState loginFormState) {
@@ -73,8 +74,6 @@ public class LoginActivity extends AppCompatActivity {
                     updateUiWithUser(loginResult.getSuccess());
                 }
                 setResult(Activity.RESULT_OK);
-
-                //Complete and destroy login activity once successful
                 finish();
             }
         });
@@ -109,7 +108,7 @@ public class LoginActivity extends AppCompatActivity {
                 return false;
             }
         });
-
+        // 点击事件
         loginButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {

+ 25 - 4
app/src/main/java/me/yoqi/android/netauth/ui/login/LoginViewModel.java

@@ -1,15 +1,15 @@
 package me.yoqi.android.netauth.ui.login;
 
+import android.util.Patterns;
+
 import androidx.lifecycle.LiveData;
 import androidx.lifecycle.MutableLiveData;
 import androidx.lifecycle.ViewModel;
 
-import android.util.Patterns;
-
+import me.yoqi.android.netauth.R;
 import me.yoqi.android.netauth.data.LoginRepository;
 import me.yoqi.android.netauth.data.Result;
 import me.yoqi.android.netauth.data.model.LoggedInUser;
-import me.yoqi.android.netauth.R;
 
 /**
  *
@@ -24,26 +24,47 @@ public class LoginViewModel extends ViewModel {
         this.loginRepository = loginRepository;
     }
 
+    /**
+     * @return
+     */
     LiveData<LoginFormState> getLoginFormState() {
         return loginFormState;
     }
 
+    /**
+     * 获取登录结果
+     *
+     * @return
+     */
     LiveData<LoginResult> getLoginResult() {
         return loginResult;
     }
 
+    /**
+     * 登录
+     *
+     * @param username 用户名
+     * @param password 密码
+     */
     public void login(String username, String password) {
-        // can be launched in a separate asynchronous job
         Result<LoggedInUser> result = loginRepository.login(username, password);
 
         if (result instanceof Result.Success) {
             LoggedInUser data = ((Result.Success<LoggedInUser>) result).getData();
             loginResult.setValue(new LoginResult(new LoggedInUserView(data.getDisplayName())));
+            //登录成功,跳转到 MainActivity
+
         } else {
             loginResult.setValue(new LoginResult(R.string.login_failed));
         }
     }
 
+    /**
+     * 密码框更改事件
+     *
+     * @param username
+     * @param password
+     */
     public void loginDataChanged(String username, String password) {
         if (!isUserNameValid(username)) {
             loginFormState.setValue(new LoginFormState(R.string.invalid_username, null));

+ 0 - 30
app/src/main/res/drawable-v24/ic_launcher_foreground.xml

@@ -1,30 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:aapt="http://schemas.android.com/aapt"
-    android:width="108dp"
-    android:height="108dp"
-    android:viewportWidth="108"
-    android:viewportHeight="108">
-    <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
-        <aapt:attr name="android:fillColor">
-            <gradient
-                android:endX="85.84757"
-                android:endY="92.4963"
-                android:startX="42.9492"
-                android:startY="49.59793"
-                android:type="linear">
-                <item
-                    android:color="#44000000"
-                    android:offset="0.0" />
-                <item
-                    android:color="#00000000"
-                    android:offset="1.0" />
-            </gradient>
-        </aapt:attr>
-    </path>
-    <path
-        android:fillColor="#FFFFFF"
-        android:fillType="nonZero"
-        android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
-        android:strokeWidth="1"
-        android:strokeColor="#00000000" />
-</vector>

+ 0 - 170
app/src/main/res/drawable/ic_launcher_background.xml

@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="108dp"
-    android:height="108dp"
-    android:viewportWidth="108"
-    android:viewportHeight="108">
-    <path
-        android:fillColor="#3DDC84"
-        android:pathData="M0,0h108v108h-108z" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M9,0L9,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,0L19,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M29,0L29,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M39,0L39,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M49,0L49,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M59,0L59,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M69,0L69,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M79,0L79,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M89,0L89,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M99,0L99,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,9L108,9"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,19L108,19"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,29L108,29"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,39L108,39"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,49L108,49"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,59L108,59"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,69L108,69"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,79L108,79"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,89L108,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,99L108,99"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,29L89,29"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,39L89,39"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,49L89,49"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,59L89,59"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,69L89,69"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,79L89,79"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M29,19L29,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M39,19L39,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M49,19L49,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M59,19L59,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M69,19L69,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M79,19L79,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-</vector>

+ 2 - 2
app/src/main/res/layout/activity_login.xml

@@ -18,8 +18,8 @@
         android:layout_marginStart="24dp"
         android:layout_marginTop="96dp"
         android:layout_marginEnd="24dp"
-        android:hint="@string/prompt_email"
-        android:inputType="textEmailAddress"
+        android:hint="@string/prompt_account"
+        android:inputType="text"
         android:selectAllOnFocus="true"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"

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

BIN
app/src/main/res/mipmap-hdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-hdpi/ic_launcher_round.png


BIN
app/src/main/res/mipmap-mdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-mdpi/ic_launcher_round.png


BIN
app/src/main/res/mipmap-xhdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_round.png


BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png


BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher.png


BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png


+ 1 - 1
app/src/main/res/values-zh/strings.xml

@@ -2,6 +2,6 @@
 <resources>
     <string name="app_name">通大校园网</string>
     <string name="title_activity_login">登录</string>
-    <string name="prompt_email">账户</string>
+    <string name="prompt_account">账户</string>
     <string name="prompt_password">密码</string>
 </resources>

+ 2 - 2
app/src/main/res/values/strings.xml

@@ -1,7 +1,7 @@
 <resources>
     <string name="app_name">NetAuth</string>
-    <string name="title_activity_login">LoginActivity</string>
-    <string name="prompt_email">Email</string>
+    <string name="title_activity_login">Login In</string>
+    <string name="prompt_account">Account</string>
     <string name="prompt_password">Password</string>
     <string name="action_sign_in">Sign in</string>
     <string name="action_sign_in_short">Sign in</string>