feature/child_mode #153
|
@ -15,6 +15,9 @@
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/Theme.KidShift"
|
android:theme="@style/Theme.KidShift"
|
||||||
tools:targetApi="31">
|
tools:targetApi="31">
|
||||||
|
<activity
|
||||||
|
android:name=".ChildLoginActivity"
|
||||||
|
android:exported="false" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".RegisterActivity"
|
android:name=".RegisterActivity"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
|
|
89
app/src/main/java/one/nem/kidshift/ChildLoginActivity.java
Normal file
89
app/src/main/java/one/nem/kidshift/ChildLoginActivity.java
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
package one.nem.kidshift;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.TextWatcher;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.activity.EdgeToEdge;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.core.graphics.Insets;
|
||||||
|
import androidx.core.view.ViewCompat;
|
||||||
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
|
|
||||||
|
public class ChildLoginActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
|
||||||
|
private EditText loginCode1, loginCode2, loginCode3, loginCode4, loginCode5, loginCode6, loginCode7, loginCode8;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
EdgeToEdge.enable(this);
|
||||||
|
setContentView(R.layout.activity_child_login);
|
||||||
|
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
|
||||||
|
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
|
||||||
|
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
|
||||||
|
return insets;
|
||||||
|
});
|
||||||
|
|
||||||
|
// コードのフォーカスを自動で移動する
|
||||||
|
loginCode1 = findViewById(R.id.loginCode_1);
|
||||||
|
loginCode2 = findViewById(R.id.loginCode_2);
|
||||||
|
loginCode3 = findViewById(R.id.loginCode_3);
|
||||||
|
loginCode4 = findViewById(R.id.loginCode_4);
|
||||||
|
loginCode5 = findViewById(R.id.loginCode_5);
|
||||||
|
loginCode6 = findViewById(R.id.loginCode_6);
|
||||||
|
loginCode7 = findViewById(R.id.loginCode_7);
|
||||||
|
loginCode8 = findViewById(R.id.loginCode_8);
|
||||||
|
|
||||||
|
loginCode1.addTextChangedListener(new LoginCodeTextWatcher(loginCode1, loginCode2));
|
||||||
|
loginCode2.addTextChangedListener(new LoginCodeTextWatcher(loginCode2, loginCode3));
|
||||||
|
loginCode3.addTextChangedListener(new LoginCodeTextWatcher(loginCode3, loginCode4));
|
||||||
|
loginCode4.addTextChangedListener(new LoginCodeTextWatcher(loginCode4, loginCode5));
|
||||||
|
loginCode5.addTextChangedListener(new LoginCodeTextWatcher(loginCode5, loginCode6));
|
||||||
|
loginCode6.addTextChangedListener(new LoginCodeTextWatcher(loginCode6, loginCode7));
|
||||||
|
loginCode7.addTextChangedListener(new LoginCodeTextWatcher(loginCode7, loginCode8));
|
||||||
|
loginCode8.addTextChangedListener(new LoginCodeTextWatcher(loginCode8, null));
|
||||||
|
|
||||||
|
// ログインボタンを押したときの処理
|
||||||
|
findViewById(R.id.childLoginButton).setOnClickListener(v -> {
|
||||||
|
Toast.makeText(this, "ログインコード: " + getLoginCode(), Toast.LENGTH_SHORT).show();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getLoginCode() {
|
||||||
|
return loginCode1.getText().toString() +
|
||||||
|
loginCode2.getText().toString() +
|
||||||
|
loginCode3.getText().toString() +
|
||||||
|
loginCode4.getText().toString() +
|
||||||
|
loginCode5.getText().toString() +
|
||||||
|
loginCode6.getText().toString() +
|
||||||
|
loginCode7.getText().toString() +
|
||||||
|
loginCode8.getText().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class LoginCodeTextWatcher implements TextWatcher {
|
||||||
|
private EditText currentView;
|
||||||
|
private final EditText nextView;
|
||||||
|
|
||||||
|
LoginCodeTextWatcher(EditText currentView, EditText nextView) {
|
||||||
|
this.currentView = currentView;
|
||||||
|
this.nextView = nextView;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
if (s.length() == 1 && nextView != null) {
|
||||||
|
nextView.requestFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
160
app/src/main/res/layout/activity_child_login.xml
Normal file
160
app/src/main/res/layout/activity_child_login.xml
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/main"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".ChildLoginActivity">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/titleTextView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:text="KidShiftにログイン"
|
||||||
|
android:textSize="32dp"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/inputContainer"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/inputContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="128dp"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:weightSum="10"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/titleTextView">
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/loginCode_1"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxWidth="48dp"
|
||||||
|
android:maxLength="1"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/loginCode_2"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxWidth="48dp"
|
||||||
|
android:maxLength="1"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/loginCode_3"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxWidth="48dp"
|
||||||
|
android:maxLength="1"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/loginCode_4"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxWidth="48dp"
|
||||||
|
android:maxLength="1"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_weight="0"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="-"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/loginCode_5"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxWidth="48dp"
|
||||||
|
android:maxLength="1"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/loginCode_6"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxWidth="48dp"
|
||||||
|
android:maxLength="1"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/loginCode_7"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxWidth="48dp"
|
||||||
|
android:maxLength="1"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/loginCode_8"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:inputType="number"
|
||||||
|
android:maxWidth="48dp"
|
||||||
|
android:maxLength="1"
|
||||||
|
android:textSize="18sp"
|
||||||
|
tools:ignore="Autofill,LabelFor" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/childLoginButton"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="128dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="ログイン"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/inputContainer" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
Reference in New Issue
Block a user