android-移动,缩放和旋转ImageView OnTouch不起作用

android-移动,缩放和旋转ImageView OnTouch不起作用,第1张

概述我有几天试图使这项工作,检查出其他答案,似乎没有一个对我有用:S我将标签添加到RelativeLayout中,我希望标签一旦被选中就可以使用OnTouch方法移动,缩放旋转(它具有调用setOnTouchListener的OnClickListener)请记住,我可以添加N个贴纸.privatevoidaddSticker(ImageViewstic

我有几天试图使这项工作,检查出其他答案,似乎没有一个对我有用:S

我将标签添加到relativeLayout中,我希望标签一旦被选中就可以使用Ontouch方法移动,缩放和旋转(它具有调用setontouchListener的OnClickListener)
请记住,我可以添加N个贴纸.

private voID addSticker(ImageVIEw sticker){    flMemeFrame.addVIEw(sticker);    sticker.setonClickListener(new VIEw.OnClickListener()    {        @OverrIDe        public voID onClick(VIEw v)        {            {                if (selectedVIEw != null)                {                    CancelSelection(selectedVIEw);                }                selectedVIEw = v;                v.setontouchListener(new VIEw.OntouchListener()                {                    private float mScaleFactor = 0.5f;                    private float mRotationDegree = 0.f;                    private float mFocusX = 0.f;                    private float mFocusY = 0.f;                    private int mScreenHeight;                    private int mScreenWIDth;                    private Matrix matrix = new Matrix();//Các lớp Matrix giữ một ma trận 3x3 để di chuyển tọa độ.                    private int mImageWIDth, mImageHeight;                    private ScaleGestureDetector mScaleDetector;                    private RotateGestureDetector mRotateDetector;                    private MoveGestureDetector mMoveDetector;                    class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {                        @OverrIDe                        public boolean onScale(ScaleGestureDetector detector) {                            mScaleFactor *= detector.getScaleFactor();                            mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 1.0f));                            return true;                        }                    }                    class RotateListener extends RotateGestureDetector.SimpleOnRotateGestureListener {                        @OverrIDe                        public boolean onRotate(RotateGestureDetector detector) {                            mRotationDegree -= detector.getRotationdegreesDelta();                            return true;                        }                    }                    class MoveListener extends MoveGestureDetector.SimpleOnMoveGestureListener {                        @OverrIDe                        public boolean onMove(MoveGestureDetector detector) {                            PointF d = detector.getFocusDelta();                            mFocusX += d.x;                            mFocusY += d.y;                            return true;                        }                    }                    @OverrIDe                    public boolean ontouch(VIEw v, MotionEvent event)                    {                        mImageHeight = v.getHeight();                        mImageWIDth = v.getWIDth();                        mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());                        mRotateDetector = new RotateGestureDetector(context, new RotateListener());                        mMoveDetector = new MoveGestureDetector(context, new MoveListener());                        mScaleDetector.ontouchEvent(event);                        mRotateDetector.ontouchEvent(event);                        mMoveDetector.ontouchEvent(event);                        float scaleImageCenterX = (mImageWIDth * mScaleFactor) / 2;                        float scaleImageCenterY = (mImageHeight * mScaleFactor) / 2;                        matrix.reset();                        matrix.postscale(mScaleFactor, mScaleFactor);                        matrix.postRotate(mRotationDegree, scaleImageCenterX, scaleImageCenterY);                        matrix.postTranslate(mFocusX - scaleImageCenterX, mFocusY - scaleImageCenterY);                        ImageVIEw vIEw = (ImageVIEw) v;                        vIEw.setScaleType(ImageVIEw.ScaleType.MATRIX);                        vIEw.setimageMatrix(matrix);                        return true;                    }                });            }        }    });}

这是我设置图像的地方

ImageVIEw sticker = new ImageVIEw(context);                relativeLayout.LayoutParams rlp = new relativeLayout.LayoutParams(Actionbar.LayoutParams.WRAP_CONTENT, Actionbar.LayoutParams.WRAP_CONTENT);                rlp.addRule(relativeLayout.CENTER_IN_PARENT);                sticker.setLayoutParams(rlp);addSticker(sticker);

该应用程序可以编译且不会崩溃,但是该标签没有显示Ontouch 总结

以上是内存溢出为你收集整理的android-移动,缩放和旋转ImageView OnTouch不起作用全部内容,希望文章能够帮你解决android-移动,缩放和旋转ImageView OnTouch不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存