android - ScaleFactor 往往是一个

标签 android gesture-recognition custom-view

我在自定义 View 中有以下代码,它是一个 ScaleGestureDetector,我想用它做的是在屏幕上捏合时更改 View 的宽度和高度,但 ScaleFactor 总是一个,我不知道如何解释它,但有几秒钟,ScaleFactor 低于/高于 1,然后再次变为 1。您可以在 logCat 输出中看到我在说什么。

代码:

public class simpleOnScaleGestureListener extends SimpleOnScaleGestureListener {
    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        float ScaleFactor = 1.0f;
        ScaleFactor *= detector.getScaleFactor();

        // Don't let the object get too small or too large.
          ScaleFactor = Math.max(0.1f, Math.min(ScaleFactor, 5.0f));


        Log.d("ScaleFactor", "The ScaleFactor is "+ScaleFactor);

    return true;
    }
    @Override
    public void onScaleEnd(ScaleGestureDetector detector) {

    }
}

LogCat 输出:

05-29 19:37:48.019: D/ScaleFactor(7279): The ScaleFactor is 1.0247091
05-29 19:37:48.059: D/ScaleFactor(7279): The ScaleFactor is 1.0090069
05-29 19:37:48.069: D/ScaleFactor(7279): The ScaleFactor is 1.0268435
05-29 19:37:48.109: D/ScaleFactor(7279): The ScaleFactor is 1.0389019
05-29 19:37:48.119: D/ScaleFactor(7279): The ScaleFactor is 1.0236202
05-29 19:37:48.159: D/ScaleFactor(7279): The ScaleFactor is 1.0267988
05-29 19:37:48.169: D/ScaleFactor(7279): The ScaleFactor is 1.0133468
05-29 19:37:48.199: D/ScaleFactor(7279): The ScaleFactor is 1.0230283
05-29 19:37:48.219: D/ScaleFactor(7279): The ScaleFactor is 1.003792
05-29 19:37:48.599: D/ScaleFactor(7279): The ScaleFactor is 1.0
05-29 19:37:48.629: D/ScaleFactor(7279): The ScaleFactor is 1.2110677
05-29 19:37:48.639: D/ScaleFactor(7279): The ScaleFactor is 1.2486423
05-29 19:37:48.679: D/ScaleFactor(7279): The ScaleFactor is 1.0709958
05-29 19:37:48.689: D/ScaleFactor(7279): The ScaleFactor is 1.094618
05-29 19:37:49.229: D/ScaleFactor(7279): The ScaleFactor is 1.0
05-29 19:37:49.259: D/ScaleFactor(7279): The ScaleFactor is 1.2032005
05-29 19:37:49.269: D/ScaleFactor(7279): The ScaleFactor is 1.1687788
05-29 19:37:49.309: D/ScaleFactor(7279): The ScaleFactor is 1.0600644
05-29 19:37:49.319: D/ScaleFactor(7279): The ScaleFactor is 1.0608224
05-29 19:37:50.049: D/ScaleFactor(7279): The ScaleFactor is 1.0
05-29 19:37:50.079: D/ScaleFactor(7279): The ScaleFactor is 1.3738323
05-29 19:37:50.089: D/ScaleFactor(7279): The ScaleFactor is 1.1507335
05-29 19:37:50.129: D/ScaleFactor(7279): The ScaleFactor is 1.2026775
05-29 19:37:50.899: D/ScaleFactor(7279): The ScaleFactor is 1.0
05-29 19:37:50.929: D/ScaleFactor(7279): The ScaleFactor is 1.5862415
05-29 19:37:50.939: D/ScaleFactor(7279): The ScaleFactor is 1.1621073
05-29 19:37:52.559: D/ScaleFactor(7279): The ScaleFactor is 1.0
05-29 19:37:52.599: D/ScaleFactor(7279): The ScaleFactor is 1.0097717
05-29 19:37:52.599: D/ScaleFactor(7279): The ScaleFactor is 1.0186267

最佳答案

float ScaleFactor = 1.0f;

您在每次捏合开始时重置秤。 尝试全局变量。

关于android - ScaleFactor 往往是一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16820597/

相关文章:

android - 我如何创建一个类和我需要的方法?

Android 手势不被识别

android - 如何正确组合 ScaleGestureDetector.SimpleOnScaleGestureListener 和 GestureDetector.SimpleOnGestureListener?

java - 如何在Activity中添加 float View

android - Android 父子自定义 View 上的触摸事件处理

android - R.string.value 显示为数字

android - 当有很多 subview 时,如何使相对布局可滚动?

java - 在 ListView 中接收一堆文本

Swift:UIRotationGesture 中手指的中心点在 SKView 中的错误位置?

Android - 是否可以创建一个自定义库以跨多个应用程序使用?