Skip to content

Commit a21f399

Browse files
committed
Sign In Screen Completed
1 parent 3f31a7e commit a21f399

29 files changed

Lines changed: 425 additions & 8 deletions

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
android:roundIcon="@mipmap/ic_launcher_round"
1010
android:supportsRtl="true"
1111
android:theme="@style/Theme.AndroidUIDesign">
12+
<activity
13+
android:name=".authencation.SignInActivity"
14+
android:exported="false" />
1215
<activity
1316
android:name=".onboardingscreen.OnBoardingActivity"
1417
android:exported="false" />

app/src/main/java/com/example/androiduidesign/SplashScreenActivity.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,20 @@ import android.os.Bundle
66
import android.os.Handler
77
import android.os.Looper
88
import android.view.WindowManager
9+
import com.example.androiduidesign.authencation.SignInActivity
910
import com.example.androiduidesign.onboardingscreen.OnBoardingActivity
11+
import com.example.androiduidesign.utils.TWOTHOUSAND
1012

1113
class SplashScreenActivity : AppCompatActivity() {
1214
override fun onCreate(savedInstanceState: Bundle?) {
1315
super.onCreate(savedInstanceState)
1416
setContentView(R.layout.activity_splash_screen)
1517
initialSetup()
1618
}
19+
1720
private fun initialSetup() {
1821
Handler(Looper.getMainLooper()).postDelayed({
19-
startActivity(Intent(this,OnBoardingActivity::class.java))
22+
startActivity(Intent(this,SignInActivity::class.java))
2023
finish()
2124
}, TWOTHOUSAND.toLong())
2225
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.example.androiduidesign.authencation
2+
3+
import android.content.Intent
4+
import androidx.appcompat.app.AppCompatActivity
5+
import android.os.Bundle
6+
import android.text.method.LinkMovementMethod
7+
import android.util.Patterns
8+
import android.view.WindowManager
9+
import android.widget.Toast
10+
import androidx.core.content.ContextCompat
11+
import androidx.databinding.DataBindingUtil
12+
import com.example.androiduidesign.R
13+
import com.example.androiduidesign.databinding.ActivitySignInBinding
14+
import com.example.androiduidesign.utils.THIRTYONE
15+
import com.example.androiduidesign.utils.THIRTYTHREE
16+
import com.example.androiduidesign.utils.TWENETYFOUR
17+
import com.example.androiduidesign.utils.TWENTY
18+
import com.example.androiduidesign.utils.getSpannable
19+
import com.example.androiduidesign.utils.showMessage
20+
21+
class SignInActivity : AppCompatActivity() {
22+
lateinit var binding: ActivitySignInBinding
23+
24+
override fun onCreate(savedInstanceState: Bundle?) {
25+
super.onCreate(savedInstanceState)
26+
initialSetup()
27+
28+
binding.apply {
29+
btnSignIn.setOnClickListener {
30+
when {
31+
ediTxtSignInEmail.text.toString().isEmpty() -> {
32+
showMessage(this@SignInActivity,getString(R.string.toast_email_empty))
33+
}
34+
editxtSignInPassword.text.toString().isEmpty() -> {
35+
showMessage(this@SignInActivity,getString(R.string.toast_password_empty))
36+
}
37+
!Patterns.EMAIL_ADDRESS.matcher(ediTxtSignInEmail.text.toString()).matches() -> {
38+
showMessage(this@SignInActivity,getString(R.string.toast_email_not_valid))
39+
}
40+
else -> {
41+
showMessage(this@SignInActivity,getString(R.string.toast_text_sign_in_button_pressed))
42+
}
43+
}
44+
}
45+
btnFaceId.setOnClickListener {
46+
showMessage(this@SignInActivity,getString(R.string.face_id_clicked))
47+
}
48+
btnFacebook.setOnClickListener {
49+
showMessage(this@SignInActivity,getString(R.string.facebook_clicked))
50+
}
51+
btnGoogle.setOnClickListener {
52+
showMessage(this@SignInActivity,getString(R.string.google_clicked))
53+
}
54+
textviewForgetPassword.setOnClickListener {
55+
showMessage(this@SignInActivity,getString(R.string.forget_password_clicked))
56+
}
57+
}
58+
}
59+
60+
private fun initialSetup() {
61+
supportActionBar?.hide()
62+
binding = DataBindingUtil.setContentView(this, R.layout.activity_sign_in)
63+
setSpannableText()
64+
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
65+
}
66+
67+
private fun setSpannableText() {
68+
val spannable = getSpannable(binding.textviewNotHaveAccount.text.toString(), TWENETYFOUR, THIRTYONE, ContextCompat.getColor(this@SignInActivity, R.color.green_500)) {}
69+
binding.textviewNotHaveAccount.text = spannable
70+
binding.textviewNotHaveAccount.movementMethod = LinkMovementMethod.getInstance()
71+
}
72+
}

app/src/main/java/com/example/androiduidesign/onboardingscreen/OnBoardingActivity.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
package com.example.androiduidesign.onboardingscreen
22

3-
import android.database.DatabaseUtils
43
import androidx.appcompat.app.AppCompatActivity
54
import android.os.Bundle
65
import android.view.WindowManager
7-
import android.widget.Toast
86
import androidx.databinding.DataBindingUtil
97
import androidx.viewpager2.widget.ViewPager2
10-
import com.example.androiduidesign.ONE
118
import com.example.androiduidesign.R
12-
import com.example.androiduidesign.ZERO
139
import com.example.androiduidesign.databinding.ActivityOnBoardingBinding
10+
import com.example.androiduidesign.utils.ONE
11+
import com.example.androiduidesign.utils.ZERO
1412
import com.google.android.material.tabs.TabLayoutMediator
1513
import kotlinx.android.synthetic.main.activity_on_boarding.btn_onBoading
1614
import kotlinx.android.synthetic.main.activity_on_boarding.tab_layout
@@ -29,7 +27,6 @@ class OnBoardingActivity : AppCompatActivity() {
2927
viewpager_onboarding.setCurrentItem(viewpager_onboarding.currentItem + ONE)
3028
} else {
3129
btn_onBoading.text = getString(R.string.splash_screen_btn_txt_get_started)
32-
Toast.makeText(this,getString(R.string.toast_test_get_started),Toast.LENGTH_SHORT).show()
3330
}
3431
}
3532
binding.viewpagerOnboarding.registerOnPageChangeCallback(object :

app/src/main/java/com/example/androiduidesign/onboardingscreen/OnboardingAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class OnboardingAdapter(private val onBoardingItems: ArrayList<OnBoardingItemsMo
99
lateinit var binding : SplashScreenItemContainerLayoutBinding
1010

1111
class OnboardingViewHolder(binding:SplashScreenItemContainerLayoutBinding) : RecyclerView.ViewHolder(binding.root) {
12-
//Will be Implemented Later
12+
//Will be Implemeted Later
1313
}
1414

1515
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OnboardingViewHolder {
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.example.androiduidesign.utils
2+
3+
import android.content.Context
4+
import android.text.Spannable
5+
import android.text.SpannableString
6+
import android.text.Spanned
7+
import android.text.TextPaint
8+
import android.text.style.ClickableSpan
9+
import android.view.View
10+
import android.widget.Toast
11+
12+
fun getSpannable(text: String, startIndex: Int, endIndex: Int, color: Int, spanClickCallback: () -> Unit): Spannable {
13+
val spannable = SpannableString(text)
14+
val clickableSpan = object : ClickableSpan() {
15+
override fun onClick(p0: View) {
16+
spanClickCallback()
17+
}
18+
19+
override fun updateDrawState(ds: TextPaint) {
20+
super.updateDrawState(ds)
21+
ds.isUnderlineText = false
22+
ds.color = color
23+
}
24+
}
25+
spannable.setSpan(clickableSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
26+
return spannable
27+
}
28+
29+
fun showMessage(context: Context, message: String) {
30+
Toast.makeText(context,message, Toast.LENGTH_SHORT).show()
31+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.example.androiduidesign.utils
2+
3+
const val THIRTYONE = 31
4+
const val THIRTYEIGHT = 38
5+
const val TWENETYFOUR = 24
6+
const val ONE = 1
7+
const val ZERO = 0
8+
const val TWENTYSIX = 26
9+
const val NINETEEN =19
10+
const val TWENTY = 20
11+
const val THIRTYTHREE = 33
12+
const val TWOTHOUSAND = 2000
1.18 KB
Loading
876 Bytes
Loading
1.08 KB
Loading

0 commit comments

Comments
 (0)