diff --git a/app/build.gradle b/app/build.gradle index 55882e68..14743ed3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,6 +53,7 @@ android { buildFeatures { dataBinding true + viewBinding true } // To inline the bytecode built with JVM target 1.8 into diff --git a/app/src/main/java/com/vanced/manager/ui/core/BindingFragment.kt b/app/src/main/java/com/vanced/manager/ui/core/BindingFragment.kt new file mode 100644 index 00000000..73318bc9 --- /dev/null +++ b/app/src/main/java/com/vanced/manager/ui/core/BindingFragment.kt @@ -0,0 +1,37 @@ +package com.vanced.manager.ui.core + +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 + +abstract class BindingFragment : Fragment() { + + private var _binding: VB? = null + protected val binding: VB get() = requireNotNull(_binding) + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + _binding = binding(inflater, container, savedInstanceState) + otherSetups() + return binding.root + } + + protected abstract fun binding( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): VB + + protected open fun otherSetups() = Unit + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt index bbdfcca3..370d4fb9 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/AboutFragment.kt @@ -9,37 +9,33 @@ import android.view.ViewGroup import android.widget.Toast import androidx.core.content.edit import androidx.databinding.DataBindingUtil -import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.preference.PreferenceManager import com.vanced.manager.R import com.vanced.manager.databinding.FragmentAboutBinding +import com.vanced.manager.ui.core.BindingFragment import com.vanced.manager.ui.viewmodels.AboutViewModel -class AboutFragment : Fragment() { +class AboutFragment : BindingFragment() { - private lateinit var binding: FragmentAboutBinding private val viewModel: AboutViewModel by viewModels() private var count = 0 private var startMillSec: Long = 0 - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + override fun binding( + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - requireActivity().title = getString(R.string.title_about) - binding = DataBindingUtil.inflate(inflater, R.layout.fragment_about, container, false) - binding.viewModel = viewModel - return binding.root + ) = FragmentAboutBinding.inflate(inflater, container, false) + + override fun otherSetups() { + dataBind() } - @SuppressLint("ClickableViewAccessibility") - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - view.setOnTouchListener { _, event: MotionEvent -> - + private fun dataBind() { + requireActivity().title = getString(R.string.title_about) + binding.root.setOnTouchListener { _, event: MotionEvent -> val eventAction = event.action if (eventAction == MotionEvent.ACTION_UP) { val time = System.currentTimeMillis() @@ -64,5 +60,7 @@ class AboutFragment : Fragment() { } false } + binding.aboutSources.aboutGithubButton.setOnClickListener { viewModel.openUrl("https://github.com/YTVanced/VancedInstaller") } + binding.aboutSources.aboutLicenseButton.setOnClickListener { viewModel.openUrl("https://raw.githubusercontent.com/YTVanced/VancedInstaller/dev/LICENSE") } } } diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index 0722a8ad..b99338a2 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -1,58 +1,42 @@ - + - - - - - - - + android:layout_marginEnd="16dp" + android:layout_marginStart="16dp" + android:layout_marginTop="@dimen/twelvedp" + android:clipToPadding="false" + android:orientation="vertical"> - + android:layout_height="wrap_content"/> - - - - - - - - - - - - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/include_about_sources.xml b/app/src/main/res/layout/include_about_sources.xml index 0c7b013a..d898fe1a 100644 --- a/app/src/main/res/layout/include_about_sources.xml +++ b/app/src/main/res/layout/include_about_sources.xml @@ -1,73 +1,55 @@ - - + - - - - - - - + android:layout_height="match_parent" + android:orientation="vertical"> - + + + android:layout_height="wrap_content" + app:alignItems="center" + app:flexDirection="row" + app:justifyContent="space_evenly"> - - - - - - - - - - - - - - - + + + + \ No newline at end of file