Android 11 拖动媒体音量条会回弹,如何在源码中处理
时间: 2023-12-10 09:42:47 浏览: 134
在Android 11中,当用户拖动媒体音量条时,当音量条达到最大或最小值时会发生回弹效果。实现这个效果的代码在`SeekBar.java`类中的`onTouchEvent`方法中。
要禁用回弹效果,可以在`SeekBar.java`类中的`onTouchEvent`方法中添加以下代码:
```java
// 禁用回弹效果
if (event.getAction() == MotionEvent.ACTION_UP) {
mIsDragging = false;
if (mValue != mMin && mValue != mMax) {
return true;
}
}
```
这将在用户松开音量条时检查当前音量是否为最大或最小值。如果是,则不会执行回弹效果。
如果你想在自己的应用中禁用回弹效果,可以使用自定义的SeekBar类并添加上述代码。如果你想在整个系统中禁用回弹效果,则需要修改AOSP源码并重新构建系统。
相关问题
Android 11 拖动媒体音量条会跳动回弹,如何在代码中处理
这是 Android 11 新增的一个特性,旨在提高用户的体验感。如果在拖动媒体音量条时,音量条会跳动回弹,那么用户就可以更容易地知道当前音量的大小。
如果您想在代码中处理这个问题,您可以通过以下方式来实现:
1. 在您的 Activity 或 Fragment 中重写 `onCreate` 方法,并添加以下代码:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
getWindow().setDecorFitsSystemWindows(false);
}
```
这将禁用 Android 11 新增的特性,使您的媒体音量条不再跳动回弹。
2. 如果您仍然希望使用 Android 11 新增的特性,但希望控制跳动回弹的速度和强度,您可以使用以下代码:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
SeekBar volumeSeekBar = findViewById(R.id.volumeSeekBar);
volumeSeekBar.setSystemGestureExclusionRects(Collections.singletonList(new Rect(0, 0, 0, 0)));
// 这里的 Rect 参数可以根据您的需求进行修改,例如设置为 new Rect(0, 0, 200, 200) 等。
}
```
这将使您的媒体音量条在拖动时仍然会跳动回弹,但是您可以通过修改 `Rect` 参数来控制跳动回弹的速度和强度。
希望能对您有所帮助!
Android 11.0 媒体音量条拖动会回弹,如何在系统源码中修改
在 Android 11.0 中,媒体音量条拖动时会有回弹效果,这是由系统自带的滑动列表控件 `VolumeSeekBarPreference` 实现的。要修改此功能,需要在系统源码中进行以下步骤:
1. 找到 `frameworks/base/packages/SettingsProvider/res/xml/display_settings.xml` 文件中的 `VolumeSeekBarPreference` 控件。
2. 在 `VolumeSeekBarPreference` 控件中添加以下属性:
```
android:overScrollMode="never"
```
这将禁用控件的回弹效果。
3. 编译 Android 系统源码并刷入设备中即可。
注意:修改系统源码需要具备一定的编程能力和相关环境配置,操作时需要谨慎,以免造成不可恢复的损失。
阅读全文