繁体   English   中英

Android应用上Math.min的问题

[英]Issue with Math.min on Android app

我正在跟踪一个问题,该问题导致我的应用在拖动屏幕上的触摸时出现一些闪烁。

该问题似乎与Math.min在某些情况下未返回正确的结果有关。

mPointerPos.mPos.x = Math.min(mPointerPos.mPos.x, 0.9f * mDragStartPos.x);

我通过条件语句更改了函数调用,但问题仍然存在。

float min = 0.9f * mDragStartPos.x;
Log.w("!", "" + mPointerPos.mPos.x + " " + min);
mPointerPos.mPos.x = mPointerPos.mPos.x < min ? mPointerPos.mPos.x : min;
Log.w("!\t->", "" + mPointerPos.mPos.x);

输出为:

01-12 08:36:34.133 26229-26229 W/!: -0.3032546
01-12 08:36:34.134 26229-26229 W/!: -0.3032546 -1.4999999
01-12 08:36:34.134 26229-26229 W/!  ->: -1.4999999
01-12 08:36:34.147 26229-26229 W/!: -0.2417283
01-12 08:36:34.148 26229-26229 W/!: -0.2417283 -1.4999999
01-12 08:36:34.152 26229-26229 W/!  ->: -1.5933207
01-12 08:36:34.158 26229-26229 W/!: -0.19270718
01-12 08:36:34.159 26229-26229 W/!: -0.19270718 -1.4999999
01-12 08:36:34.159 26229-26229 W/!  ->: -1.4999999

在第6行,我期望看到-1.4999999,即-0.2417283和-1.4999999之间的最小值,相反,我得到-1.5933207

有什么我想念的吗? mPointerPos.mPosmDragStartPos的类型为android.graphics.PointF

mPointerPos显然是由其他一些线程在两行之间更新的。 mPointerPos如何更新? 该代码在哪里执行? 回答这些问题可能会为您提供问题的答案(可能只是在两侧添加一个同步块...或重写程序那部分的整个逻辑)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM