50 lines
No EOL
1.8 KiB
Kotlin
50 lines
No EOL
1.8 KiB
Kotlin
package cn.super12138.todo.views
|
|
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import androidx.fragment.app.Fragment
|
|
import androidx.viewbinding.ViewBinding
|
|
import com.google.android.material.color.MaterialColors
|
|
import com.google.android.material.transition.MaterialSharedAxis
|
|
|
|
abstract class BaseFragment<T : ViewBinding> : Fragment() {
|
|
private var _binding: T? = null
|
|
protected val binding get() = _binding!!
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ true)
|
|
returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ false)
|
|
exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ true)
|
|
reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, /* forward= */ false)
|
|
}
|
|
|
|
override fun onCreateView(
|
|
inflater: LayoutInflater,
|
|
container: ViewGroup?,
|
|
savedInstanceState: Bundle?
|
|
): View? {
|
|
_binding = getViewBinding(inflater, container, false)
|
|
return binding.root
|
|
}
|
|
|
|
// https://github.com/material-components/material-components-android/issues/1984#issuecomment-1089710991
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
super.onViewCreated(view, savedInstanceState)
|
|
// Overlap colors.
|
|
view.setBackgroundColor(MaterialColors.getColor(view, android.R.attr.colorBackground))
|
|
}
|
|
|
|
abstract fun getViewBinding(
|
|
inflater: LayoutInflater,
|
|
container: ViewGroup?,
|
|
attachToRoot: Boolean
|
|
): T
|
|
|
|
override fun onDestroyView() {
|
|
super.onDestroyView()
|
|
_binding = null
|
|
}
|
|
} |