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