JessYanCoding / JessYanCoding/AndroidAutoSize

改变density导致滑动手势的判定出现问题,已附上解决方案。

Offen
#443 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
13.7k
Forks
2k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

### Environment
- [x] Autosize Version: V1.2.1
- [x] Target Android Version: 32
- [x] Device Model: xiaomi
- [x] Device Resolution: 2880*1800
- [x] Design Size On AndroidManifest: 2880dp * 1800dp

### Bug Description:
ViewConfiguration类中定义了几个滑动和点击之间的判定参数,如mTouchSlop,默认是8dp,档density=2.0时,mTouchSlop=16px,当滑动距离超过这个值时,会判定为滑动,反之则判定为点击。但是AutoSize改变了density,导致mTouchSlop的值同样发生放大或者缩小,进而导致滑动误触或者很难触发滑动。比如我用GestureDetector去判定长按。原本density=2.0,mTouchSlop=16,用auto size后
mTouchSlop=7,导致长按很难触发,会被判定为滑动。

### Log:
```log
不需要
```

### Related Code:
可以查看GestureDetector里长按手势的判定逻辑
```java
//判定阈值
touchSlop = configuration.getScaledTouchSlop();

public static ViewConfiguration get(@NonNull @UiContext Context context) {
StrictMode.assertConfigurationContext(context, "ViewConfiguration");

final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
final int density = (int) (100.0f * metrics.density);

ViewConfiguration configuration = sConfigurations.get(density);
if (configuration == null) {
configuration = new ViewConfiguration(context);
sConfigurations.put(density, configuration);
}

return configuration;
}

```

### 解决方案:
AutoSize应该只改变ui相关的density,非ui相关的density应该还原。
可以通过反射将ViewConfiguration还原。

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.