我有一个应用程序,我需要实现图像编辑,其中还包括缩放缩放.我完成了捏缩放,但我只能在设备上测试,而不是在模拟器上测试.
有没有办法在Android模拟器,任何快捷键或任何其他方式测试pinch缩放?
我正在尝试使用hammer.js实现捏缩放
这是我的HTML-
<script src="//cdnjs.cloudflare.com/ajax/libs/hammer.js/1.0.5/hammer.min.js"></script>
<div id="pinchzoom">
<div>
<img id="rect" src="http://blog.gettyimages.com/wp-content/uploads/2013/01/Siberian-Tiger-Running-Through-Snow-Tom-Brakefield-Getty-Images-200353826-001.jpg" width="2835" height="4289" ondragstart="return false" alt="" />
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的脚本
var hammertime = Hammer(document.getElementById('pinchzoom'), {
transform_always_block: true,
transform_min_scale: 1,
drag_block_horizontal: false,
drag_block_vertical: false,
drag_min_distance: 0
});
var rect = document.getElementById('rect');
var posX=0, posY=0,
scale=1, last_scale,
rotation= 1, last_rotation;
hammertime.on('touch drag transform', function(ev) {
switch(ev.type) {
case 'touch':
last_scale = scale;
last_rotation = rotation;
break;
case 'drag':
posX = ev.gesture.deltaX;
posY = ev.gesture.deltaY;
break;
case 'transform':
rotation = last_rotation + ev.gesture.rotation;
scale …Run Code Online (Sandbox Code Playgroud) 我将描述我想要实现的效果,然后我将详细介绍我目前是如何实现这一点以及它的行为有什么问题.我还会提到我看过的另一种方法,但根本无法完成工作.
最相关的代码内嵌在问题的底部,以便快速访问.您可以下载源代码的zip或在BitBucket上将项目作为Mercurial Repository获取.该项目现在包含以下答案的修复程序.如果你想要最初提供的破碎版本,它会被标记为"initial-buggy-version"
该项目是概念/尖峰的最小证明,用于评估效果是否可行,因此它非常轻巧简单!
该应用程序将显示大量离散的信息行,形成一个垂直表.该表将由用户垂直滚动.这是a的标准行为UITableView,你也可以使用它UICollectionView.但是,应用程序还必须支持缩放缩放.当你在桌子上捏缩放时,所有的线条应该挤压在一起.当你伸展时,所有的线都应该分开.
在我的概念证明中,单个细胞没有调整大小,它们只是重新定位在一起或更远.这是故意的:我认为验证这个想法的可行性并不重要.
这是屏幕抓取,显示当前应用程序看起来如何缩小和放大:

我正在使用UICollectionView自定义UICollectionViewLayout子类.布局将UICollectionViewCells一个漂亮的摇摆正弦波放在屏幕中间.每个UICollectionViewCell仅仅是一个容器UILabel持有indexPath行.
的UICollectionViewLayout子类具有参数来设置每个单元之间的垂直间距它描述到UICollectionView,调整这允许表被压扁或如所期望垂直拉伸.
我的UICollectionViewController子类有一个UIPinchGestureRecognizer.当识别器检测到比例变化时,相应地UICollectionView改变布局中的垂直单元间距.
在没有进一步考虑的情况下,缩放将从内容的顶部发生,而不是围绕触摸手势的中心发生.该UICollectionView的contentOffset属性捏提供此功能时调整.
手势识别器还需要适应挤压时发生的拖动.这也是通过改变UICollectionView's 来处理的contentOffset.一些附加代码允许触摸手势的中心点随着手指被添加到手势或从手势移除而改变.
请注意UICollectionView,作为UIScrollView子类,它有自己的UIPanGestureRecognizer与UIPinchGestureRecogniser我添加的交互.我不确定这是否会导致问题.
我添加了代码以UICollectionView在我的捏合手势期间禁用内置滚动,但这似乎没有太大区别.我试图gestureRecognizer:shouldRequireFailureOfGestureRecognizer:使我UIPinchGestureRecognizer的内置失败UIPanGestureRecognizer,但这似乎停止我的捏识别器工作.我不知道这是不是我是傻瓜,还是iOS中的错误.
如前所述,当前的UICollectionViewCells未调整大小.他们只是重新定位.这是故意的.我认为验证这个概念并不重要. …
ios pinchzoom uipinchgesturerecognizer uicollectionview uicollectionviewlayout
我有一个EditText我想要缩放它,并用setScaleX/ 滚动setScaleY它工作正常 - 正在编辑正确位置的文本.
但是当我尝试选择文本时 - 它会将选择句柄绘制到位置,例如文本未缩放时.这是众所周知的bug.
这是预期的结果,因为在与视图大小相关的弹出窗口上绘制了句柄.
所有行动android.widget.Editor都针对其领域private TextView mTextView;.如果我们将通过反射设置自己的编辑器,我不知道如何处理私有方法,这是不可覆盖的.
此外,选择手柄是android.widget.Editor.HandleView#HandleView在布局中计算的弹出窗口坐标上绘制的,我只需要DynamicLayout它,但它对我们的目的没有区别.
方法android.text.Layout#getPrimaryHorizontal(int, boolean)是公共的,它的值可以按比例增加,但为此我们需要扩展和覆盖私有方法android.widget.TextView#makeSingleLayout,但这是一个问题.
我们也可以使用所有必需的override方法实现我们自己的Layout,但是我们可以覆盖的所有方法都使用@hide注释标记,并且没有可以使用反射访问的字段.
下一个屏幕截图显示为2x缩放

PS:任务的上下文是具有双指缩放编辑文本的编辑器.通过计算大小来重新布局文本不是解决方案.因为我需要在每个屏幕尺寸上使用Portable Document.
我们可以在Android中使用缩放手势检测器进行缩放缩放吗?
可以在Android模拟器上测试多点触控事件吗?或者有没有办法在没有实际设备的情况下测试它?我正在使用2.0 sdk,并希望用两根手指测试放大/缩小.
我希望能够在 SwiftUI 中调整大小和移动图像(就像它是地图一样),并通过捏来缩放和拖动它。
使用 UIKit 我将图像嵌入到 a 中UIScrollView并处理它,但我不知道如何在 SwiftUI 中执行此操作。我尝试使用,MagnificationGesture但我无法让它顺利工作。
我已经搜索了一段时间了,有没有人知道是否有更简单的方法?
我正在尝试使用Android的手势监听器和缩放监听器来实现缩放和拖动.问题是,当我执行捏拉缩放时,图像(我正在尝试缩放)反弹到特定位置.变焦位置也不居中.以下代码演示了我想要实现的目标.知道为什么图像跳跃(以及如何纠正)?
public class CustomView extends View {
Bitmap image;
int screenHeight;
int screenWidth;
Paint paint;
GestureDetector gestures;
ScaleGestureDetector scaleGesture;
float scale = 1.0f;
float horizontalOffset, verticalOffset;
int NORMAL = 0;
int ZOOM = 1;
int DRAG = 2;
boolean isScaling = false;
float touchX, touchY;
int mode = NORMAL;
public CustomView(Context context) {
super(context);
//initializing variables
image = BitmapFactory.decodeResource(getResources(),
R.drawable.image_name);
//This is a full screen view
screenWidth = getResources().getDisplayMetrics().widthPixels;
screenHeight = getResources().getDisplayMetrics().heightPixels;
paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
paint.setColor(Color.WHITE); …Run Code Online (Sandbox Code Playgroud) android image-processing gesture-recognition android-view pinchzoom
pinchzoom ×10
android ×7
android-view ×1
editor ×1
hammer.js ×1
image ×1
image-zoom ×1
ios ×1
java ×1
javascript ×1
jquery ×1
scrollview ×1
spanned ×1
swift ×1
swiftui ×1