Commit 0ce41d2e authored by shohboz's avatar shohboz

[ADD] MUS-107 Feature, home page apis

parent d1c07931
...@@ -2,17 +2,26 @@ package uz.ssd.mobiuz ...@@ -2,17 +2,26 @@ package uz.ssd.mobiuz
import android.graphics.Color import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.navigation.NavController import androidx.navigation.NavController
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.databinding.ActivityMainBinding import uz.ssd.mobiuz.databinding.ActivityMainBinding
import uz.ssd.mobiuz.model.SharedPref
import uz.ssd.mobiuz.ui.auth.FullScreenDialog
import uz.ssd.mobiuz.utils.CONSTANTS
import uz.ssd.mobiuz.utils.extensions.customLog
import uz.ssd.mobiuz.utils.extensions.setupWithNavController import uz.ssd.mobiuz.utils.extensions.setupWithNavController
import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
@Inject
lateinit var pref: SharedPref
private var _bn: ActivityMainBinding? = null private var _bn: ActivityMainBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate") private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
...@@ -30,9 +39,17 @@ class MainActivity : AppCompatActivity() { ...@@ -30,9 +39,17 @@ class MainActivity : AppCompatActivity() {
setupBottomNavigationBar() setupBottomNavigationBar()
} }
intent?.let {
val arg = it.getStringExtra(CONSTANTS.FIRST) ?: ""
if (arg.isEmpty()) {
val dialog = FullScreenDialog()
dialog.setOnPinDoneListener { }
dialog.show(supportFragmentManager, "tag")
}
}
customLog("token: ${pref.getUserToken()}")
} }
private fun setupBottomNavigationBar() { private fun setupBottomNavigationBar() {
try { try {
bottomNavigationView = findViewById(R.id.bottom_nav_view) bottomNavigationView = findViewById(R.id.bottom_nav_view)
......
...@@ -8,6 +8,7 @@ import dagger.hilt.android.AndroidEntryPoint ...@@ -8,6 +8,7 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import uz.ssd.mobiuz.databinding.ActivitySplashBinding import uz.ssd.mobiuz.databinding.ActivitySplashBinding
import uz.ssd.mobiuz.model.SharedPref import uz.ssd.mobiuz.model.SharedPref
import uz.ssd.mobiuz.utils.CONSTANTS
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
...@@ -26,10 +27,22 @@ class SplashActivity : AppCompatActivity() { ...@@ -26,10 +27,22 @@ class SplashActivity : AppCompatActivity() {
lifecycleScope.launchWhenCreated { lifecycleScope.launchWhenCreated {
delay(1000) delay(1000)
if (pref.language.isEmpty()) { when {
startActivity(Intent(this@SplashActivity, LanguageActivity::class.java)) pref.language.isEmpty() -> {
} else { startActivity(Intent(this@SplashActivity, LanguageActivity::class.java))
startActivity(Intent(this@SplashActivity, AuthActivity::class.java)) }
!pref.isRegistered -> {
startActivity(Intent(this@SplashActivity, AuthActivity::class.java))
}
pref.pin_code.isEmpty() -> {
startActivity(Intent(this@SplashActivity, AuthActivity::class.java).putExtra(CONSTANTS.TYPE_AUTH,CONSTANTS.PIN_CODE))
}
else -> {
startActivity(Intent(this@SplashActivity, MainActivity::class.java))
}
} }
finish() finish()
} }
......
...@@ -14,9 +14,12 @@ import okhttp3.logging.HttpLoggingInterceptor ...@@ -14,9 +14,12 @@ import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit import retrofit2.Retrofit
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory import retrofit2.converter.gson.GsonConverterFactory
import uz.ssd.mobiuz.BuildConfig
import uz.ssd.mobiuz.model.SharedPref import uz.ssd.mobiuz.model.SharedPref
import uz.ssd.mobiuz.network.api.ApiService import uz.ssd.mobiuz.network.api.ApiService
import uz.ssd.mobiuz.utils.CONSTANTS import uz.ssd.mobiuz.utils.CONSTANTS
import uz.ssd.mobiuz.utils.Utils
import java.util.*
import javax.inject.Singleton import javax.inject.Singleton
@Module @Module
...@@ -52,7 +55,7 @@ class ServerModule { ...@@ -52,7 +55,7 @@ class ServerModule {
val builder = chain.request().newBuilder() val builder = chain.request().newBuilder()
builder.header("Content-Type", "application/x-www-form-urlencoded") builder.header("Content-Type", "application/x-www-form-urlencoded")
builder.header("Lang", sharedPref.language) builder.header("Lang", sharedPref.language)
builder.header("device-id", Build.DEVICE) builder.header("device-id", Utils.getDeviceName())
builder.header("Accept", "application/json") builder.header("Accept", "application/json")
builder.header("Authorization", "Bearer ${sharedPref.getUserToken()}") builder.header("Authorization", "Bearer ${sharedPref.getUserToken()}")
chain.proceed(builder.build()) chain.proceed(builder.build())
......
...@@ -17,14 +17,6 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) { ...@@ -17,14 +17,6 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) {
return mySharedPref.getString("device_token", null) return mySharedPref.getString("device_token", null)
} }
fun setUserId(id: Int) {
mySharedPref.edit().putInt("user_id", id).apply()
}
fun getUserId(): Int {
return mySharedPref.getInt("user_id", 0)
}
fun setUserToken(token: String?) { fun setUserToken(token: String?) {
mySharedPref.edit().putString("user_token", token).apply() mySharedPref.edit().putString("user_token", token).apply()
} }
...@@ -45,4 +37,16 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) { ...@@ -45,4 +37,16 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) {
mySharedPref.edit().putString(::pin_code.name, value).apply() mySharedPref.edit().putString(::pin_code.name, value).apply()
} }
var isRegistered: Boolean
get() = mySharedPref.getBoolean("isRegistered", false)
set(value) {
mySharedPref.edit().putBoolean("isRegistered", value).apply()
}
var userPhone: String
get() = mySharedPref.getString(::userPhone.name, "")?:""
set(value) {
mySharedPref.edit().putString(::userPhone.name, value).apply()
}
} }
\ No newline at end of file
...@@ -3,10 +3,8 @@ package uz.ssd.mobiuz.network.api ...@@ -3,10 +3,8 @@ package uz.ssd.mobiuz.network.api
import retrofit2.http.Body import retrofit2.http.Body
import retrofit2.http.POST import retrofit2.http.POST
import uz.ssd.mobiuz.model.UserAuth import uz.ssd.mobiuz.model.UserAuth
import uz.ssd.mobiuz.network.model.Action import uz.ssd.mobiuz.network.model.*
import uz.ssd.mobiuz.network.model.GenerateToken
import uz.ssd.mobiuz.network.model.ResponseList
import uz.ssd.mobiuz.network.model.ResponseObject
interface ApiService { interface ApiService {
...@@ -29,4 +27,7 @@ interface ApiService { ...@@ -29,4 +27,7 @@ interface ApiService {
suspend fun checkSMSCode( suspend fun checkSMSCode(
@Body req: UserAuth @Body req: UserAuth
): ResponseObject<GenerateToken> ): ResponseObject<GenerateToken>
@POST("main/index")
suspend fun mainIndex(): ResponseObject<Customer>
} }
\ No newline at end of file
package uz.ssd.mobiuz.network.model
data class Customer(
var customer: CustomerData
)
data class CustomerData(
var info: CustomerInfo,
var name: String
)
data class CustomerInfo(
var balance: CustomerInfoBalance,
var counters: CustomerInfoCounters
)
data class CustomerInfoBalance(
var amount: String,
var currency: String
)
data class CustomerInfoCounters(
var BYTE: CodeValueUnit,
var ITEM: CodeValueUnit,
var SECOND: CodeValueUnit
)
data class CodeValueUnit(
var code: String,
var value: Int,
var unit: String,
)
\ No newline at end of file
...@@ -4,6 +4,7 @@ package uz.ssd.mobiuz.network.model ...@@ -4,6 +4,7 @@ package uz.ssd.mobiuz.network.model
sealed class UiStateList<out T> { sealed class UiStateList<out T> {
data class SUCCESS<out T>(val data: List<T>) : UiStateList<T>() data class SUCCESS<out T>(val data: List<T>) : UiStateList<T>()
data class ERROR(val message: String, var fromServer: Boolean = false) : UiStateList<Nothing>() data class ERROR(val message: String, var fromServer: Boolean = false) : UiStateList<Nothing>()
data class ERRORS(val errors: List<Errors>) : UiStateObject<Nothing>()
object LOADING : UiStateList<Nothing>() object LOADING : UiStateList<Nothing>()
object EMPTY : UiStateList<Nothing>() object EMPTY : UiStateList<Nothing>()
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ package uz.ssd.mobiuz.network.model ...@@ -3,6 +3,7 @@ package uz.ssd.mobiuz.network.model
sealed class UiStateObject<out T> { sealed class UiStateObject<out T> {
data class SUCCESS<out T>(val data: T) : UiStateObject<T>() data class SUCCESS<out T>(val data: T) : UiStateObject<T>()
data class ERROR(val message: String,var fromServer: Boolean = false) : UiStateObject<Nothing>() data class ERROR(val message: String,var fromServer: Boolean = false) : UiStateObject<Nothing>()
data class ERRORS(val errors: List<Errors>) : UiStateObject<Nothing>()
object LOADING : UiStateObject<Nothing>() object LOADING : UiStateObject<Nothing>()
object EMPTY : UiStateObject<Nothing>() object EMPTY : UiStateObject<Nothing>()
} }
\ No newline at end of file
package uz.ssd.mobiuz.ui.auth
import android.os.Bundle
import android.view.View
import android.view.animation.AnimationUtils
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.FragmentPinDialogBinding
import uz.ssd.mobiuz.model.PinData
import uz.ssd.mobiuz.model.SharedPref
import uz.ssd.mobiuz.utils.extensions.SingleBlock
import javax.inject.Inject
@AndroidEntryPoint
class FullScreenDialog : DialogFragment(R.layout.fragment_pin_dialog) {
@Inject
lateinit var pref: SharedPref
private var _bn: FragmentPinDialogBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private val data = ArrayList<PinData>()
private val pinAdapter = PinAdapter()
private var listener: SingleBlock<Unit>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_TITLE,R.style.FullScreenDialog)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_bn = FragmentPinDialogBinding.bind(view)
setUpUI()
}
fun setUpUI() {
bn.apply {
loadData()
rvPin.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
rvPin.adapter = pinAdapter
txtNotPin.isVisible = false
pinAdapter.setOnDoneListener {
lifecycleScope.launchWhenCreated {
delay(200)
if (pref.pin_code == it) {
listener?.invoke(Unit)
txtNotPin.isVisible = false
dismiss()
} else {
cardPin.startAnimation(AnimationUtils.loadAnimation(context, R.anim.shake))
txtNotPin.isVisible = true
}
}
}
for (i in 0 until btnViewGroup.childCount) {
btnViewGroup.getChildAt(i).setOnClickListener {
if (it.id == R.id.btn_remove) {
pinAdapter.removeItem()
txtNotPin.isVisible = false
} else {
val text = it as TextView
pinAdapter.addItem(text.text.toString().toInt())
}
}
}
}
}
private fun loadData() {
data.clear()
for (i in 0..3) {
data.add(PinData(-1))
}
pinAdapter.submitList(data)
}
fun setOnPinDoneListener(block: SingleBlock<Unit>) {
listener = block
}
override fun onDestroy() {
_bn = null
super.onDestroy()
}
}
package uz.ssd.mobiuz.ui.base
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import uz.ssd.mobiuz.R
import uz.ssd.mobiuz.databinding.LayoutExitBinding
import uz.ssd.mobiuz.utils.extensions.SingleBlock
class ExitDialog : DialogFragment() {
private var doneListener: SingleBlock<Boolean>? = null
private var _bn: LayoutExitBinding? = null
private val bn get() = _bn!!
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_TITLE, R.style.CustomDialog)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_bn = LayoutExitBinding.inflate(inflater, container, false)
return bn.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
isCancelable = false
bn.apply {
btnCancel.setOnClickListener {
dismiss()
}
btnDone.setOnClickListener {
doneListener?.invoke(true)
dismiss()
}
}
}
fun setOnDoneListener(block: SingleBlock<Boolean>) {
doneListener = block
}
override fun onDestroy() {
super.onDestroy()
_bn = null
}
}
\ No newline at end of file
package uz.ssd.mobiuz.utils.extensions
import java.text.DecimalFormat
import java.text.DecimalFormatSymbols
import java.util.*
fun Number.toMoneyFormat(): String {
return String.format(
DecimalFormat(
"#,###.##",
DecimalFormatSymbols(Locale("ru", "RU"))
).format(this)
)
}
fun String.toMoneyFormat(): String {
return try {
val number = this.toFloat()
number.toMoneyFormat()
} catch (e: Exception) {
this
}
}
fun String.currencyFormat():String{
val format = this.replace(",","")
return DecimalFormat("###,###,###").format(format.toDouble())
}
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:fitsSystemWindows="false" android:fitsSystemWindows="false"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
...@@ -13,287 +14,314 @@ ...@@ -13,287 +14,314 @@
android:orientation="vertical"> android:orientation="vertical">
<FrameLayout <FrameLayout
android:layout_width="match_parent"
android:layout_height="@dimen/_240sdp"
android:background="@drawable/bgn_home"
android:paddingBottom="@dimen/_70sdp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:padding="@dimen/_10sdp"
android:layout_marginStart="12dp"
android:id="@+id/btn_menu"
android:layout_marginTop="@dimen/_28sdp"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_menu" />
<LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_gravity="center" android:layout_height="@dimen/_240sdp"
android:layout_marginStart="12dp" android:background="@drawable/bgn_home"
android:layout_marginTop="@dimen/_16sdp" android:paddingBottom="@dimen/_70sdp">
android:layout_marginBottom="@dimen/_6sdp"
android:layout_height="wrap_content">
<com.makeramen.roundedimageview.RoundedImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
app:riv_corner_radius="14dp"
android:src="@drawable/ic_photo" />
<LinearLayout <ImageView
android:id="@+id/btn_menu"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_gravity="top"
android:layout_gravity="center" android:layout_marginStart="12dp"
android:orientation="vertical"> android:layout_marginTop="@dimen/_28sdp"
android:background="?selectableItemBackgroundBorderless"
<TextView android:padding="@dimen/_10sdp"
android:layout_width="wrap_content" android:src="@drawable/ic_menu" />
android:layout_height="wrap_content"
android:textColor="@color/light"
android:text="@string/my_number" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+998 97 980 25 52"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:paddingHorizontal="16dp"
android:layout_gravity="bottom"
android:layout_marginTop="@dimen/_10sdp"
android:layout_height="wrap_content">
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:layout_gravity="center"
android:layout_marginStart="12dp"
android:layout_marginTop="@dimen/_16sdp"
android:layout_marginBottom="@dimen/_6sdp">
<TextView <com.makeramen.roundedimageview.RoundedImageView
android:layout_width="wrap_content" android:layout_width="50dp"
android:layout_height="wrap_content" android:layout_height="50dp"
android:textColor="@color/light" android:layout_gravity="center"
android:text="@string/balance" /> android:src="@drawable/ic_photo"
app:riv_corner_radius="14dp" />
<TextView <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="24 350 UZS" android:layout_gravity="center"
android:textStyle="bold" android:layout_marginStart="10dp"
android:textSize="20sp" android:orientation="vertical">
android:textColor="@color/white" />
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:id="@+id/btn_add_sum"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_plus" />
</FrameLayout> <TextView
</FrameLayout> android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_number"
android:textColor="@color/light" />
<com.google.android.material.card.MaterialCardView <TextView
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardCornerRadius="4dp" tools:text="+998 97 980 25 52"
app:cardElevation="4dp" android:textColor="@color/white"
android:layout_marginHorizontal="@dimen/_10sdp" android:id="@+id/txt_my_number"
android:layout_marginTop="-70dp"> android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent" </LinearLayout>
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_gravity="bottom"
android:paddingHorizontal="@dimen/_12sdp"> android:layout_marginTop="@dimen/_10sdp"
android:paddingHorizontal="16dp">
<TextView <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textStyle="bold" android:orientation="vertical">
android:textSize="20sp"
android:text="Mobi 50" />
<TextView <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/balance"
android:textColor="@color/light" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="24 350 UZS"
android:id="@+id/txt_balance"
android:textColor="@color/white"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
<ImageView
android:id="@+id/btn_add_sum"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="end" android:layout_gravity="end"
android:text="50 000 Сум/мес" android:background="?selectableItemBackgroundBorderless"
android:textColor="@color/light" /> android:src="@drawable/ic_plus" />
</FrameLayout>
<View </FrameLayout>
android:layout_width="match_parent" </FrameLayout>
android:layout_height="1dp"
android:layout_marginTop="16dp"
android:background="@color/lang_bgn" />
<TextView <com.google.android.material.card.MaterialCardView
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_marginHorizontal="@dimen/_10sdp"
android:layout_marginTop="10dp" android:layout_marginTop="-70dp"
android:text="@string/oatatok_tarifu" app:cardCornerRadius="4dp"
android:textColor="@color/light" /> app:cardElevation="4dp">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp"> android:orientation="vertical">
<LinearLayout <FrameLayout
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_marginTop="12dp"
android:orientation="vertical"> android:paddingHorizontal="@dimen/_12sdp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_wi_fi" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:text="Mobi 50"
android:layout_marginVertical="6dp"
android:text="4,5"
android:textSize="20sp" android:textSize="20sp"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="end"
android:text="гигабайт" android:text="50 000 Сум/мес"
android:textColor="@color/light_dark" /> android:textColor="@color/light" />
</LinearLayout> </FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="16dp"
android:background="@color/lang_bgn" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="@string/oatatok_tarifu"
android:textColor="@color/light" />
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_marginTop="16dp">
android:orientation="vertical">
<ImageView <LinearLayout
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_weight="1"
android:src="@drawable/ic_phone" /> android:orientation="vertical">
<TextView <ImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_wi_fi" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="6dp"
tools:text="4,5"
android:id="@+id/txt_count_mb"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
tools:text="гигабайт"
android:id="@+id/txt_type_mb"
android:textColor="@color/light_dark" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_weight="1"
android:layout_marginVertical="6dp" android:orientation="vertical">
android:text="234"
android:textSize="20sp" <ImageView
android:textStyle="bold" /> android:layout_width="wrap_content"
android:layout_height="wrap_content"
<TextView android:layout_gravity="center"
android:layout_width="wrap_content" android:src="@drawable/ic_phone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="6dp"
tools:text="234"
android:id="@+id/txt_count_minut"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
tools:text="минут"
android:id="@+id/txt_type_minut"
android:textColor="@color/light_dark" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_weight="1"
android:text="минут" android:orientation="vertical">
android:textColor="@color/light_dark" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_message" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="6dp"
tools:text="500"
android:id="@+id/txt_count_sms"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
tools:text="SMS"
android:id="@+id/txt_type_sms"
android:textColor="@color/light_dark" />
</LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout <View
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="1dp"
android:layout_weight="1" android:layout_marginTop="16dp"
android:orientation="vertical"> android:background="@color/lang_bgn" />
<ImageView <FrameLayout
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_marginTop="16dp"
android:src="@drawable/ic_message" /> android:layout_marginBottom="16dp"
android:paddingHorizontal="@dimen/_12sdp">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:text="@string/next_spisanie"
android:layout_marginVertical="6dp" android:textColor="@color/light"
android:text="500" android:textSize="14sp" />
android:textSize="20sp"
android:textStyle="bold" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="end"
android:text="SMS" android:text="22 Декабря"
android:textColor="@color/light_dark" /> android:textColor="@color/light_dark"
</LinearLayout> android:textStyle="bold" />
</FrameLayout>
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>
<View <include
android:layout_width="match_parent" layout="@layout/item_home"
android:layout_height="1dp" android:layout_width="match_parent"
android:layout_marginTop="16dp" android:layout_height="@dimen/_150sdp"
android:background="@color/lang_bgn" /> android:layout_marginHorizontal="12dp"
android:layout_marginTop="@dimen/_16sdp" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:paddingHorizontal="@dimen/_12sdp">
<TextView <ImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/next_spisanie" android:layout_gravity="center"
android:textSize="14sp" android:layout_marginHorizontal="12dp"
android:textColor="@color/light" /> android:layout_marginTop="@dimen/_8sdp"
android:layout_marginBottom="@dimen/_20sdp"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_group_12" />
<TextView <include
android:layout_width="wrap_content" layout="@layout/item_home"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:layout_gravity="end" android:layout_height="@dimen/_150sdp"
android:textStyle="bold" android:layout_marginHorizontal="12dp"
android:text="22 Декабря" android:layout_marginTop="@dimen/_16sdp" />
android:textColor="@color/light_dark" />
</FrameLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<include <ImageView
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="@dimen/_150sdp" android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp" android:layout_gravity="center"
android:layout_marginTop="@dimen/_16sdp" android:layout_marginHorizontal="12dp"
layout="@layout/item_home"/> android:layout_marginTop="@dimen/_8sdp"
android:layout_marginBottom="@dimen/_20sdp"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_group_12" />
<ImageView </LinearLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="@dimen/_8sdp"
android:layout_marginBottom="@dimen/_20sdp"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_group_12" />
</LinearLayout>
</ScrollView> </ScrollView>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutDescription="@xml/layout_description"
android:fitsSystemWindows="false"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="false"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="@dimen/_240sdp"
android:background="@drawable/bgn_home"
android:paddingBottom="@dimen/_70sdp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:padding="@dimen/_10sdp"
android:layout_marginStart="12dp"
android:id="@+id/btn_menu"
android:layout_marginTop="@dimen/_28sdp"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_menu" />
<LinearLayout
android:layout_width="match_parent"
android:layout_gravity="center"
android:layout_marginStart="12dp"
android:layout_marginTop="@dimen/_16sdp"
android:layout_marginBottom="@dimen/_6sdp"
android:layout_height="wrap_content">
<com.makeramen.roundedimageview.RoundedImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
app:riv_corner_radius="14dp"
android:src="@drawable/ic_photo" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/light"
android:text="@string/my_number" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+998 97 980 25 52"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:paddingHorizontal="16dp"
android:layout_gravity="bottom"
android:layout_marginTop="@dimen/_10sdp"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/light"
android:text="@string/balance" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="24 350 UZS"
android:textStyle="bold"
android:textSize="20sp"
android:textColor="@color/white" />
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:id="@+id/btn_add_sum"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_plus" />
</FrameLayout>
</FrameLayout>
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardElevation="4dp"
android:layout_marginHorizontal="@dimen/_10sdp"
android:layout_marginTop="-70dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:paddingHorizontal="@dimen/_12sdp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="20sp"
android:text="Mobi 50" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="50 000 Сум/мес"
android:textColor="@color/light" />
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="16dp"
android:background="@color/lang_bgn" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="@string/oatatok_tarifu"
android:textColor="@color/light" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_wi_fi" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="6dp"
android:text="4,5"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="гигабайт"
android:textColor="@color/light_dark" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_phone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="6dp"
android:text="234"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="минут"
android:textColor="@color/light_dark" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_message" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="6dp"
android:text="500"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="SMS"
android:textColor="@color/light_dark" />
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="16dp"
android:background="@color/lang_bgn" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:paddingHorizontal="@dimen/_12sdp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next_spisanie"
android:textSize="14sp"
android:textColor="@color/light" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:textStyle="bold"
android:text="22 Декабря"
android:textColor="@color/light_dark" />
</FrameLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<include
android:layout_width="match_parent"
android:layout_height="@dimen/_150sdp"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="@dimen/_16sdp"
layout="@layout/item_home"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="@dimen/_8sdp"
android:layout_marginBottom="@dimen/_20sdp"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_group_12" />
<include
android:layout_width="match_parent"
android:layout_height="@dimen/_150sdp"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="@dimen/_16sdp"
layout="@layout/item_home"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="@dimen/_8sdp"
android:layout_marginBottom="@dimen/_20sdp"
android:background="?selectableItemBackgroundBorderless"
android:src="@drawable/ic_group_12" />
</LinearLayout>
</ScrollView>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/motionLayout"
android:orientation="vertical"
android:scrollbars="vertical"
android:fitsSystemWindows="false"
app:layoutDescription="@xml/home_motion_scene">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="@dimen/_240sdp"
android:src="@drawable/bgn_home"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.motion.widget.MotionLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<MotionScene
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto">
<Transition
motion:constraintSetEnd="@+id/end"
motion:constraintSetStart="@id/start"
motion:motionInterpolator="linear"
motion:duration="1000">
<KeyFrameSet>
</KeyFrameSet>
</Transition>
<ConstraintSet android:id="@+id/start">
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
</ConstraintSet>
</MotionScene>
\ 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