Skip to content

Commit 22b59cb

Browse files
committed
add fullscereen loading & layout loading
1 parent dff5e8c commit 22b59cb

12 files changed

Lines changed: 132 additions & 8 deletions

File tree

app/src/main/java/com/zero/devbase/MainActivity.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
package com.zero.devbase
22

3-
import android.util.Log
43
import com.zero.devbase.databinding.ActivityMainBinding
5-
import com.zero.zerobase.presentation.utils.toast
64
import com.zero.zerobase.presentation.viewbinding.BaseActivity
7-
import com.zero.zerobase.ui.LoadingDialog
5+
import com.zero.zerobase.ui.loading.LoadingFullScreenDialog
86

97
class MainActivity : BaseActivity<ActivityMainBinding>() {
108

119
override fun initUI() {
1210
super.initUI()
13-
loadingDialog.show()
11+
binding.loadingView.show()
1412
}
1513
override fun initData() {
1614
super.initData()

app/src/main/res/layout/activity_main.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
tools:context=".MainActivity">
88

99
<TextView
10+
android:id="@+id/textView"
1011
android:layout_width="wrap_content"
1112
android:layout_height="wrap_content"
1213
android:text="Hello World!"
@@ -15,4 +16,13 @@
1516
app:layout_constraintStart_toStartOf="parent"
1617
app:layout_constraintTop_toTopOf="parent" />
1718

19+
<com.zero.zerobase.ui.loading.ZeroLayoutLoading
20+
android:id="@+id/loadingView"
21+
android:layout_width="match_parent"
22+
android:layout_height="0dp"
23+
app:layout_constraintBottom_toBottomOf="parent"
24+
app:layout_constraintEnd_toEndOf="parent"
25+
app:layout_constraintStart_toStartOf="parent"
26+
app:layout_constraintTop_toBottomOf="@+id/textView" />
27+
1828
</androidx.constraintlayout.widget.ConstraintLayout>

zerobase/src/main/java/com/zero/zerobase/presentation/viewbinding/BaseActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.zero.zerobase.presentation.viewbinding
33
import android.os.Bundle
44
import androidx.appcompat.app.AppCompatActivity
55
import com.zero.zerobase.presentation.utils.getBinding
6-
import com.zero.zerobase.ui.LoadingDialog
6+
import com.zero.zerobase.ui.loading.LoadingDialog
77

88
abstract class BaseActivity<T : androidx.viewbinding.ViewBinding> : AppCompatActivity() {
99
val binding by lazy { getBinding() }

zerobase/src/main/java/com/zero/zerobase/presentation/viewbinding/BaseBottomSheetFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import android.view.View
66
import android.view.ViewGroup
77
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
88
import com.zero.zerobase.presentation.utils.getBinding
9-
import com.zero.zerobase.ui.LoadingDialog
9+
import com.zero.zerobase.ui.loading.LoadingDialog
1010

1111
abstract class BaseBottomSheetFragment<T : androidx.viewbinding.ViewBinding> : BottomSheetDialogFragment() {
1212
val binding by lazy { getBinding() }

zerobase/src/main/java/com/zero/zerobase/presentation/viewbinding/BaseFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import android.view.View
66
import android.view.ViewGroup
77
import androidx.fragment.app.Fragment
88
import com.zero.zerobase.presentation.utils.getBinding
9-
import com.zero.zerobase.ui.LoadingDialog
9+
import com.zero.zerobase.ui.loading.LoadingDialog
1010

1111
abstract class BaseFragment<T : androidx.viewbinding.ViewBinding> : Fragment() {
1212
val binding by lazy { getBinding() }

zerobase/src/main/java/com/zero/zerobase/ui/LoadingDialog.kt renamed to zerobase/src/main/java/com/zero/zerobase/ui/loading/LoadingDialog.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.zero.zerobase.ui
1+
package com.zero.zerobase.ui.loading
22

33
import android.app.Dialog
44
import android.content.Context
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.zero.zerobase.ui.loading
2+
3+
import android.app.Dialog
4+
import android.content.Context
5+
import android.os.Bundle
6+
import android.view.LayoutInflater
7+
import android.view.Window
8+
import com.zero.zerobase.databinding.DialogFullscreenLoadingBinding
9+
import com.zero.zerobase.databinding.DialogLoadingBinding
10+
11+
class LoadingFullScreenDialog(context: Context, private val cancelable: Boolean = false) : Dialog(context) {
12+
13+
private lateinit var binding: DialogFullscreenLoadingBinding
14+
15+
override fun onCreate(savedInstanceState: Bundle?) {
16+
super.onCreate(savedInstanceState)
17+
requestWindowFeature(Window.FEATURE_NO_TITLE)
18+
19+
binding = DialogFullscreenLoadingBinding.inflate(LayoutInflater.from(context))
20+
setContentView(binding.root)
21+
22+
setCancelable(cancelable)
23+
setCanceledOnTouchOutside(false)
24+
25+
window?.setBackgroundDrawableResource(android.R.color.transparent)
26+
}
27+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.zero.zerobase.ui.loading
2+
3+
import android.app.DatePickerDialog
4+
import android.content.Context
5+
import android.util.AttributeSet
6+
import android.view.LayoutInflater
7+
import android.widget.LinearLayout
8+
import com.zero.zerobase.databinding.LayoutLoadingBinding
9+
import java.text.SimpleDateFormat
10+
import java.util.Calendar
11+
import java.util.Locale
12+
import java.util.TimeZone
13+
14+
class ZeroLayoutLoading@JvmOverloads constructor(
15+
context: Context,
16+
attrs: AttributeSet? = null,
17+
defStyleAttr: Int = 0
18+
) : LinearLayout(context, attrs, defStyleAttr) {
19+
20+
private val binding: LayoutLoadingBinding = LayoutLoadingBinding.inflate(
21+
LayoutInflater.from(context), this
22+
)
23+
24+
private var isLoading: Boolean = false
25+
26+
init {
27+
binding.root.visibility = GONE
28+
}
29+
30+
fun show() {
31+
isLoading = true
32+
binding.root.visibility = VISIBLE
33+
}
34+
35+
fun hide() {
36+
isLoading = false
37+
binding.root.visibility = GONE
38+
}
39+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:layout_width="match_parent"
4+
android:layout_height="match_parent"
5+
xmlns:app="http://schemas.android.com/apk/res-auto"
6+
android:id="@+id/loading_container">
7+
8+
9+
<com.airbnb.lottie.LottieAnimationView
10+
android:id="@+id/animationView"
11+
android:layout_width="70dp"
12+
android:layout_height="70dp"
13+
android:layout_centerInParent="true"
14+
app:lottie_rawRes="@raw/loading_animation"
15+
app:lottie_autoPlay="true"
16+
app:lottie_loop="true"/>
17+
18+
19+
</RelativeLayout>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<!-- res/layout/custom_date_range_view.xml -->
2+
<merge xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
<LinearLayout
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
android:gravity="center">
8+
9+
<com.airbnb.lottie.LottieAnimationView
10+
android:id="@+id/animationView"
11+
android:layout_width="70dp"
12+
android:layout_height="70dp"
13+
app:lottie_rawRes="@raw/loading_animation"
14+
app:lottie_autoPlay="true"
15+
app:lottie_loop="true"/>
16+
17+
</LinearLayout>
18+
</merge>

0 commit comments

Comments
 (0)