Add loader fragment

feature/top10
Aurelien Hubert 7 years ago
parent f91710f9f9
commit d8b59f6d39
  1. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  2. 27
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/LoaderDialogFragment.kt
  3. 19
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/PokerAnalyticsFragment.kt
  4. 16
      app/src/main/res/drawable/rectangle_rounded_dark.xml
  5. 21
      app/src/main/res/layout/fragment_loader.xml

@ -105,8 +105,7 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour
*/ */
private fun launchComputation(comparators: List<Comparator>, reportName: String) { private fun launchComputation(comparators: List<Comparator>, reportName: String) {
//val loader = LoaderDialogFragment.newInstance() showLoader()
//loader.show(activity?.supportFragmentManager, "loader")
GlobalScope.launch { GlobalScope.launch {
@ -121,6 +120,7 @@ class ReportsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSour
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
if (!isDetached) { if (!isDetached) {
hideLoader()
ReportDetailsActivity.newInstance(requireContext(), report, reportName) ReportDetailsActivity.newInstance(requireContext(), report, reportName)
} }
} }

@ -5,24 +5,49 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import kotlinx.android.synthetic.main.fragment_loader.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
class LoaderDialogFragment: DialogFragment() { class LoaderDialogFragment: DialogFragment() {
companion object { companion object {
const val ARGUMENT_MESSAGE_RES_ID = "ARGUMENT_MESSAGE_RES_ID"
/** /**
* Create new instance * Create new instance
*/ */
fun newInstance(): LoaderDialogFragment { fun newInstance(resId: Int? = null, isCancelable: Boolean = false): LoaderDialogFragment {
val fragment = LoaderDialogFragment() val fragment = LoaderDialogFragment()
fragment.isCancelable = isCancelable
val bundle = Bundle() val bundle = Bundle()
resId?.let {
bundle.putInt(ARGUMENT_MESSAGE_RES_ID, resId)
}
fragment.arguments = bundle fragment.arguments = bundle
return fragment return fragment
} }
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_loader, container, false) return inflater.inflate(R.layout.fragment_loader, container, false)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
arguments?.let {bundle ->
if (bundle.containsKey(ARGUMENT_MESSAGE_RES_ID)) {
loadingMessage.text = getString(bundle.getInt(ARGUMENT_MESSAGE_RES_ID))
}
}
}
override fun onStart() {
super.onStart()
val window = dialog.window
window?.setBackgroundDrawableResource(android.R.color.transparent)
}
} }

@ -7,6 +7,7 @@ import io.realm.Realm
open class PokerAnalyticsFragment: Fragment() { open class PokerAnalyticsFragment: Fragment() {
private var realm: Realm? = null private var realm: Realm? = null
private var loaderDialogFragment: LoaderDialogFragment? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -36,4 +37,22 @@ open class PokerAnalyticsFragment: Fragment() {
*/ */
open fun onBackPressed(){} open fun onBackPressed(){}
/**
* Show the loader
*/
fun showLoader(resId: Int? = null, cancelable: Boolean? = false) {
loaderDialogFragment = LoaderDialogFragment.newInstance(resId, false)
activity?.let {
loaderDialogFragment?.show(it.supportFragmentManager, "loader")
}
}
/**
* Hide the loader
*/
fun hideLoader() {
loaderDialogFragment?.dismiss()
loaderDialogFragment = null
}
} }

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="@color/colorPrimary"/>
<corners
android:radius="2dp" />
<size
android:width="32dp"
android:height="32dp"/>
</shape>

@ -2,10 +2,20 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="256dp" android:layout_width="wrap_content"
android:layout_height="128dp" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:background="@color/colorPrimary"> android:background="@android:color/transparent"
android:elevation="4dp">
<View
android:layout_width="256dp"
android:layout_height="120dp"
android:background="@drawable/rectangle_rounded_dark"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.core.widget.ContentLoadingProgressBar <androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progressBar" android:id="@+id/progressBar"
@ -26,15 +36,14 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="16dp" android:layout_marginTop="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:fontFamily="@font/roboto" android:fontFamily="@font/roboto"
android:textSize="16sp"
android:text="@string/calculating_please_wait_" android:text="@string/calculating_please_wait_"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/progressBar" app:layout_constraintTop_toBottomOf="@+id/progressBar"
app:layout_constraintVertical_chainStyle="packed" /> app:layout_constraintVertical_chainStyle="packed" />

Loading…
Cancel
Save