首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捏缩缩放和2指旋转机器人中的ImageView

捏缩缩放和2指旋转机器人中的ImageView
EN

Stack Overflow用户
提问于 2016-04-22 06:03:31
回答 2查看 8.9K关注 0票数 6

我在过去的两天里遇到了一个问题,因为我是新手,无法解决这个问题。实际上,我正在开发一款安卓应用程序,它需要在安卓ImageView上进行捏-缩放和双指旋转。我得到了多个教程和解决方案,可以很好地为捏,缩放,但不工作的2指旋转。我分享了最简单的教程,这是很容易理解的,我想把它扩展到2指旋转。下面是代码片段:

代码语言:javascript
复制
    public class MainActivity extends Activity {
    private ImageView mImageView;
    private Matrix mMatrix = new Matrix();
    private float mScale = 1f;
    private ScaleGestureDetector mScaleGestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mImageView = (ImageView) findViewById(R.id.imageView);
        mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleListener());
    }

    public boolean onTouchEvent(MotionEvent ev) {
        mScaleGestureDetector.onTouchEvent(ev);
        return true;
    }

    private class ScaleListener extends ScaleGestureDetector.
            SimpleOnScaleGestureListener {
        @Override
        public boolean onScale(ScaleGestureDetector detector) {
            mScale *= detector.getScaleFactor();
            mScale = Math.max(0.1f, Math.min(mScale, 5.0f));
            mMatrix.setScale(mScale, mScale);
            mImageView.setImageMatrix(mMatrix);
            return true;
        }
    }
}

我还想把它们用于GPUImage,我的意思是,尽管有安卓ImageView,但我还是想使用GPUImage。如何将GPUImage转换为ImageView?这是第二件事。首先,我想实现2指旋转(从某种意义上说是MultiTouch )。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-24 18:13:04

这是对我有好处的解决办法。https://stackoverflow.com/a/18276033只需在这里添加一行,这应该是

  1. 在活动中添加imageView.setRotation(imageView.getRotation() + (-angle));OnRotation(RotationGestureDetector rotationDetector)方法中,将新的旋转值设置为ImageView

这是为了基本的帮助。其余的实现都很好。

票数 3
EN

Stack Overflow用户

发布于 2019-12-17 03:15:58

这是我创建的库,它创建了一个可以拖动、旋转和缩放的imageview类。

需求:(添加build.gradle)

代码语言:javascript
复制
allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

添加依赖项

代码语言:javascript
复制
dependencies {
            implementation 'com.github.lau1944:Zoom-Drag-Rotate-ImageView:1.0.0'
    }

首先,在xml上添加图像:

代码语言:javascript
复制
<com.easystudio.rotateimageview.RotateZoomImageView
        android:id="@+id/rotate"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:src="@drawable/money"/>

或以编程方式添加:

代码语言:javascript
复制
       RotateZoomImageView iv;
       RelativeLayout playground = findViewById(R.id.playground);
       iv = new RotateZoomImageView(getApplicationContext());
       iv.setImageDrawable(getDrawable(R.drawable.money));
       RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(250, 250);
       lp.addRule(RelativeLayout.BELOW);
       iv.setLayoutParams(lp);
       playground.addView(iv);

步骤2:设置ontouchmethod方法

代码语言:javascript
复制
iv.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return iv.onTouch(v,event);
            }
        });

仅此而已。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36786060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档