From aa1935e759bf5069338ad92927a20f0d26b01988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=AA=90=E7=91=9E?= <3349293156@qq.com> Date: Wed, 15 Oct 2025 19:58:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E7=99=BB=E9=99=86?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LLRiseTabBarDemo/.idea/modules.xml | 8 - LLRiseTabBarDemo/app/build.gradle | 52 ++++-- .../app/src/main/AndroidManifest.xml | 32 +++- .../activity/ForgotPasswordActivity.java | 151 ++++++++++++++++ .../activity/LoginActivity.java | 96 ++++++++++ .../activity/MainActivity.java | 9 +- .../activity/RegisterActivity.java | 151 ++++++++++++++++ .../fragment/CityFragment.java | 8 +- .../fragment/HomeFragment.java | 9 +- .../fragment/MessageFragment.java | 8 +- .../fragment/PersonFragment.java | 8 +- .../src/main/res/drawable/bg_button_code.xml | 5 + .../main/res/drawable/bg_button_primary.xml | 5 + .../main/res/drawable/bg_button_secondary.xml | 6 + .../src/main/res/drawable/ic_arrow_back.xml | 10 ++ .../res/layout/activity_forgot_password.xml | 170 ++++++++++++++++++ .../src/main/res/layout/activity_login.xml | 145 +++++++++++++++ .../src/main/res/layout/activity_register.xml | 170 ++++++++++++++++++ .../app/src/main/res/values/colors.xml | 12 ++ .../app/src/main/res/values/styles.xml | 8 +- LLRiseTabBarDemo/build.gradle | 21 ++- LLRiseTabBarDemo/gradle.properties | 5 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- .../mainnavigatetabbar/build.gradle | 31 ++-- .../widget/MainNavigateTabBar.java | 32 ++-- 25 files changed, 1079 insertions(+), 76 deletions(-) delete mode 100644 LLRiseTabBarDemo/.idea/modules.xml create mode 100644 LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/ForgotPasswordActivity.java create mode 100644 LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/LoginActivity.java create mode 100644 LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/RegisterActivity.java create mode 100644 LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_code.xml create mode 100644 LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_primary.xml create mode 100644 LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_secondary.xml create mode 100644 LLRiseTabBarDemo/app/src/main/res/drawable/ic_arrow_back.xml create mode 100644 LLRiseTabBarDemo/app/src/main/res/layout/activity_forgot_password.xml create mode 100644 LLRiseTabBarDemo/app/src/main/res/layout/activity_login.xml create mode 100644 LLRiseTabBarDemo/app/src/main/res/layout/activity_register.xml diff --git a/LLRiseTabBarDemo/.idea/modules.xml b/LLRiseTabBarDemo/.idea/modules.xml deleted file mode 100644 index f653431..0000000 --- a/LLRiseTabBarDemo/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/build.gradle b/LLRiseTabBarDemo/app/build.gradle index 14a52d9..dac0ed5 100644 --- a/LLRiseTabBarDemo/app/build.gradle +++ b/LLRiseTabBarDemo/app/build.gradle @@ -1,28 +1,60 @@ -apply plugin: 'com.android.application' +// app/build.gradle +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' // 添加 Kotlin 插件 +} android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + namespace "com.startsmake.llrisetabbardemo" + compileSdk 33 defaultConfig { applicationId "com.startsmake.llrisetabbardemo" - minSdkVersion 14 - targetSdkVersion 23 + minSdk 21 + targetSdk 33 versionCode 1 versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - namespace "com.startsmake.llrisetabbardemo" + buildTypes { release { minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - testImplementation 'junit:junit:4.12' - implementation 'com.android.support:appcompat-v7:23.1.0' + testImplementation 'junit:junit:4.13.2' + + // AndroidX 依赖 + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'com.google.android.material:material:1.9.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + + // 统一的 Kotlin 依赖 + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.20" + + // 项目模块 implementation project(':mainnavigatetabbar') -} + + // 如果有其他依赖冲突,可以排除旧版本 + configurations { + all { + exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' + exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' + } + } +} \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/AndroidManifest.xml b/LLRiseTabBarDemo/app/src/main/AndroidManifest.xml index 0d9ad88..4854606 100644 --- a/LLRiseTabBarDemo/app/src/main/AndroidManifest.xml +++ b/LLRiseTabBarDemo/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ - + - - - - + + + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/ForgotPasswordActivity.java b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/ForgotPasswordActivity.java new file mode 100644 index 0000000..85d5bf5 --- /dev/null +++ b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/ForgotPasswordActivity.java @@ -0,0 +1,151 @@ +package com.startsmake.llrisetabbardemo.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.CountDownTimer; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.google.android.material.textfield.TextInputEditText; +import com.startsmake.llrisetabbardemo.R; + +public class ForgotPasswordActivity extends AppCompatActivity { + + private TextInputEditText etPhone, etVerificationCode, etNewPassword; + private Button btnSendCode, btnResetPassword; + private ImageButton btnBack; + private TextView tvLogin; + + private CountDownTimer countDownTimer; + private boolean isCounting = false; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_forgot_password); + + initViews(); + setupClickListeners(); + } + + private void initViews() { + etPhone = findViewById(R.id.et_phone); + etVerificationCode = findViewById(R.id.et_verification_code); + etNewPassword = findViewById(R.id.et_new_password); + btnSendCode = findViewById(R.id.btn_send_code); + btnResetPassword = findViewById(R.id.btn_reset_password); + btnBack = findViewById(R.id.btn_back); + tvLogin = findViewById(R.id.tv_login); + } + + private void setupClickListeners() { + // 返回按钮 + btnBack.setOnClickListener(v -> finish()); + + // 发送验证码 + btnSendCode.setOnClickListener(v -> sendVerificationCode()); + + // 重置密码按钮 + btnResetPassword.setOnClickListener(v -> attemptResetPassword()); + + // 返回登录 + tvLogin.setOnClickListener(v -> { + Intent intent = new Intent(ForgotPasswordActivity.this, LoginActivity.class); + startActivity(intent); + finish(); + }); + } + + private void sendVerificationCode() { + String phone = etPhone.getText().toString().trim(); + + if (phone.isEmpty()) { + etPhone.setError("请输入手机号"); + return; + } + + if (phone.length() != 11) { + etPhone.setError("手机号格式不正确"); + return; + } + + if (!isCounting) { + startCountDown(); + Toast.makeText(this, "验证码已发送", Toast.LENGTH_SHORT).show(); + // 这里应该调用后端API发送验证码 + } + } + + private void startCountDown() { + isCounting = true; + btnSendCode.setEnabled(false); + + countDownTimer = new CountDownTimer(60000, 1000) { + @Override + public void onTick(long millisUntilFinished) { + btnSendCode.setText(millisUntilFinished / 1000 + "秒后重发"); + } + + @Override + public void onFinish() { + isCounting = false; + btnSendCode.setEnabled(true); + btnSendCode.setText("发送验证码"); + } + }.start(); + } + + private void attemptResetPassword() { + String phone = etPhone.getText().toString().trim(); + String code = etVerificationCode.getText().toString().trim(); + String newPassword = etNewPassword.getText().toString().trim(); + + if (phone.isEmpty()) { + etPhone.setError("请输入手机号"); + return; + } + + if (code.isEmpty()) { + etVerificationCode.setError("请输入验证码"); + return; + } + + if (newPassword.isEmpty()) { + etNewPassword.setError("请输入新密码"); + return; + } + + if (phone.length() != 11) { + etPhone.setError("手机号格式不正确"); + return; + } + + if (newPassword.length() < 6) { + etNewPassword.setError("密码至少6位"); + return; + } + + // 模拟重置密码成功 + performResetPassword(); + } + + private void performResetPassword() { + Toast.makeText(this, "密码重置成功!", Toast.LENGTH_SHORT).show(); + // 重置成功后跳转到登录页面 + Intent intent = new Intent(ForgotPasswordActivity.this, LoginActivity.class); + startActivity(intent); + finish(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (countDownTimer != null) { + countDownTimer.cancel(); + } + } +} diff --git a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/LoginActivity.java b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/LoginActivity.java new file mode 100644 index 0000000..ef5b6a6 --- /dev/null +++ b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/LoginActivity.java @@ -0,0 +1,96 @@ +package com.startsmake.llrisetabbardemo.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.google.android.material.textfield.TextInputEditText; +import com.startsmake.llrisetabbardemo.R; + +public class LoginActivity extends AppCompatActivity { + + private TextInputEditText etPhone, etPassword; + private Button btnLogin, btnSkipLogin; + private TextView tvForgotPassword, tvRegister; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + + initViews(); + setupClickListeners(); + } + + private void initViews() { + etPhone = findViewById(R.id.et_phone); + etPassword = findViewById(R.id.et_password); + btnLogin = findViewById(R.id.btn_login); + btnSkipLogin = findViewById(R.id.btn_skip_login); + tvForgotPassword = findViewById(R.id.tv_forgot_password); + tvRegister = findViewById(R.id.tv_register); + } + + private void setupClickListeners() { + // 登录按钮 + btnLogin.setOnClickListener(v -> attemptLogin()); + + // 跳过登录按钮 + btnSkipLogin.setOnClickListener(v -> skipToMain()); + + // 忘记密码 + tvForgotPassword.setOnClickListener(v -> { + Intent intent = new Intent(LoginActivity.this, ForgotPasswordActivity.class); + startActivity(intent); + }); + + // 注册 + tvRegister.setOnClickListener(v -> { + Intent intent = new Intent(LoginActivity.this, RegisterActivity.class); + startActivity(intent); + }); + } + + private void attemptLogin() { + String phone = etPhone.getText().toString().trim(); + String password = etPassword.getText().toString().trim(); + + if (phone.isEmpty()) { + etPhone.setError("请输入手机号"); + return; + } + + if (password.isEmpty()) { + etPassword.setError("请输入密码"); + return; + } + + if (phone.length() != 11) { + etPhone.setError("手机号格式不正确"); + return; + } + + // 模拟登录成功(因为没有后端) + performLogin(); + } + + private void performLogin() { + Toast.makeText(this, "登录成功!", Toast.LENGTH_SHORT).show(); + navigateToMain(); + } + + private void skipToMain() { + Toast.makeText(this, "跳过登录,进入主界面", Toast.LENGTH_SHORT).show(); + navigateToMain(); + } + + private void navigateToMain() { + Intent intent = new Intent(LoginActivity.this, MainActivity.class); + startActivity(intent); + finish(); + } +} diff --git a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/MainActivity.java b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/MainActivity.java index 246af3e..ed589b0 100644 --- a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/MainActivity.java +++ b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/MainActivity.java @@ -1,10 +1,12 @@ package com.startsmake.llrisetabbardemo.activity; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Toast; +// 改为 AndroidX +import androidx.appcompat.app.AppCompatActivity; + import com.startsmake.llrisetabbardemo.R; import com.startsmake.llrisetabbardemo.fragment.CityFragment; import com.startsmake.llrisetabbardemo.fragment.HomeFragment; @@ -20,7 +22,6 @@ public class MainActivity extends AppCompatActivity { private static final String TAG_PAGE_MESSAGE = "消息"; private static final String TAG_PAGE_PERSON = "我的"; - private MainNavigateTabBar mNavigateTabBar; @Override @@ -39,15 +40,13 @@ public class MainActivity extends AppCompatActivity { mNavigateTabBar.addTab(PersonFragment.class, new MainNavigateTabBar.TabParam(R.mipmap.comui_tab_person, R.mipmap.comui_tab_person_selected, TAG_PAGE_PERSON)); } - @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mNavigateTabBar.onSaveInstanceState(outState); } - public void onClickPublish(View v) { Toast.makeText(this, "发布", Toast.LENGTH_LONG).show(); } -} +} \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/RegisterActivity.java b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/RegisterActivity.java new file mode 100644 index 0000000..b962695 --- /dev/null +++ b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/activity/RegisterActivity.java @@ -0,0 +1,151 @@ +package com.startsmake.llrisetabbardemo.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.CountDownTimer; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.google.android.material.textfield.TextInputEditText; +import com.startsmake.llrisetabbardemo.R; + +public class RegisterActivity extends AppCompatActivity { + + private TextInputEditText etPhone, etVerificationCode, etPassword; + private Button btnSendCode, btnRegister; + private ImageButton btnBack; + private TextView tvLogin; + + private CountDownTimer countDownTimer; + private boolean isCounting = false; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_register); + + initViews(); + setupClickListeners(); + } + + private void initViews() { + etPhone = findViewById(R.id.et_phone); + etVerificationCode = findViewById(R.id.et_verification_code); + etPassword = findViewById(R.id.et_password); + btnSendCode = findViewById(R.id.btn_send_code); + btnRegister = findViewById(R.id.btn_register); + btnBack = findViewById(R.id.btn_back); + tvLogin = findViewById(R.id.tv_login); + } + + private void setupClickListeners() { + // 返回按钮 + btnBack.setOnClickListener(v -> finish()); + + // 发送验证码 + btnSendCode.setOnClickListener(v -> sendVerificationCode()); + + // 注册按钮 + btnRegister.setOnClickListener(v -> attemptRegister()); + + // 立即登录 + tvLogin.setOnClickListener(v -> { + Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); + startActivity(intent); + finish(); + }); + } + + private void sendVerificationCode() { + String phone = etPhone.getText().toString().trim(); + + if (phone.isEmpty()) { + etPhone.setError("请输入手机号"); + return; + } + + if (phone.length() != 11) { + etPhone.setError("手机号格式不正确"); + return; + } + + if (!isCounting) { + startCountDown(); + Toast.makeText(this, "验证码已发送", Toast.LENGTH_SHORT).show(); + // 这里应该调用后端API发送验证码 + } + } + + private void startCountDown() { + isCounting = true; + btnSendCode.setEnabled(false); + + countDownTimer = new CountDownTimer(60000, 1000) { + @Override + public void onTick(long millisUntilFinished) { + btnSendCode.setText(millisUntilFinished / 1000 + "秒后重发"); + } + + @Override + public void onFinish() { + isCounting = false; + btnSendCode.setEnabled(true); + btnSendCode.setText("发送验证码"); + } + }.start(); + } + + private void attemptRegister() { + String phone = etPhone.getText().toString().trim(); + String code = etVerificationCode.getText().toString().trim(); + String password = etPassword.getText().toString().trim(); + + if (phone.isEmpty()) { + etPhone.setError("请输入手机号"); + return; + } + + if (code.isEmpty()) { + etVerificationCode.setError("请输入验证码"); + return; + } + + if (password.isEmpty()) { + etPassword.setError("请输入密码"); + return; + } + + if (phone.length() != 11) { + etPhone.setError("手机号格式不正确"); + return; + } + + if (password.length() < 6) { + etPassword.setError("密码至少6位"); + return; + } + + // 模拟注册成功 + performRegister(); + } + + private void performRegister() { + Toast.makeText(this, "注册成功!", Toast.LENGTH_SHORT).show(); + // 注册成功后跳转到登录页面 + Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); + startActivity(intent); + finish(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (countDownTimer != null) { + countDownTimer.cancel(); + } + } +} \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/CityFragment.java b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/CityFragment.java index aa32c66..5d4d608 100644 --- a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/CityFragment.java +++ b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/CityFragment.java @@ -1,12 +1,14 @@ package com.startsmake.llrisetabbardemo.fragment; -import android.app.Fragment; import android.os.Bundle; -import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +// 改为 AndroidX +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + import com.startsmake.llrisetabbardemo.R; /** @@ -21,4 +23,4 @@ public class CityFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_city, container, false); } -} +} \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/HomeFragment.java b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/HomeFragment.java index b852c15..e856bcd 100644 --- a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/HomeFragment.java +++ b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/HomeFragment.java @@ -1,12 +1,14 @@ package com.startsmake.llrisetabbardemo.fragment; -import android.app.Fragment; import android.os.Bundle; -import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +// 改为 AndroidX +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + import com.startsmake.llrisetabbardemo.R; /** @@ -21,5 +23,4 @@ public class HomeFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_home, container, false); } - -} +} \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/MessageFragment.java b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/MessageFragment.java index 23ce570..e5ed4fd 100644 --- a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/MessageFragment.java +++ b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/MessageFragment.java @@ -1,12 +1,14 @@ package com.startsmake.llrisetabbardemo.fragment; -import android.app.Fragment; import android.os.Bundle; -import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +// 改为 AndroidX +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + import com.startsmake.llrisetabbardemo.R; /** @@ -21,4 +23,4 @@ public class MessageFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_message, container, false); } -} +} \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/PersonFragment.java b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/PersonFragment.java index e95e763..fc8327b 100644 --- a/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/PersonFragment.java +++ b/LLRiseTabBarDemo/app/src/main/java/com/startsmake/llrisetabbardemo/fragment/PersonFragment.java @@ -1,12 +1,14 @@ package com.startsmake.llrisetabbardemo.fragment; -import android.app.Fragment; import android.os.Bundle; -import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +// 改为 AndroidX +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + import com.startsmake.llrisetabbardemo.R; /** @@ -21,4 +23,4 @@ public class PersonFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_person, container, false); } -} +} \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_code.xml b/LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_code.xml new file mode 100644 index 0000000..ecdfe34 --- /dev/null +++ b/LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_code.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_primary.xml b/LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_primary.xml new file mode 100644 index 0000000..ab76243 --- /dev/null +++ b/LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_primary.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_secondary.xml b/LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_secondary.xml new file mode 100644 index 0000000..eb9c3e6 --- /dev/null +++ b/LLRiseTabBarDemo/app/src/main/res/drawable/bg_button_secondary.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/res/drawable/ic_arrow_back.xml b/LLRiseTabBarDemo/app/src/main/res/drawable/ic_arrow_back.xml new file mode 100644 index 0000000..814d2b1 --- /dev/null +++ b/LLRiseTabBarDemo/app/src/main/res/drawable/ic_arrow_back.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/LLRiseTabBarDemo/app/src/main/res/layout/activity_forgot_password.xml b/LLRiseTabBarDemo/app/src/main/res/layout/activity_forgot_password.xml new file mode 100644 index 0000000..6888595 --- /dev/null +++ b/LLRiseTabBarDemo/app/src/main/res/layout/activity_forgot_password.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +