diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e1e5dd3..c7f6b04 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,12 @@
android:supportsRtl="true"
android:theme="@style/Theme.CalendarApp"
tools:targetApi="31">
+
+
diff --git a/app/src/main/java/com/george/android/calendar/FragmentAddEditEventActivity.java b/app/src/main/java/com/george/android/calendar/FragmentAddEditEventActivity.java
new file mode 100644
index 0000000..8bb97a3
--- /dev/null
+++ b/app/src/main/java/com/george/android/calendar/FragmentAddEditEventActivity.java
@@ -0,0 +1,14 @@
+package com.george.android.calendar;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+public class FragmentAddEditEventActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.fragment_add_edit_event);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/george/android/calendar/LoginActivity.java b/app/src/main/java/com/george/android/calendar/LoginActivity.java
new file mode 100644
index 0000000..4d1ce8d
--- /dev/null
+++ b/app/src/main/java/com/george/android/calendar/LoginActivity.java
@@ -0,0 +1,51 @@
+package com.george.android.calendar;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatDelegate;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Button;
+
+import com.george.android.calendar.ui.MainActivity;
+import com.george.android.calendar.ui.RegisterActivity;
+import com.george.android.calendar.utils.TextValidator;
+import com.google.android.material.textfield.TextInputLayout;
+
+import java.util.Objects;
+
+public class LoginActivity extends AppCompatActivity {
+
+ TextInputLayout textEmail;
+ TextInputLayout textPassword;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_login);
+
+ Button btnLogin = findViewById(R.id.loginButton);
+ Button btnRegister = findViewById(R.id.toRegisterActivityButton);
+ textEmail = findViewById(R.id.emailTextInputEditText);
+ textPassword = findViewById(R.id.passwordTextInputEditText);
+
+ btnLogin.setOnClickListener(v -> {
+
+ String email = Objects.requireNonNull(textEmail.getEditText()).getText().toString();
+ String password = Objects.requireNonNull(textEmail.getEditText()).getText().toString();
+
+ if (!validateFields(email, password)){
+ return;
+ }
+
+ Intent nameIntent = new Intent(this, MainActivity.class);
+ startActivity(nameIntent);
+ });
+
+ btnRegister.setOnClickListener(v -> startActivity(new Intent(this, RegisterActivity.class)));
+ }
+
+ private boolean validateFields(String email, String password) {
+ return TextValidator.validateText(email, textEmail) & TextValidator.validateText(password, textPassword);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/george/android/calendar/utils/TextValidator.java b/app/src/main/java/com/george/android/calendar/utils/TextValidator.java
new file mode 100644
index 0000000..2c6c26b
--- /dev/null
+++ b/app/src/main/java/com/george/android/calendar/utils/TextValidator.java
@@ -0,0 +1,41 @@
+package com.george.android.calendar.utils;
+
+import android.text.Editable;
+import android.text.TextWatcher;
+
+import com.google.android.material.textfield.TextInputLayout;
+
+import java.util.Objects;
+
+public class TextValidator {
+
+ public static boolean validateText(String text, TextInputLayout textInputLayout){
+
+ Objects.requireNonNull(textInputLayout.getEditText()).addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+ textInputLayout.setError(null);
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+
+ }
+ });
+
+ if (text.isEmpty()) {
+ textInputLayout.setError("Это поле не может быть пустым");
+ return false;
+ } else {
+ textInputLayout.setError(null);
+ return true;
+ }
+
+ }
+
+}
diff --git a/app/src/main/res/drawable/ic_login.png b/app/src/main/res/drawable/ic_login.png
new file mode 100644
index 0000000..c57aefa
Binary files /dev/null and b/app/src/main/res/drawable/ic_login.png differ
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000..4ceede9
--- /dev/null
+++ b/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_add_edit_event.xml b/app/src/main/res/layout/fragment_add_edit_event.xml
new file mode 100644
index 0000000..06709c7
--- /dev/null
+++ b/app/src/main/res/layout/fragment_add_edit_event.xml
@@ -0,0 +1,9 @@
+
+
+
+
\ No newline at end of file