Browse Source

Onboarding: improve accessibility

merge-requests/1454/head
Nicolas Pomepuy 4 years ago
committed by Duncan McNamara
parent
commit
e5c89535c4
  1. 6
      application/vlc-android/res/layout-land/onboarding_no_permission.xml
  2. 6
      application/vlc-android/res/layout-land/onboarding_scanning.xml
  3. 10
      application/vlc-android/res/layout-land/onboarding_theme.xml
  4. 6
      application/vlc-android/res/layout-land/onboarding_welcome.xml
  5. 6
      application/vlc-android/res/layout/onboarding_no_permission.xml
  6. 6
      application/vlc-android/res/layout/onboarding_permission.xml
  7. 6
      application/vlc-android/res/layout/onboarding_scanning.xml
  8. 6
      application/vlc-android/res/layout/onboarding_theme.xml
  9. 4
      application/vlc-android/res/layout/onboarding_welcome.xml
  10. 13
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingFragment.kt
  11. 4
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingNoPermissionFragment.kt
  12. 3
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingPermissionFragment.kt
  13. 4
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingScanningFragment.kt
  14. 3
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingThemeFragment.kt
  15. 9
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingWelcomeFragment.kt

6
application/vlc-android/res/layout-land/onboarding_no_permission.xml

@ -36,7 +36,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
app:layout_constraintBottom_toTopOf="@+id/textView7"
app:layout_constraintBottom_toTopOf="@+id/no_permission_title"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
@ -45,7 +45,7 @@
app:srcCompat="@drawable/ic_onboarding_no_permission" />
<TextView
android:id="@+id/textView7"
android:id="@+id/no_permission_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
@ -74,7 +74,7 @@
app:layout_constraintEnd_toEndOf="@+id/guideline"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView7" />
app:layout_constraintTop_toBottomOf="@+id/no_permission_title" />
<TextView
android:id="@+id/permission_explanation_allow"

6
application/vlc-android/res/layout-land/onboarding_scanning.xml

@ -37,7 +37,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@+id/textView2"
app:layout_constraintBottom_toTopOf="@+id/scanning_title"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
@ -46,7 +46,7 @@
app:srcCompat="@drawable/ic_onboarding_scan" />
<TextView
android:id="@+id/textView2"
android:id="@+id/scanning_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
@ -75,7 +75,7 @@
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
app:layout_constraintTop_toBottomOf="@+id/scanning_title" />
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/scanningEnableSwitch"

10
application/vlc-android/res/layout-land/onboarding_theme.xml

@ -39,7 +39,7 @@
android:layout_marginBottom="24dp"
android:background="@drawable/theme_selection_rounded"
android:padding="16dp"
app:layout_constraintBottom_toTopOf="@+id/textView5"
app:layout_constraintBottom_toTopOf="@+id/theme_title"
app:layout_constraintEnd_toStartOf="@+id/lightTheme"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="packed"
@ -60,7 +60,7 @@
android:padding="16dp"
android:scaleX="0.8"
android:scaleY="0.8"
app:layout_constraintBottom_toTopOf="@+id/textView5"
app:layout_constraintBottom_toTopOf="@+id/theme_title"
app:layout_constraintEnd_toStartOf="@+id/darkTheme"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/dayNightTheme"
@ -81,7 +81,7 @@
android:padding="16dp"
android:scaleX="0.8"
android:scaleY="0.8"
app:layout_constraintBottom_toTopOf="@+id/textView5"
app:layout_constraintBottom_toTopOf="@+id/theme_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/lightTheme">
@ -92,7 +92,7 @@
</FrameLayout>
<TextView
android:id="@+id/textView5"
android:id="@+id/theme_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
@ -115,6 +115,6 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5" />
app:layout_constraintTop_toBottomOf="@+id/theme_title" />
</androidx.constraintlayout.widget.ConstraintLayout>

6
application/vlc-android/res/layout-land/onboarding_welcome.xml

@ -36,7 +36,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
app:layout_constraintBottom_toTopOf="@+id/textView7"
app:layout_constraintBottom_toTopOf="@+id/welcome_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
@ -44,7 +44,7 @@
app:srcCompat="@drawable/ic_icon" />
<TextView
android:id="@+id/textView7"
android:id="@+id/welcome_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
@ -66,6 +66,6 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView7" />
app:layout_constraintTop_toBottomOf="@+id/welcome_title" />
</androidx.constraintlayout.widget.ConstraintLayout>

6
application/vlc-android/res/layout/onboarding_no_permission.xml

@ -19,7 +19,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
app:layout_constraintBottom_toTopOf="@+id/textView7"
app:layout_constraintBottom_toTopOf="@+id/no_permission_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
@ -28,7 +28,7 @@
app:srcCompat="@drawable/ic_onboarding_no_permission" />
<TextView
android:id="@+id/textView7"
android:id="@+id/no_permission_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
@ -57,7 +57,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView7" />
app:layout_constraintTop_toBottomOf="@+id/no_permission_title" />
<TextView
android:id="@+id/permission_explanation_allow"

6
application/vlc-android/res/layout/onboarding_permission.xml

@ -56,6 +56,7 @@
android:id="@+id/permNoneImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/permission_onboarding_no_perm"
app:srcCompat="@drawable/ic_perm_none" />
</FrameLayout>
@ -78,6 +79,7 @@
android:id="@+id/permMediaImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/permission_onboarding_perm_media"
app:srcCompat="@drawable/ic_perm_media" />
</FrameLayout>
@ -98,12 +100,13 @@
android:id="@+id/permAllImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/permission_onboarding_perm_all"
app:srcCompat="@drawable/ic_perm_all" />
</FrameLayout>
<TextView
android:id="@+id/textView7"
android:id="@+id/permission_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
@ -139,6 +142,7 @@
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:importantForAccessibility="no"
android:padding="8dp"
android:text="@string/permission_onboarding_perm_all"
android:textAlignment="center"

6
application/vlc-android/res/layout/onboarding_scanning.xml

@ -20,7 +20,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@+id/textView2"
app:layout_constraintBottom_toTopOf="@+id/scanning_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
@ -29,7 +29,7 @@
app:srcCompat="@drawable/ic_onboarding_scan" />
<TextView
android:id="@+id/textView2"
android:id="@+id/scanning_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
@ -57,7 +57,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
app:layout_constraintTop_toBottomOf="@+id/scanning_title" />
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/scanningEnableSwitch"

6
application/vlc-android/res/layout/onboarding_theme.xml

@ -38,7 +38,7 @@
android:scaleX="0.8"
android:scaleY="0.8"
android:contentDescription="@string/light_theme"
app:layout_constraintBottom_toTopOf="@+id/textView5"
app:layout_constraintBottom_toTopOf="@+id/theme_title"
app:layout_constraintEnd_toStartOf="@+id/darkTheme"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/dayNightTheme"
@ -72,7 +72,7 @@
</FrameLayout>
<TextView
android:id="@+id/textView5"
android:id="@+id/theme_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
@ -96,7 +96,7 @@
android:textAppearance="@style/VLC.Onboarding.Text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5" />
app:layout_constraintTop_toBottomOf="@+id/theme_title" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline2"

4
application/vlc-android/res/layout/onboarding_welcome.xml

@ -19,7 +19,7 @@
app:srcCompat="@drawable/ic_icon" />
<TextView
android:id="@+id/textView7"
android:id="@+id/welcome_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
@ -45,7 +45,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView7" />
app:layout_constraintTop_toBottomOf="@+id/welcome_title" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"

13
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingFragment.kt

@ -24,10 +24,19 @@
package org.videolan.vlc.gui.onboarding
import android.view.View
import android.view.accessibility.AccessibilityEvent
import androidx.fragment.app.Fragment
import org.videolan.vlc.util.isTalkbackIsEnabled
open class OnboardingFragment: Fragment() {
lateinit var onboardingFragmentListener:OnboardingFragmentListener
abstract class OnboardingFragment: Fragment() {
lateinit var onboardingFragmentListener: OnboardingFragmentListener
abstract fun getDefaultViewForTalkback(): View
override fun onResume() {
super.onResume()
if (requireActivity().isTalkbackIsEnabled()) getDefaultViewForTalkback().sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
}
}
interface OnboardingFragmentListener {

4
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingNoPermissionFragment.kt

@ -6,11 +6,14 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import androidx.fragment.app.activityViewModels
import org.videolan.vlc.R
class OnboardingNoPermissionFragment : OnboardingFragment() {
private lateinit var titleView: TextView
private val viewModel: OnboardingViewModel by activityViewModels()
override fun getDefaultViewForTalkback() = titleView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.onboarding_no_permission, container, false)
@ -20,6 +23,7 @@ class OnboardingNoPermissionFragment : OnboardingFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
titleView = view.findViewById(R.id.no_permission_title)
view.findViewById<Button>(R.id.grant_permission_button).setOnClickListener {
viewModel.permissionAlreadyAsked = false
(requireActivity() as OnboardingActivity).showFragment(FragmentName.ASK_PERMISSION, true)

3
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingPermissionFragment.kt

@ -41,6 +41,7 @@ import org.videolan.vlc.R
class OnboardingPermissionFragment : OnboardingFragment(), View.OnClickListener {
private val viewModel: OnboardingViewModel by activityViewModels()
private lateinit var permissionTitle: TextView
private lateinit var permDescription: TextView
private lateinit var permNone: FrameLayout
private lateinit var permMedia: FrameLayout
@ -51,6 +52,7 @@ class OnboardingPermissionFragment : OnboardingFragment(), View.OnClickListener
private lateinit var oldSelected: ImageView
private lateinit var currentlySelected: ImageView
override fun getDefaultViewForTalkback() = permissionTitle
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.onboarding_permission, container, false)
@ -59,6 +61,7 @@ class OnboardingPermissionFragment : OnboardingFragment(), View.OnClickListener
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
permissionTitle = view.findViewById(R.id.permission_title)
permNone = view.findViewById(R.id.permNone)
permMedia = view.findViewById(R.id.permMedia)
permAll = view.findViewById(R.id.permAll)

4
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingScanningFragment.kt

@ -6,6 +6,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import androidx.fragment.app.activityViewModels
import com.google.android.material.switchmaterial.SwitchMaterial
import org.videolan.resources.KEY_ANIMATED
@ -15,7 +16,9 @@ import org.videolan.vlc.gui.SecondaryActivity
class OnboardingScanningFragment : OnboardingFragment() {
private val viewModel: OnboardingViewModel by activityViewModels()
private lateinit var titleView: TextView
private val preferences by lazy(LazyThreadSafetyMode.NONE) { Settings.getInstance(requireActivity()) }
override fun getDefaultViewForTalkback() = titleView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.onboarding_scanning, container, false)
@ -24,6 +27,7 @@ class OnboardingScanningFragment : OnboardingFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val customizeButton = view.findViewById<Button>(R.id.customizeButton)
titleView = view.findViewById(R.id.scanning_title)
view.findViewById<SwitchMaterial>(R.id.scanningEnableSwitch).setOnCheckedChangeListener { _, isChecked ->
preferences.putSingle(KEY_MEDIALIBRARY_SCAN, if (isChecked) ML_SCAN_ON else ML_SCAN_OFF)
viewModel.scanStorages = isChecked

3
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingThemeFragment.kt

@ -14,10 +14,12 @@ import org.videolan.vlc.R
class OnboardingThemeFragment : OnboardingFragment(), View.OnClickListener {
private val viewModel: OnboardingViewModel by activityViewModels()
private lateinit var titleView: TextView
private lateinit var themeDescription: TextView
private lateinit var lightTheme: View
private lateinit var darkTheme: View
private lateinit var dayNightTheme: View
override fun getDefaultViewForTalkback() = titleView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.onboarding_theme, container, false)
@ -25,6 +27,7 @@ class OnboardingThemeFragment : OnboardingFragment(), View.OnClickListener {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
titleView = view.findViewById(R.id.theme_title)
themeDescription = view.findViewById(R.id.themeDescription)
lightTheme = view.findViewById<TextView>(R.id.lightTheme)
darkTheme = view.findViewById<TextView>(R.id.darkTheme)

9
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingWelcomeFragment.kt

@ -4,14 +4,23 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import org.videolan.vlc.R
class OnboardingWelcomeFragment : OnboardingFragment() {
private lateinit var titleView: TextView
override fun getDefaultViewForTalkback() = titleView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.onboarding_welcome, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
titleView = view.findViewById(R.id.welcome_title)
}
companion object {
fun newInstance(): OnboardingWelcomeFragment {
return OnboardingWelcomeFragment()

Loading…
Cancel
Save