diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 127f031..5ad6014 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,9 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AndroidUIDesign">
+
diff --git a/app/src/main/java/com/example/androiduidesign/SplashScreenActivity.kt b/app/src/main/java/com/example/androiduidesign/SplashScreenActivity.kt
index 5bdc238..ca43009 100644
--- a/app/src/main/java/com/example/androiduidesign/SplashScreenActivity.kt
+++ b/app/src/main/java/com/example/androiduidesign/SplashScreenActivity.kt
@@ -6,7 +6,9 @@ import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.WindowManager
+import com.example.androiduidesign.authencation.SignInActivity
import com.example.androiduidesign.onboardingscreen.OnBoardingActivity
+import com.example.androiduidesign.utils.TWOTHOUSAND
class SplashScreenActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
@@ -14,9 +16,10 @@ class SplashScreenActivity : AppCompatActivity() {
setContentView(R.layout.activity_splash_screen)
initialSetup()
}
+
private fun initialSetup() {
Handler(Looper.getMainLooper()).postDelayed({
- startActivity(Intent(this,OnBoardingActivity::class.java))
+ startActivity(Intent(this,SignInActivity::class.java))
finish()
}, TWOTHOUSAND.toLong())
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
diff --git a/app/src/main/java/com/example/androiduidesign/authencation/SignInActivity.kt b/app/src/main/java/com/example/androiduidesign/authencation/SignInActivity.kt
new file mode 100644
index 0000000..ff87946
--- /dev/null
+++ b/app/src/main/java/com/example/androiduidesign/authencation/SignInActivity.kt
@@ -0,0 +1,72 @@
+package com.example.androiduidesign.authencation
+
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.text.method.LinkMovementMethod
+import android.util.Patterns
+import android.view.WindowManager
+import android.widget.Toast
+import androidx.core.content.ContextCompat
+import androidx.databinding.DataBindingUtil
+import com.example.androiduidesign.R
+import com.example.androiduidesign.databinding.ActivitySignInBinding
+import com.example.androiduidesign.utils.THIRTYONE
+import com.example.androiduidesign.utils.THIRTYTHREE
+import com.example.androiduidesign.utils.TWENETYFOUR
+import com.example.androiduidesign.utils.TWENTY
+import com.example.androiduidesign.utils.getSpannable
+import com.example.androiduidesign.utils.showMessage
+
+class SignInActivity : AppCompatActivity() {
+ lateinit var binding: ActivitySignInBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ initialSetup()
+
+ binding.apply {
+ btnSignIn.setOnClickListener {
+ when {
+ ediTxtSignInEmail.text.toString().isEmpty() -> {
+ showMessage(this@SignInActivity,getString(R.string.toast_email_empty))
+ }
+ editxtSignInPassword.text.toString().isEmpty() -> {
+ showMessage(this@SignInActivity,getString(R.string.toast_password_empty))
+ }
+ !Patterns.EMAIL_ADDRESS.matcher(ediTxtSignInEmail.text.toString()).matches() -> {
+ showMessage(this@SignInActivity,getString(R.string.toast_email_not_valid))
+ }
+ else -> {
+ showMessage(this@SignInActivity,getString(R.string.toast_text_sign_in_button_pressed))
+ }
+ }
+ }
+ btnFaceId.setOnClickListener {
+ showMessage(this@SignInActivity,getString(R.string.face_id_clicked))
+ }
+ btnFacebook.setOnClickListener {
+ showMessage(this@SignInActivity,getString(R.string.facebook_clicked))
+ }
+ btnGoogle.setOnClickListener {
+ showMessage(this@SignInActivity,getString(R.string.google_clicked))
+ }
+ textviewForgetPassword.setOnClickListener {
+ showMessage(this@SignInActivity,getString(R.string.forget_password_clicked))
+ }
+ }
+ }
+
+ private fun initialSetup() {
+ supportActionBar?.hide()
+ binding = DataBindingUtil.setContentView(this, R.layout.activity_sign_in)
+ setSpannableText()
+ window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
+ }
+
+ private fun setSpannableText() {
+ val spannable = getSpannable(binding.textviewNotHaveAccount.text.toString(), TWENETYFOUR, THIRTYONE, ContextCompat.getColor(this@SignInActivity, R.color.green_500)) {}
+ binding.textviewNotHaveAccount.text = spannable
+ binding.textviewNotHaveAccount.movementMethod = LinkMovementMethod.getInstance()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/androiduidesign/onboardingscreen/OnBoardingActivity.kt b/app/src/main/java/com/example/androiduidesign/onboardingscreen/OnBoardingActivity.kt
index 2c69b58..1bf10e9 100644
--- a/app/src/main/java/com/example/androiduidesign/onboardingscreen/OnBoardingActivity.kt
+++ b/app/src/main/java/com/example/androiduidesign/onboardingscreen/OnBoardingActivity.kt
@@ -1,16 +1,14 @@
package com.example.androiduidesign.onboardingscreen
-import android.database.DatabaseUtils
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.WindowManager
-import android.widget.Toast
import androidx.databinding.DataBindingUtil
import androidx.viewpager2.widget.ViewPager2
-import com.example.androiduidesign.ONE
import com.example.androiduidesign.R
-import com.example.androiduidesign.ZERO
import com.example.androiduidesign.databinding.ActivityOnBoardingBinding
+import com.example.androiduidesign.utils.ONE
+import com.example.androiduidesign.utils.ZERO
import com.google.android.material.tabs.TabLayoutMediator
import kotlinx.android.synthetic.main.activity_on_boarding.btn_onBoading
import kotlinx.android.synthetic.main.activity_on_boarding.tab_layout
@@ -29,7 +27,6 @@ class OnBoardingActivity : AppCompatActivity() {
viewpager_onboarding.setCurrentItem(viewpager_onboarding.currentItem + ONE)
} else {
btn_onBoading.text = getString(R.string.splash_screen_btn_txt_get_started)
- Toast.makeText(this,getString(R.string.toast_test_get_started),Toast.LENGTH_SHORT).show()
}
}
binding.viewpagerOnboarding.registerOnPageChangeCallback(object :
diff --git a/app/src/main/java/com/example/androiduidesign/utils/CommonFunctions.kt b/app/src/main/java/com/example/androiduidesign/utils/CommonFunctions.kt
new file mode 100644
index 0000000..5d3db75
--- /dev/null
+++ b/app/src/main/java/com/example/androiduidesign/utils/CommonFunctions.kt
@@ -0,0 +1,33 @@
+package com.example.androiduidesign.utils
+
+import android.content.Context
+import android.text.Spannable
+import android.text.SpannableString
+import android.text.Spanned
+import android.text.TextPaint
+import android.text.style.ClickableSpan
+import android.view.View
+import android.widget.Toast
+
+fun getSpannable(text: String, startIndex: Int, endIndex: Int, color: Int, spanClickCallback: () -> Unit): Spannable {
+ val spannable = SpannableString(text)
+ val clickableSpan = object : ClickableSpan() {
+ override fun onClick(p0: View) {
+ spanClickCallback()
+ }
+
+ override fun updateDrawState(drawState: TextPaint) {
+ super.updateDrawState(drawState)
+ drawState.apply {
+ isUnderlineText = false
+ this.color = color
+ }
+ }
+ }
+ spannable.setSpan(clickableSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+ return spannable
+}
+
+fun showMessage(context: Context, message: String) {
+ Toast.makeText(context,message, Toast.LENGTH_SHORT).show()
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/androiduidesign/utils/Constants.kt b/app/src/main/java/com/example/androiduidesign/utils/Constants.kt
new file mode 100644
index 0000000..b268612
--- /dev/null
+++ b/app/src/main/java/com/example/androiduidesign/utils/Constants.kt
@@ -0,0 +1,12 @@
+package com.example.androiduidesign.utils
+
+const val THIRTYONE = 31
+const val THIRTYEIGHT = 38
+const val TWENETYFOUR = 24
+const val ONE = 1
+const val ZERO = 0
+const val TWENTYSIX = 26
+const val NINETEEN = 19
+const val TWENTY = 20
+const val THIRTYTHREE = 33
+const val TWOTHOUSAND = 2000
\ No newline at end of file
diff --git a/app/src/main/res/drawable-hdpi/face_id_icone.png b/app/src/main/res/drawable-hdpi/face_id_icone.png
new file mode 100644
index 0000000..10eeadc
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/face_id_icone.png differ
diff --git a/app/src/main/res/drawable-hdpi/facebook_icone.png b/app/src/main/res/drawable-hdpi/facebook_icone.png
new file mode 100644
index 0000000..aeaf715
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/facebook_icone.png differ
diff --git a/app/src/main/res/drawable-hdpi/google_icone.png b/app/src/main/res/drawable-hdpi/google_icone.png
new file mode 100644
index 0000000..fa25651
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/google_icone.png differ
diff --git a/app/src/main/res/drawable-mdpi/face_id_icone.png b/app/src/main/res/drawable-mdpi/face_id_icone.png
new file mode 100644
index 0000000..b4c1a71
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/face_id_icone.png differ
diff --git a/app/src/main/res/drawable-mdpi/facebook_icone.png b/app/src/main/res/drawable-mdpi/facebook_icone.png
new file mode 100644
index 0000000..305e0c5
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/facebook_icone.png differ
diff --git a/app/src/main/res/drawable-mdpi/google_icone.png b/app/src/main/res/drawable-mdpi/google_icone.png
new file mode 100644
index 0000000..5c1e34f
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/google_icone.png differ
diff --git a/app/src/main/res/drawable-xhdpi/face_id_icone.png b/app/src/main/res/drawable-xhdpi/face_id_icone.png
new file mode 100644
index 0000000..905cc1d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/face_id_icone.png differ
diff --git a/app/src/main/res/drawable-xhdpi/facebook_icone.png b/app/src/main/res/drawable-xhdpi/facebook_icone.png
new file mode 100644
index 0000000..cb0f791
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/facebook_icone.png differ
diff --git a/app/src/main/res/drawable-xhdpi/google_icone.png b/app/src/main/res/drawable-xhdpi/google_icone.png
new file mode 100644
index 0000000..6854b40
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/google_icone.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/face_id_icone.png b/app/src/main/res/drawable-xxhdpi/face_id_icone.png
new file mode 100644
index 0000000..2c38cab
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/face_id_icone.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/facebook_icone.png b/app/src/main/res/drawable-xxhdpi/facebook_icone.png
new file mode 100644
index 0000000..cf40661
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/facebook_icone.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/google_icone.png b/app/src/main/res/drawable-xxhdpi/google_icone.png
new file mode 100644
index 0000000..697b3ea
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/google_icone.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/face_id_icone.png b/app/src/main/res/drawable-xxxhdpi/face_id_icone.png
new file mode 100644
index 0000000..415f16f
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/face_id_icone.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/facebook_icone.png b/app/src/main/res/drawable-xxxhdpi/facebook_icone.png
new file mode 100644
index 0000000..8d1d3bc
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/facebook_icone.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/google_icone.png b/app/src/main/res/drawable-xxxhdpi/google_icone.png
new file mode 100644
index 0000000..090fe7b
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/google_icone.png differ
diff --git a/app/src/main/res/drawable/edit_text_border.xml b/app/src/main/res/drawable/edit_text_border.xml
new file mode 100644
index 0000000..9e405ab
--- /dev/null
+++ b/app/src/main/res/drawable/edit_text_border.xml
@@ -0,0 +1,17 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sign_in.xml b/app/src/main/res/layout/activity_sign_in.xml
new file mode 100644
index 0000000..5d3f287
--- /dev/null
+++ b/app/src/main/res/layout/activity_sign_in.xml
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index 7551d5f..9bdd6ec 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -5,6 +5,7 @@
- @color/green_500
- @color/green_700
- @color/white
+ - @color/green_500
- @color/yellow_200
- @color/teal_700
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index eea11f7..57a2a88 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -7,4 +7,6 @@
#FF018786
#FF000000
#FFFFFFFF
+ #787B82
+ #00000000
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2d7817e..b1316e0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,5 +10,26 @@
Face Id Feature for Easy Access and Secure Transactions
There is a face ID feature that can be used with easy access and safe transactions.
Get Started
- Get Started Clicked
+ Sign in
+ Please sign in first to enjoy the service.
+ Email
+ Password
+ Remember me?
+ Forgot password?
+ Sign In
+ Continue with Face Id
+ Continue with Google
+ Continue with Facebook
+ Sign in
+ Sign up
+ I don’t have a account? Sign up
+ Sign In Button Pressed
+ Email Empty
+ password Empty
+ Sign up Button Pressed
+ Face Id Clicked
+ FaceBook Button Clicked
+ Google Button Clicked
+ Forget Password Button Clicked
+ Email is not Valid
\ No newline at end of file
diff --git a/app/src/main/res/values/style.xml b/app/src/main/res/values/style.xml
new file mode 100644
index 0000000..9ba2a88
--- /dev/null
+++ b/app/src/main/res/values/style.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 7551d5f..9bdd6ec 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -5,6 +5,7 @@
- @color/green_500
- @color/green_700
- @color/white
+ - @color/green_500
- @color/yellow_200
- @color/teal_700