我有几天试图使这项工作,检查出其他答案,似乎没有一个对我有用: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不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)