JessYanCoding / JessYanCoding/AndroidAutoSize

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

Đang mở
#443 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
13.7k
Fork
2k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

### 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还原。

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.