drew 6 лет назад
Родитель
Сommit
89eeb81f76

+ 5 - 4
app/src/main/AndroidManifest.xml

@@ -12,16 +12,17 @@
         android:theme="@style/AppTheme"
         tools:ignore="GoogleAppIndexingWarning"
         tools:replace="android:supportsRtl">
-        <activity android:name=".SettingsActivity"></activity>
-        <activity android:name=".WelcomeActivity" />
-        <activity android:name=".MainActivity" />
-        <activity android:name=".LoginActivity">
+        <activity android:name=".LaunchActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity android:name=".SettingsActivity" />
+        <activity android:name=".WelcomeActivity" />
+        <activity android:name=".MainActivity" />
+        <activity android:name=".LoginActivity" />
     </application>
 
 </manifest>

+ 22 - 0
app/src/main/java/com/ht/gate/LaunchActivity.java

@@ -0,0 +1,22 @@
+package com.ht.gate;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+public class LaunchActivity extends AppCompatActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (TextUtils.isEmpty(getSharedPreferences(SettingsActivity.PREF_NAME_SETTINGS, MODE_PRIVATE)
+                .getString(SettingsActivity.PREF_KEY_SPACE_ID, null))) {
+            startActivity(new Intent(this, LoginActivity.class));
+        } else {
+            startActivity(new Intent(this, MainActivity.class));
+        }
+        finish();
+    }
+}

+ 5 - 0
app/src/main/java/com/ht/gate/LoginActivity.java

@@ -76,7 +76,12 @@ public class LoginActivity extends AppCompatActivity {
                         unlockView.setVisibility(View.VISIBLE);
                         break;
                     case CustomKeyboardView.KEYCODE_DONE:
+                        getSharedPreferences(SettingsActivity.PREF_NAME_SETTINGS, MODE_PRIVATE)
+                                .edit()
+                                .putString(SettingsActivity.PREF_KEY_SPACE_ID, et.getText().toString())
+                                .apply();
                         startActivity(new Intent(LoginActivity.this, MainActivity.class));
+                        finish();
                         break;
                     case CustomKeyboardView.KEYCODE_DELETE:
                         if (editable != null && editable.length() > 0) {

+ 8 - 0
app/src/main/java/com/ht/gate/MainActivity.java

@@ -3,8 +3,10 @@ package com.ht.gate;
 import androidx.appcompat.app.AppCompatActivity;
 
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.view.View;
+import android.widget.TextView;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
@@ -14,12 +16,17 @@ public class MainActivity extends AppCompatActivity {
 
     @BindView(R.id.unlock_view)
     UnlockView unlockView;
+    @BindView(R.id.tv_space_name)
+    TextView tvSpaceName;
+
+    private SharedPreferences sharedPreferences;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         ButterKnife.bind(this);
+        sharedPreferences = getSharedPreferences(SettingsActivity.PREF_NAME_SETTINGS, MODE_PRIVATE);
         unlockView.setUnlockListener(() -> {
             PasswordDialog passwordDialog = new PasswordDialog(MainActivity.this);
             passwordDialog.show();
@@ -34,6 +41,7 @@ public class MainActivity extends AppCompatActivity {
                 | View.SYSTEM_UI_FLAG_FULLSCREEN
                 | View.SYSTEM_UI_FLAG_IMMERSIVE;
         decorView.setSystemUiVisibility(uiOptions);
+        tvSpaceName.setText(sharedPreferences.getString(SettingsActivity.PREF_KEY_SPACE_NAME, ""));
     }
 
     @OnClick(R.id.btn_settings)

+ 9 - 4
app/src/main/java/com/ht/gate/PasswordDialog.java

@@ -1,6 +1,5 @@
 package com.ht.gate;
 
-import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
@@ -11,6 +10,7 @@ import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import androidx.appcompat.app.AppCompatDialog;
 
@@ -25,7 +25,7 @@ public class PasswordDialog extends AppCompatDialog {
     CustomKeyboardView keyboardView;
     @BindView(R.id.tv1)
     TextView tv1;
-    @BindView(R.id.tv2)
+    @BindView(R.id.tv_space_name)
     TextView tv2;
     @BindView(R.id.tv3)
     TextView tv3;
@@ -87,8 +87,13 @@ public class PasswordDialog extends AppCompatDialog {
                         dismiss();
                         break;
                     case CustomKeyboardView.KEYCODE_DONE:
-                        dismiss();
-                        getContext().startActivity(new Intent(getContext(), WelcomeActivity.class));
+                        if (password.equals("8888")) {
+                            dismiss();
+                            getContext().startActivity(new Intent(getContext(), WelcomeActivity.class));
+                        } else {
+                            Toast.makeText(getContext(), "密码错误", Toast.LENGTH_SHORT).show();
+                        }
+
                         break;
                     case CustomKeyboardView.KEYCODE_DELETE:
                         if (password.length() > 0) {

+ 84 - 0
app/src/main/java/com/ht/gate/PromptBuilder.java

@@ -0,0 +1,84 @@
+package com.ht.gate;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.text.InputType;
+import android.view.ViewGroup;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+
+import androidx.appcompat.app.AlertDialog;
+
+public class PromptBuilder {
+
+    public interface PromptListener {
+        void onCancel(DialogInterface dialog);
+
+        void onConfirm(DialogInterface dialog, String value);
+    }
+
+    private AlertDialog.Builder mBuilder;
+    private Context mContext;
+    private int mInputType;
+    private EditText input;
+    private PromptListener mPromptListener;
+
+    public PromptBuilder(Context context) {
+        mContext = context;
+        mBuilder = new AlertDialog.Builder(context);
+        mInputType = InputType.TYPE_CLASS_TEXT;
+        input = new EditText(mContext);
+    }
+
+    public PromptBuilder setPromptListener(PromptListener listener) {
+        mPromptListener = listener;
+        return this;
+    }
+
+    public PromptBuilder setTitle(String title) {
+        mBuilder.setTitle(title);
+        return this;
+    }
+
+    public PromptBuilder setValue(String value) {
+        input.setText(value);
+        return this;
+    }
+
+    public PromptBuilder setPositiveButton(String text) {
+        mBuilder.setPositiveButton(text, (dialog, which) -> {
+            if (mPromptListener != null) {
+                mPromptListener.onConfirm(dialog, input.getText().toString());
+            }
+        });
+        return this;
+    }
+
+    public PromptBuilder setNegativeButton(String text) {
+        mBuilder.setNegativeButton(text, (dialog, which) -> {
+            if (mPromptListener != null) {
+                mPromptListener.onCancel(dialog);
+            }
+        });
+        return this;
+    }
+
+    public PromptBuilder setInputType(int inputType) {
+        mInputType = inputType;
+        return this;
+    }
+
+    public void show() {
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+        input.setLayoutParams(params);
+        input.setInputType(mInputType);
+
+        LinearLayout linearLayout = new LinearLayout(mContext);
+        linearLayout.setPadding(Utils.dp2px(18, mContext), 0, Utils.dp2px(18, mContext), 0);
+        linearLayout.addView(input);
+        mBuilder.setView(linearLayout);
+        mBuilder.show();
+    }
+
+}

+ 95 - 26
app/src/main/java/com/ht/gate/SettingsActivity.java

@@ -1,25 +1,34 @@
 package com.ht.gate;
 
-import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatActivity;
 
+import android.annotation.SuppressLint;
+import android.content.DialogInterface;
 import android.content.SharedPreferences;
 import android.os.Bundle;
-import android.text.InputType;
-import android.view.ViewGroup;
-import android.widget.EditText;
-import android.widget.LinearLayout;
+import android.view.View;
 import android.widget.TextView;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
 
+@SuppressLint("SetTextI18n")
 public class SettingsActivity extends AppCompatActivity {
+    @BindView(R.id.tv_title)
+    TextView tvTitle;
     @BindView(R.id.tv_space_id)
     TextView tvSpaceId;
     @BindView(R.id.tv_space_name)
     TextView tvSpaceName;
+    @BindView(R.id.tv_address)
+    TextView tvAddreess;
+
+    public static final String PREF_NAME_SETTINGS = "settings";
+    public static final String PREF_KEY_SPACE_ID = "spaceId";
+    public static final String PREF_KEY_SPACE_NAME = "spaceName";
+    public static final String PREF_KEY_ADDRESS = "address";
+
 
     private SharedPreferences sharedPreferences;
 
@@ -28,13 +37,21 @@ public class SettingsActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_settings);
         ButterKnife.bind(this);
-        sharedPreferences = getSharedPreferences("settings", MODE_PRIVATE);
+        sharedPreferences = getSharedPreferences(PREF_NAME_SETTINGS, MODE_PRIVATE);
     }
 
     @Override
     protected void onResume() {
         super.onResume();
-        tvSpaceId.setText(sharedPreferences.getString("spaceId", ""));
+        View decorView = getWindow().getDecorView();
+        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                | View.SYSTEM_UI_FLAG_FULLSCREEN
+                | View.SYSTEM_UI_FLAG_IMMERSIVE;
+        decorView.setSystemUiVisibility(uiOptions);
+        tvTitle.setText("财富管理室" + sharedPreferences.getString(PREF_KEY_SPACE_NAME, ""));
+        tvSpaceId.setText(sharedPreferences.getString(PREF_KEY_SPACE_ID, ""));
+        tvSpaceName.setText(sharedPreferences.getString(PREF_KEY_SPACE_NAME, ""));
+        tvAddreess.setText(sharedPreferences.getString(PREF_KEY_ADDRESS, ""));
     }
 
     @OnClick(R.id.btn_back)
@@ -44,26 +61,78 @@ public class SettingsActivity extends AppCompatActivity {
 
     @OnClick(R.id.btn_change_space_id)
     void changeSpaceId() {
-        AlertDialog.Builder builder = new AlertDialog.Builder(this);
-        builder.setTitle("输入空间ID");
-        final EditText input = new EditText(this);
-        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        input.setLayoutParams(params);
-        input.setInputType(InputType.TYPE_CLASS_TEXT);
-
-        LinearLayout linearLayout = new LinearLayout(this);
-        linearLayout.setPadding(Utils.dp2px(18, SettingsActivity.this), 0, Utils.dp2px(18, SettingsActivity.this), 0);
-        linearLayout.addView(input);
-        builder.setView(linearLayout);
-        builder.setPositiveButton("确定", (dialog, which) -> {
-            sharedPreferences = getSharedPreferences("settings", MODE_PRIVATE);
-            sharedPreferences.edit()
-                    .putString("spaceId", input.getText().toString())
-                    .apply();
-        });
-        builder.setNegativeButton("取消", (dialog, which) -> dialog.cancel());
-        builder.show();
+        new PromptBuilder(this)
+                .setTitle("输入空间ID")
+                .setValue(tvSpaceId.getText().toString())
+                .setPositiveButton("确定")
+                .setNegativeButton("取消")
+                .setPromptListener(new PromptBuilder.PromptListener() {
+                    @Override
+                    public void onCancel(DialogInterface dialog) {
+                        dialog.dismiss();
+                    }
+
+                    @Override
+                    public void onConfirm(DialogInterface dialog, String value) {
+                        dialog.dismiss();
+                        tvSpaceId.setText(value);
+                        sharedPreferences.edit()
+                                .putString(PREF_KEY_SPACE_ID, value)
+                                .apply();
+                    }
+                })
+                .show();
+    }
+
+    @OnClick(R.id.btn_change_space_name)
+    void changeSpaceName() {
+        new PromptBuilder(this)
+                .setTitle("输入空间名称")
+                .setValue(tvSpaceName.getText().toString())
+                .setPositiveButton("确定")
+                .setNegativeButton("取消")
+                .setPromptListener(new PromptBuilder.PromptListener() {
+                    @Override
+                    public void onCancel(DialogInterface dialog) {
+                        dialog.dismiss();
+                    }
+
+                    @Override
+                    public void onConfirm(DialogInterface dialog, String value) {
+                        dialog.dismiss();
+                        tvTitle.setText("财富管理室" + value);
+                        tvSpaceName.setText(value);
+                        sharedPreferences.edit()
+                                .putString(PREF_KEY_SPACE_NAME, value)
+                                .apply();
+                    }
+                })
+                .show();
     }
 
+    @OnClick(R.id.btn_change_address)
+    void changeAddress() {
+        new PromptBuilder(this)
+                .setTitle("输入空间门禁地址")
+                .setValue(tvAddreess.getText().toString())
+                .setPositiveButton("确定")
+                .setNegativeButton("取消")
+                .setPromptListener(new PromptBuilder.PromptListener() {
+                    @Override
+                    public void onCancel(DialogInterface dialog) {
+                        dialog.dismiss();
+                    }
+
+                    @Override
+                    public void onConfirm(DialogInterface dialog, String value) {
+                        dialog.dismiss();
+                        tvAddreess.setText(value);
+                        sharedPreferences.edit()
+                                .putString(PREF_KEY_ADDRESS, value)
+                                .apply();
+                    }
+                })
+                .show();
+    }
 
 }

+ 4 - 3
app/src/main/java/com/ht/gate/UnlockView.java

@@ -50,6 +50,7 @@ public class UnlockView extends View {
     private int colorUnlockedLight = 0x11C1C3CD;
     private int colorUnlockedDark = 0x1E222639;
     private boolean dark;
+    private boolean preUnlock = false;
 
     private String hint;
 
@@ -213,15 +214,15 @@ public class UnlockView extends View {
             case MotionEvent.ACTION_UP:
                 distance = 0;
                 down = false;
-                unlocked = false;
+                preUnlock = false;
                 postInvalidate();
                 break;
             case MotionEvent.ACTION_MOVE:
                 if (down) {
                     distance += event.getX() - lastX;
                     lastX = event.getX();
-                    if (distance >= getWidth() - padding * 2 - (getHeight() - padding * 2) && !unlocked) {
-                        unlocked = true;
+                    if (distance >= getWidth() - padding * 2 - (getHeight() - padding * 2) && !preUnlock) {
+                        preUnlock = true;
                         if (unlockListener != null) {
                             unlockListener.onUnlock();
                         }

+ 28 - 0
app/src/main/java/com/ht/gate/WelcomeActivity.java

@@ -3,18 +3,46 @@ package com.ht.gate;
 import androidx.appcompat.app.AppCompatActivity;
 
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
 
+import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
 
 public class WelcomeActivity extends AppCompatActivity {
+    @BindView(R.id.unlock_view)
+    UnlockView unlockView;
+    @BindView(R.id.tv_space_name)
+    TextView tvSpaceName;
+
+    private SharedPreferences sharedPreferences;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_welcome);
         ButterKnife.bind(this);
+        sharedPreferences = getSharedPreferences(SettingsActivity.PREF_NAME_SETTINGS, MODE_PRIVATE);
+        unlockView.setUnlockListener(new UnlockView.UnlockListener() {
+            @Override
+            public void onUnlock() {
+                unlockView.setUnlocked(true);
+            }
+        });
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        View decorView = getWindow().getDecorView();
+        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                | View.SYSTEM_UI_FLAG_FULLSCREEN
+                | View.SYSTEM_UI_FLAG_IMMERSIVE;
+        decorView.setSystemUiVisibility(uiOptions);
+        tvSpaceName.setText(sharedPreferences.getString(SettingsActivity.PREF_KEY_SPACE_NAME, ""));
     }
 
     @OnClick(R.id.btn_settings)

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

@@ -6,7 +6,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:keepScreenOn="true"
-    tools:context=".LoginActivity">
+    tools:mContext=".LoginActivity">
 
     <com.ht.gate.VideoBackground
         android:id="@+id/video_view"

+ 3 - 3
app/src/main/res/layout/activity_main.xml

@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".MainActivity">
+    tools:mContext=".MainActivity">
 
     <com.ht.gate.VideoBackground
         android:layout_width="match_parent"
@@ -47,7 +47,7 @@
         app:layout_constraintTop_toBottomOf="@id/iv_logo" />
 
     <TextView
-        android:id="@+id/tv2"
+        android:id="@+id/tv_space_name"
         android:layout_width="wrap_content"
         android:layout_height="227dp"
         android:fontFamily="@font/fzqkbysjw"
@@ -67,5 +67,5 @@
         android:layout_marginTop="41dp"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/tv2" />
+        app:layout_constraintTop_toBottomOf="@id/tv_space_name" />
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 2 - 1
app/src/main/res/layout/activity_settings.xml

@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".SettingsActivity">
+    tools:mContext=".SettingsActivity">
 
     <com.ht.gate.VideoBackground
         android:layout_width="match_parent"
@@ -41,6 +41,7 @@
             android:textSize="64sp" />
 
         <TextView
+            android:id="@+id/tv_title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:fontFamily="@font/fzqkbysjw"

+ 4 - 3
app/src/main/res/layout/activity_welcome.xml

@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".WelcomeActivity">
+    tools:mContext=".WelcomeActivity">
 
     <com.ht.gate.VideoBackground
         android:layout_width="match_parent"
@@ -30,11 +30,11 @@
             android:textSize="32sp"
             app:layout_constraintHorizontal_chainStyle="packed"
             app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintRight_toLeftOf="@id/tv_room_name"
+            app:layout_constraintRight_toLeftOf="@id/tv_space_name"
             app:layout_constraintTop_toTopOf="parent" />
 
         <TextView
-            android:id="@+id/tv_room_name"
+            android:id="@+id/tv_space_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginLeft="12dp"
@@ -48,6 +48,7 @@
             app:layout_constraintRight_toRightOf="parent" />
 
         <com.ht.gate.UnlockView
+            android:id="@+id/unlock_view"
             android:layout_width="338dp"
             android:layout_height="71dp"
             android:layout_marginTop="129dp"

+ 1 - 1
app/src/main/res/layout/dialog_password.xml

@@ -23,7 +23,7 @@
             android:textSize="37sp" />
 
         <TextView
-            android:id="@+id/tv2"
+            android:id="@+id/tv_space_name"
             android:layout_width="71dp"
             android:layout_height="71dp"
             android:layout_marginLeft="11dp"