Commit de52bb36 authored by shohboz's avatar shohboz

[ADD] MUS-195 Feature, added safety screen

parent a6306367
package com.mobiuz.app.dev.ui.settings.safety
import android.os.Bundle
import android.view.View
import android.widget.SeekBar
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.airbnb.lottie.utils.Utils
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentSafetyBinding
import com.mobiuz.app.dev.model.SharedPref
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.utils.extensions.showMessage
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@AndroidEntryPoint
class SafetyFragment : BaseFragment(R.layout.fragment_safety) {
@Inject
lateinit var pref: SharedPref
private var _bn: FragmentSafetyBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentSafetyBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
toolbar.setNavigationOnClickListener {
requireActivity().finish()
}
switchBiometria.isChecked = pref.isUseFingerPrint
switchBiometria.setOnCheckedChangeListener { _, isChecked ->
val message = if(isChecked) "Biometric enabled" else "Biometric disabled"
showToastMessage(message)
pref.isUseFingerPrint = isChecked
}
btn1.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
}
})
btnChangePin.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
}
})
btnChangePassword.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
navController.navigate(R.id.currentPasswordFragment,null,com.mobiuz.app.dev.utils.Utils.navOptions())
}
})
btn4.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
}
})
btn5.setOnClickListener(object : ButtonClick(){
override fun onSingleClick(v: View?) {
}
})
seekbar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener{
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
showMessage("${seekBar}")
}
})
}
}
override fun collects() {
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package com.mobiuz.app.dev.ui.settings.safety.password
import android.os.Bundle
import android.view.View
import androidx.core.os.bundleOf
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentConfirmPasswordBinding
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthViewModel
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.extensions.getColorCompat
import com.mobiuz.app.dev.utils.hideKeyboard
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
@AndroidEntryPoint
class ConfirmPasswordFragment : BaseFragment(R.layout.fragment_confirm_password) {
private var _bn: FragmentConfirmPasswordBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private var password = ""
private var phone = ""
private val viewModel: AuthViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
password = it.getString(CONSTANTS.PASSWORD, "")
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentConfirmPasswordBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
txtForgetPassword.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
// viewModel.forgetPassword(UserAuth(phone.replace(" ", "").replace("+", "")))
}
})
inputPassword.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
if (s.toString() == password) {
imageCheck.setImageResource(R.drawable.ic_baseline_check_circle)
txtCheckConfirm.text = getString(R.string.password_same)
txtCheckConfirm.setTextColor(getColorCompat(R.color.green100))
btnLogin.isEnabled = true
} else {
imageCheck.setImageResource(R.drawable.ic_vector_error)
txtCheckConfirm.text = getString(R.string.password_not_same)
btnLogin.isEnabled = false
txtCheckConfirm.setTextColor(getColorCompat(R.color.primary100))
}
}
})
btnLogin.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
val password = inputPassword.text.toString().trim()
when {
password.length < 4 -> {
inputPassword.startAnimation(
android.view.animation.AnimationUtils.loadAnimation(
requireContext(),
R.anim.shake
)
)
}
else -> {
bn.btnLogin.hideKeyboard()
showToastMessage(getString(R.string.password_changed))
navController.popBackStack(R.id.safetyFragment, false)
// viewModel.login(UserAuth(phone.replace(" ", "").replace("+", ""), password))
}
}
}
})
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
}
}
override fun collects() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.loginUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone), Utils.navOptions())
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showToastMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.forgetPasswordUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
navController.navigate(
R.id.myVerificationFragment,
bundleOf(
CONSTANTS.PHONE to phone,
CONSTANTS.TYPE_VERIFICATION to CONSTANTS.TYPE_FORGET
),
Utils.navOptions()
)
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showToastMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package com.mobiuz.app.dev.ui.settings.safety.password
import android.os.Bundle
import android.view.View
import androidx.core.os.bundleOf
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentCurrentPasswordBinding
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthViewModel
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.hideKeyboard
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
@AndroidEntryPoint
class CurrentPasswordFragment : BaseFragment(R.layout.fragment_current_password) {
private var _bn: FragmentCurrentPasswordBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private var phone = ""
private val viewModel: AuthViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
phone = it.getString(CONSTANTS.PHONE, "")
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentCurrentPasswordBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
txtForgetPassword.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
// viewModel.forgetPassword(UserAuth(phone.replace(" ", "").replace("+", "")))
}
})
inputPassword.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
btnLogin.isEnabled = (s.toString().length > 3)
}
})
btnLogin.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
val password = inputPassword.text.toString().trim()
when {
password.length < 4 -> {
inputPassword.startAnimation(
android.view.animation.AnimationUtils.loadAnimation(
requireContext(),
R.anim.shake
)
)
}
else -> {
bn.btnLogin.hideKeyboard()
navController.navigate(R.id.newPasswordFragment,null,com.mobiuz.app.dev.utils.Utils.navOptions())
// viewModel.login(UserAuth(phone.replace(" ", "").replace("+", ""), password))
}
}
}
})
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
}
}
override fun collects() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.loginUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone), Utils.navOptions())
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showToastMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.forgetPasswordUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
navController.navigate(
R.id.myVerificationFragment,
bundleOf(
CONSTANTS.PHONE to phone,
CONSTANTS.TYPE_VERIFICATION to CONSTANTS.TYPE_FORGET
),
Utils.navOptions()
)
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showToastMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
package com.mobiuz.app.dev.ui.settings.safety.password
import android.os.Bundle
import android.view.View
import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.mobiuz.app.R
import com.mobiuz.app.databinding.FragmentNewPasswordBinding
import com.mobiuz.app.dev.network.model.UiStateObject
import com.mobiuz.app.dev.ui.auth.AuthViewModel
import com.mobiuz.app.dev.ui.base.BaseFragment
import com.mobiuz.app.dev.ui.global.ButtonClick
import com.mobiuz.app.dev.ui.global.CONSTANTS
import com.mobiuz.app.dev.ui.global.TextWatcherWrapper
import com.mobiuz.app.dev.utils.Utils
import com.mobiuz.app.dev.utils.hideKeyboard
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collect
@AndroidEntryPoint
class NewPasswordFragment : BaseFragment(R.layout.fragment_new_password) {
private var _bn: FragmentNewPasswordBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val navController: NavController by lazy(LazyThreadSafetyMode.NONE) { NavHostFragment.findNavController(this) }
private var phone = ""
private val viewModel: AuthViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
phone = it.getString(CONSTANTS.PHONE, "")
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentNewPasswordBinding.bind(view)
setUpUI()
collects()
}
override fun setUpUI() {
bn.apply {
txtForgetPassword.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
// viewModel.forgetPassword(UserAuth(phone.replace(" ", "").replace("+", "")))
}
})
inputPassword.addTextChangedListener(object : TextWatcherWrapper() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
super.onTextChanged(s, start, before, count)
bn.helperPassword.isVisible = false
btnLogin.isEnabled = (s.toString().length > 3)
}
})
btnLogin.setOnClickListener(object : ButtonClick() {
override fun onSingleClick(v: View?) {
val password = inputPassword.text.toString().trim()
when {
password.length < 4 -> {
inputPassword.startAnimation(
android.view.animation.AnimationUtils.loadAnimation(
requireContext(),
R.anim.shake
)
)
}
else -> {
bn.btnLogin.hideKeyboard()
navController.navigate(R.id.confirmPasswordFragment, bundleOf(CONSTANTS.PASSWORD to password),Utils.navOptions())
// viewModel.login(UserAuth(phone.replace(" ", "").replace("+", ""), password))
}
}
}
})
toolbar.setNavigationOnClickListener {
navController.navigateUp()
}
}
}
override fun collects() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.loginUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
bn.helperPassword.isVisible = false
navController.navigate(R.id.myVerificationFragment, bundleOf(CONSTANTS.PHONE to phone), Utils.navOptions())
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showToastMessage(it.message)
bn.helperPassword.isVisible = false
}
is UiStateObject.LOADING -> {
bn.helperPassword.isVisible = false
showProgressDialog(true)
}
else -> Unit
}
}
}
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.forgetPasswordUiState.collect {
when (it) {
is UiStateObject.SUCCESS -> {
showProgressDialog(false)
navController.navigate(
R.id.myVerificationFragment,
bundleOf(
CONSTANTS.PHONE to phone,
CONSTANTS.TYPE_VERIFICATION to CONSTANTS.TYPE_FORGET
),
Utils.navOptions()
)
}
is UiStateObject.ERROR -> {
showProgressDialog(false)
showToastMessage(it.message)
}
is UiStateObject.LOADING -> {
showProgressDialog(true)
}
else -> Unit
}
}
}
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_password"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_current_password"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt_hint_confirm"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/txt_hint_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:text="@string/enter_password"
android:textSize="15sp"
android:textColor="@color/black75"
app:layout_constraintStart_toStartOf="@id/layout_input_password"
app:layout_constraintTop_toBottomOf="@id/txt_password" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
app:endIconMode="password_toggle"
app:layout_constraintTop_toBottomOf="@id/txt_hint_confirm">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/edit_text_unchecked"
android:imeOptions="actionDone"
android:inputType="numberPassword"
android:maxLength="7"
android:textSize="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp"
tools:ignore="RtlSymmetry" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/txt_forget_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/_6sdp"
android:textSize="16sp"
android:text="@string/forget_password"
android:background="?android:selectableItemBackground"
android:textColor="@color/grey110"
android:textStyle="bold"
android:layout_marginTop="@dimen/_10sdp"
android:layout_marginEnd="@dimen/_10sdp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:enabled="false"
android:textSize="@dimen/_12sdp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_34sdp"
android:text="@string/enter"
app:layout_constraintTop_toBottomOf="@id/layout_input_password"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -20,11 +20,26 @@
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_verification"
android:textSize="@dimen/_20sdp"
android:textSize="29sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/txt_error_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="32dp"
android:visibility="gone"
android:text="@string/error_code"
android:textSize="17sp"
android:textColor="@color/primary100"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/txt_enter_phone" />
<FrameLayout
android:id="@+id/pin_view_group"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
/>
<TextView
style="@style/TitleTextStyle"
android:id="@+id/txt_password"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_14sdp"
android:text="@string/enter_new_password"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt_hint_confirm"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/txt_hint_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:text="@string/enter_password"
android:textSize="15sp"
android:textColor="@color/black75"
app:layout_constraintStart_toStartOf="@id/layout_input_password"
app:layout_constraintTop_toBottomOf="@id/txt_password" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/_12sdp"
android:layout_marginEnd="@dimen/_12sdp"
app:endIconMode="password_toggle"
app:layout_constraintTop_toBottomOf="@id/txt_hint_confirm">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/edit_text_unchecked"
android:imeOptions="actionDone"
android:inputType="numberPassword"
android:maxLength="7"
android:textSize="@dimen/_12sdp"
android:paddingVertical="@dimen/_12sdp"
android:paddingStart="@dimen/_12sdp"
tools:ignore="RtlSymmetry" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/helper_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/phone"
android:visibility="gone"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@id/layout_input_confirm"
app:layout_constraintTop_toBottomOf="@id/layout_input_confirm"
android:layout_marginTop="@dimen/_4sdp"
android:layout_marginStart="@dimen/_12sdp"
android:layout_gravity="start"
android:textColor="@color/primary100"
/>
<TextView
android:id="@+id/txt_forget_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/_6sdp"
android:textSize="16sp"
android:text="@string/forget_password"
android:background="?android:selectableItemBackground"
android:textColor="@color/grey110"
android:textStyle="bold"
android:layout_marginTop="@dimen/_10sdp"
android:layout_marginEnd="@dimen/_10sdp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_input_password" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:enabled="false"
android:textSize="@dimen/_12sdp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_marginTop="@dimen/_34sdp"
android:text="@string/enter"
app:layout_constraintTop_toBottomOf="@id/layout_input_password"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:navigationIcon="@drawable/ic_baseline_arrow_back"
app:title="@string/safety" />
<TextView
android:layout_width="wrap_content"
android:background="@color/grey20"
android:layout_marginTop="40dp"
android:paddingHorizontal="16dp"
android:paddingVertical="12dp"
android:gravity="center"
android:layout_marginHorizontal="12dp"
android:text="Настройки безопасности действуют только для основного номера +998 97 999-99-99"
android:layout_height="wrap_content"/>
<LinearLayout
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:background="?android:selectableItemBackground"
android:paddingHorizontal="@dimen/_16sdp"
android:paddingVertical="@dimen/_10sdp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Биометрия"
android:textColor="@color/black100"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Использовать для входа в приложение"
android:textColor="@color/grey110"
android:textSize="15sp" />
</LinearLayout>
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/switch_biometria"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<LinearLayout
android:id="@+id/btn_change_pin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="?android:selectableItemBackground"
android:paddingHorizontal="@dimen/_16sdp"
android:paddingVertical="@dimen/_10sdp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Сменить PIN"
android:textColor="@color/black100"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Изменение PIN для входа в приложение"
android:textColor="@color/grey110"
android:textSize="15sp" />
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_baseline_keyboard_arrow_right"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<LinearLayout
android:id="@+id/btn_change_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="?android:selectableItemBackground"
android:paddingHorizontal="@dimen/_16sdp"
android:paddingVertical="@dimen/_10sdp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Сменить пароль"
android:textColor="@color/black100"
android:textSize="18sp"
android:textStyle="bold" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_baseline_keyboard_arrow_right"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<LinearLayout
android:id="@+id/btn_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:visibility="invisible"
android:background="?android:selectableItemBackground"
android:paddingHorizontal="@dimen/_16sdp"
android:paddingVertical="@dimen/_10sdp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Доверенные устройства"
android:textColor="@color/black100"
android:textSize="18sp"
android:textStyle="bold" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_baseline_keyboard_arrow_right"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<LinearLayout
android:id="@+id/btn_5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:visibility="invisible"
android:background="?android:selectableItemBackground"
android:paddingHorizontal="@dimen/_16sdp"
android:paddingVertical="@dimen/_10sdp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Автоблокировка"
android:textColor="@color/black100"
android:textSize="18sp"
android:textStyle="bold" />
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_baseline_keyboard_arrow_right"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<SeekBar
android:layout_width="match_parent"
android:layout_marginTop="48dp"
android:id="@+id/seekbar"
android:visibility="invisible"
android:layout_marginHorizontal="@dimen/_12sdp"
android:layout_height="wrap_content"/>
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment