Positional and velocity thresholds in Swipeable V2.

Positional thresholds allow defining a point from the origin of an interaction (swipes or animations) that needs to be crossed in order for the next closest state in the interaction direction to be considered the target state.
In Material 2, the default value is 56 dp. A positional threshold can be either a fixed (absolute value) or a fractional value. A fixed threshold can be defined using `fixedPositionalThreshold(x.dp)`, a fractional threshold using `fractionalPositionalThreshold(0.3f)`.
Positional thresholds should not be different between different states, but can be calculated from the distance, i.e. when expressing a fractional threshold.

Velocity thresholds help interpret user intent. Velocity thresholds take precedence over positional thresholds when calculating the target. If the velocity is higher than the velocity threshold but the positional threshold has not yet been reached, the next closest state in the interaction direction will still be the target state.
Velocity thresholds are always constant per Swipeable instance and should not change between different states to create consistent UX.
In Material 2, the default value is 125 dp/ms.

Compared to Swipeable V1, thresholds are more consistent and have simpler layering, removing the `ThresholdConfig` API.

Test: SwipeableV2GestureTest
Relnote: N/A
Bug: 247983516

Change-Id: I61679a2e310d710f82ec4adce538a9c156a69939
4 files changed
tree: 7b36b9b4ab316c773cd34ab7a3a936615bc61952
  1. .github/
  2. .idea/
  3. activity/
  4. ads/
  5. annotation/
  6. appcompat/
  7. appsearch/
  8. arch/
  9. asynclayoutinflater/
  10. autofill/
  11. benchmark/
  12. biometric/
  13. bluetooth/
  14. browser/
  15. buildSrc/
  16. buildSrc-tests/
  17. busytown/
  18. camera/
  19. car/
  20. cardview/
  21. collection/
  22. compose/
  23. concurrent/
  24. constraintlayout/
  25. contentpager/
  26. coordinatorlayout/
  27. core/
  28. credentials/
  29. cursoradapter/
  30. customview/
  31. datastore/
  32. development/
  33. docs/
  34. docs-kmp/
  35. docs-public/
  36. docs-tip-of-tree/
  37. documentfile/
  38. draganddrop/
  39. drawerlayout/
  40. dynamicanimation/
  41. emoji/
  42. emoji2/
  43. enterprise/
  44. exifinterface/
  45. external/
  46. fragment/
  47. frameworks/
  48. glance/
  49. gradle/
  50. graphics/
  51. gridlayout/
  52. health/
  53. heifwriter/
  54. hilt/
  55. input/
  56. inspection/
  57. interpolator/
  58. javascriptengine/
  59. leanback/
  60. lifecycle/
  61. lint-checks/
  62. loader/
  63. media/
  64. media2/
  65. mediarouter/
  66. metrics/
  67. navigation/
  68. paging/
  69. palette/
  70. percentlayout/
  71. placeholder/
  72. placeholder-tests/
  73. playground-common/
  74. preference/
  75. print/
  76. privacysandbox/
  77. profileinstaller/
  78. recommendation/
  79. recyclerview/
  80. remotecallback/
  81. resourceinspection/
  82. room/
  83. samples/
  84. savedstate/
  85. security/
  86. sharetarget/
  87. slice/
  88. slidingpanelayout/
  89. sqlite/
  90. startup/
  91. swiperefreshlayout/
  92. test/
  93. testutils/
  94. text/
  95. tracing/
  96. transition/
  97. tv/
  98. tvprovider/
  99. vectordrawable/
  100. versionedparcelable/
  101. viewpager/
  102. viewpager2/
  103. wear/
  104. webkit/
  105. window/
  106. work/
  107. .gitignore
  108. .mailmap
  109. build.gradle
  110. cleanBuild.sh
  111. code-review.md
  112. CONTRIBUTING.md
  113. gradle.properties
  114. gradlew
  115. libraryversions.toml
  116. LICENSE.txt
  117. OWNERS
  118. PREUPLOAD.cfg
  119. README.md
  120. settings.gradle
  121. studiow
  122. TEXT_OWNERS
README.md

Android Jetpack

Revved up by Gradle Enterprise

Jetpack is a suite of libraries, tools, and guidance to help developers write high-quality apps easier. These components help you follow best practices, free you from writing boilerplate code, and simplify complex tasks, so you can focus on the code you care about.

Jetpack comprises the androidx.* package libraries, unbundled from the platform APIs. This means that it offers backward compatibility and is updated more frequently than the Android platform, making sure you always have access to the latest and greatest versions of the Jetpack components.

Our official AARs and JARs binaries are distributed through Google Maven.

You can learn more about using it from Android Jetpack landing page.

Contribution Guide

For contributions via GitHub, see the GitHub Contribution Guide.

Note: The contributions workflow via GitHub is currently experimental - only contributions to the following projects are being accepted at this time:

Code Review Etiquette

When contributing to Jetpack, follow the code review etiquette.

Accepted Types of Contributions

  • Bug fixes - needs a corresponding bug report in the Android Issue Tracker
  • Each bug fix is expected to come with tests
  • Fixing spelling errors
  • Updating documentation
  • Adding new tests to the area that is not currently covered by tests
  • New features to existing libraries if the feature request bug has been approved by an AndroidX team member.

We are not currently accepting new modules.

Checking Out the Code

Head over to the onboarding docs to learn more about getting set up and the development workflow!

Continuous integration

Our continuous integration system builds all in progress (and potentially unstable) libraries as new changes are merged. You can manually download these AARs and JARs for your experimentation.

Password and Contributor Agreement before making a change

Before uploading your first contribution, you will need setup a password and agree to the contribution agreement:

Generate a HTTPS password: https://android-review.googlesource.com/new-password

Agree to the Google Contributor Licenses Agreement: https://android-review.googlesource.com/settings/new-agreement

Getting reviewed

  • After you run repo upload, open r.android.com
  • Sign in into your account (or create one if you do not have one yet)
  • Add an appropriate reviewer (use git log to find who did most modifications on the file you are fixing or check the OWNERS file in the project's directory)

Handling binary dependencies

AndroidX uses git to store all the binary Gradle dependencies. They are stored in prebuilts/androidx/internal and prebuilts/androidx/external directories in your checkout. All the dependencies in these directories are also available from google(), jcenter(), or mavenCentral(). We store copies of these dependencies to have hermetic builds. You can pull in a new dependency using our importMaven tool.