- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用了带有 ScaleGestureDector 类的自定义 View 。我的问题是当我以 4.5 倍放大时,我的自定义布局无法缩小。
这是我的代码:
private class ScaleGestureListener
extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
float scaleFactor = mScaleFactor * detector.getScaleFactor();
mScaleFactor = scaleFactor;
setScaleX(getScaleX() * mScaleFactor);
setScaleY(getScaleY() * mScaleFactor);
invalidate();
return true;
}
这个问题有什么解决方案吗?我想将我的布局至少放大 4.5 倍
最佳答案
代替:
float scaleFactor = mScaleFactor * detector.getScaleFactor();
这样做:
float scaleFactor = Math.max(4.5F, mScaleFactor * detector.getScaleFactor());
这确保您的最小缩放比例因子为 4.5
编辑:我误解了你的问题。看起来您不应该跟踪 mScaleFactor。 API 为您完成繁重的工作。根据 API,getScaleFactor()
返回 从上一个缩放事件到当前事件的缩放因子。
因此,当您在字段中跟踪 mScaleFactor 时,会出现以下问题:
// With these two lines, you're multiplying the variable mScaleFactor.
// Suppose that it was 3, and we're zooming out by 0.66666666
// Now, mScaleFactor is 2.
float scaleFactor = mScaleFactor * detector.getScaleFactor();
mScaleFactor = scaleFactor;
// Here, you're multiplying scaleX and scaleY by mScaleFactor (by 2. This effectively zooms in)
// You should only be multiplying them by 0.666666666 (effectively zooming out).
setScaleX(getScaleX() * mScaleFactor);
setScaleY(getScaleY() * mScaleFactor);
invalidate();
return true;
所以你的 body 应该是这样的:
public boolean onScale(ScaleGestureDetector detector) {
float scaleFactor = detector.getScaleFactor();
setScaleX(getScaleX() * scaleFactor);
setScaleY(getScaleY() * scaleFactor);
invalidate();
return true;
}
关于java - 使用 ScaleGestureDetector 时放大太多后无法缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541461/
FullOffer.java package com.synergywebdesigners.veebee; import android.content.Intent; import android
我已按照 Android 文档中的说明将 ScaleGestureDetector 连接到 OnTouchListener。由于某些原因,ScaleGestureDetector 并不总是检测到捏合手
我使用了带有 ScaleGestureDector 类的自定义 View 。我的问题是当我以 4.5 倍放大时,我的自定义布局无法缩小。 这是我的代码: private class ScaleGest
我有一个项目,我需要使用 ScaleGestureDetector 缩放 RecyclerView。它在 RecyclerView 之外进行缩放时有效,但在 RecyclerView 上缩放时不起作用
我是一个完全的初学者,在调整一些教程代码时遇到了问题。此 Activity (gameScreen) 应包含一个名为 MapView 的自定义 View ,它扩展了 ImageView 并应允许缩放。
更新:我知道发生了什么。查看评论。 我正在尝试编写一个 ViewSwitcher,它将所有手势传递给它的第一个 child ,直到它收到一个缩放手势;然后它将它们传递给它的第二个 child ,直到该
我认为“ScaleGestureDetector”实例的“onTouchEvent()”方法应该返回“true”只有当它真正处理触摸事件时,即。 e.如果它检测到多点触控缩放手势(用两根手指)。否则我
我正在尝试在我的应用中实现缩放。但是我遇到了困难。 到目前为止我做了什么: (注意:这个应用程序是一个游戏,所以它不使用invalidate而是一个线程) 渲染和缩放: public void ren
我使用以下代码来检测 View 的 ScaleGesture。 ScaleGestureDetector 工作正常。我在布局中显示了两张图片。在检测 ScaleGesture 时,我缩小和增加了图像的
我有一个自定义的 SwipeRefreshLayout,里面有一个自定义的 GridView。我想根据捏/缩放手势更改该 GridView 的列号。我已经成功地实现了它。问题是,秤太敏感了。 例如,我
在我的 Android 应用程序中,我有一个 ImageView我希望用户能够将其向左/向右/向上/向下滑动以将图像(静态 map )更改为相邻的图像。但此外,我想要捏缩放功能和 map 本身。 我可
我的应用需要检测简单的手势(滚动、点击、长按)和双指缩放。任何一个检测器都可以独立工作 - GestureDetector.SimpleOnGestureListener 用于点击/滚动和 Scale
非常感谢您的阅读。我有一个可以缩放的 textView,当我将 "textview.setMovementMethod(new ScrollingMovementMethod());" 添加到我的代码
我有一个 Canvas ,我正在使用 ScaleGestureDetector 来放大我的 android 应用程序。这是我到目前为止的代码: //SCALING ----------
我的应用程序利用支持包来实现 Fragment s 2.2 向上。 我有一个 View使用 ZoomableView 的子类(我们称之为 ScaleGestureDetector )检测捏缩放事件。这
我正在使用 ScaleGestureDetector 来检测捏合和捏合 Action ,通过获取比例因子,如果它小于 1,则缩小,反之亦然。 但问题在于,在 Android 6.0 上,比例因子始终为
我是一名优秀的程序员,十分优秀!