Android 缩放、移动、旋转View相关方法

android:rotation 关联方法: setRotation(float) 属性说明: 旋转度数

android:rotationX 关联方法: setRotationX(float) 属性说明: 水平旋转度数

android:rotationY 关联方法: setRotationY(float) 属性说明: 竖直旋转度数

 

android:scaleX 关联方法: setScaleX(float) 属性说明: 水平方向缩放比例

android:scaleY 关联方法: setScaleY(float) 属性说明: 竖直方向缩放比例

 

android:transformPivotX 关联方法: setPivotX(float) 属性说明: 水平方向偏转量

android:transformPivotY 关联方法: setPivotY(float) 属性说明: 竖直方向偏转量

 

android:translationX 关联方法: setTranslationX(float) 属性说明: 水平方向的移动距离

android:translationY 关联方法: setTranslationY(float) 属性说明: 竖直方向的移动距离

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中可以使用ImageView控件来显示图片,并且可以通过一些手势识别库,如GestureDetector来实现图片的移动旋转等操作。以下是一个简单的实现示例: 1. 首先在xml布局文件中添加一个ImageView控件,并设置其src属性为需要显示的图片资源文件: ```xml <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/my_image" /> ``` 2. 在Java代码中,获取ImageView控件的引用,并设置其可、可移动和可旋转: ```java ImageView imageView = findViewById(R.id.imageView); imageView.setScaleType(ImageView.ScaleType.MATRIX); imageView.setOnTouchListener(new TouchListener()); ``` 其中,设置ImageView的ScaleType为MATRIX可以使其支持矩阵变换,从而实现图片的移动旋转等操作。设置一个TouchListener来监听手势操作。 3. 实现TouchListener中的事件处理方法,用来识别手势操作并执行相应的变换操作: ```java private class TouchListener implements View.OnTouchListener { private Matrix matrix = new Matrix(); private Matrix savedMatrix = new Matrix(); private PointF start = new PointF(); private PointF mid = new PointF(); private float oldDistance; private float oldRotation; @Override public boolean onTouch(View v, MotionEvent event) { ImageView imageView = (ImageView) v; switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: savedMatrix.set(matrix); start.set(event.getX(), event.getY()); break; case MotionEvent.ACTION_POINTER_DOWN: oldDistance = getDistance(event); oldRotation = getRotation(event); savedMatrix.set(matrix); getMidPoint(mid, event); break; case MotionEvent.ACTION_MOVE: if (event.getPointerCount() == 1) { matrix.set(savedMatrix); matrix.postTranslate(event.getX() - start.x, event.getY() - start.y); } else if (event.getPointerCount() >= 2) { float newDistance = getDistance(event); float newRotation = getRotation(event); matrix.set(savedMatrix); matrix.postScale(newDistance / oldDistance, newDistance / oldDistance, mid.x, mid.y); matrix.postRotate(newRotation - oldRotation, mid.x, mid.y); } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: break; } imageView.setImageMatrix(matrix); return true; } private float getDistance(MotionEvent event) { float x = event.getX(0) - event.getX(1); float y = event.getY(0) - event.getY(1); return (float) Math.sqrt(x * x + y * y); } private float getRotation(MotionEvent event) { float x = event.getX(0) - event.getX(1); float y = event.getY(0) - event.getY(1); return (float) Math.toDegrees(Math.atan2(y, x)); } private void getMidPoint(PointF point, MotionEvent event) { float x = event.getX(0) + event.getX(1); float y = event.getY(0) + event.getY(1); point.set(x / 2, y / 2); } } ``` 其中,onTouch方法中根据不同的手势操作执行相应的矩阵变换操作。用savedMatrix保存当前的矩阵,用matrix进行变换,并将变换后的矩阵设置回ImageView控件中。 这样就可以实现图片的移动旋转等操作了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值