图片翻转代码linux,Android实现图片顺时逆时旋转及拖拽显示效果
1、首先说一下两个类:
Matrix
Class Overview
The Matrix class holds a 3x3 matrix for transforming coordinates. Matrix does not have a constructor, so it must be explicitly initialized using either reset() - to construct an identity matrix, or one of the set..() functions (e.g. setTranslate, setRotate, etc.).矩阵类拥有3 x3的坐标变换矩阵。没有一个构造函数矩阵,所以它必须显式初始化的使用或重置()-如何构建一个矩阵,或者一个场景……()的功能(例如,setRotate setTranslate等。)
Matrix的操作,总共分为translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)四种,每一种变换在Android的API里都提供了set,post和pre三种操作方式,除了translate,其他三种操作都可以指定中心点。set是直接设置Matrix的值,每次set一次,整个Matrix的数组都会变掉。post是后乘,当前的矩阵乘以参数给出的矩阵。可以连续多次使用post,来完成所需的整个变换。
接下来我们用到了两个方法:
平移方法:两个参数分别是要移到的x、y坐标
boolean
postTranslate(float dx, float dy)
Postconcats the matrix with the specified translation.和旋转方法:第一个参数是旋转多少度,正数是顺时针,负数是逆时针;第二三参数是按某个点旋转的x、y坐标;
boolean
postRotate(float degrees, float px, float py)
Postconcats the matrix with the specified rotation.
PointF
Class Overview
PointF holds two float coordinatesPointF有两个浮点坐标
我们要用到该类的一个方法:设置点的x和y坐标
final void
set(float x, float y)
Set the point's x and y coordinates2、接下来是案例:
首先看一下效果图:
旋转拖拽后
布局很简单在此不再给出!直接看java代码:
[java]
publicclassMovePictureActivityextendsActivityimplementsOnClickListener {
privateButton button1, button2;
privateImageView image;
PointF startPoint =newPointF();// 有两PointF浮坐标
Matrix matrix =newMatrix();
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
privatevoidinit() {
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
image = (ImageView) findViewById(R.id.image);
image.setOnTouchListener(newImageViewOnTouchListener());// 为image绑上触摸事件监听
}
@Override
publicvoidonClick(View v) {
switch(v.getId()) {
caseR.id.button1:
matrix.postRotate(90, image.getWidth() /2, image.getHeight() /2);// 顺时针旋转90度,并且以image.getWidth()/2、image.getHeight()/2为中心旋转;
break;
caseR.id.button2:
matrix.postRotate(-90, image.getWidth() /2, image.getHeight() /2);// 逆时针旋转90度
break;
}
image.setImageMatrix(matrix);
}
privateclassImageViewOnTouchListenerimplementsOnTouchListener {
@Override
publicbooleanonTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {// 这里取出来的是event.getAction()返回的值的低八位,MotionEvent.ACTION_MASK是255,
caseMotionEvent.ACTION_DOWN:
startPoint.set(event.getX(), event.getY());
break;
caseMotionEvent.ACTION_MOVE:// 移动过程,该事件会不断被触发
floatdx = event.getX() - startPoint.x;
floatdy = event.getY() - startPoint.y;
matrix.postTranslate(dx, dy);
startPoint.set(event.getX(), event.getY());
break;
}
image.setImageMatrix(matrix);
returntrue;
}
}
}为image绑定监听事件,
[java]
image.setOnTouchListener(newImageViewOnTouchListener());// 为image绑上触摸事件监听
View.OnTouchListener该接口:
Interface definition for a callback to be invoked when a touch event is dispatched to this view. The callback will be invoked before the touch event is given to the view.
接口定义作为一个回调函数被调用时被派遣去触摸事件这一观点。回调函数被调用之前会触摸事件是给你尽情的观看。
图片翻转代码linux,Android实现图片顺时逆时旋转及拖拽显示效果相关推荐
- VUE实现前台图片 标注(添加矩形框)、放大、缩小、拖拽 -----个人记录
VUE实现前台图片 标注(添加矩形框).放大.缩小.拖拽 需求:实现图片上自定义多个矩形选框,选框可移动缩放拖动,图片可以放大缩小.拖拽 ,选框内填充标注文字. 框内填充文字基本都会,不多赘述,后期可 ...
- 微信小程序操作图片放大、缩小、旋转、拖拽
微信小程序操作图片放大.缩小.旋转.拖拽 在开发小程序的时候遇到了上传图片,然后编辑的需求.打算网上找一下相关代码组件的,就不用自己搞这么麻烦.经过一番折腾,还是没有找到如意的,最后自己弄好了,记录一 ...
- 微信小程序怎么实现 图片按住一角缩放、旋转、拖拽
微信小程序怎么实现 图片按住一角缩放.旋转.拖拽 图片一角可以加个小图片,按住来操作 利用movable-view.movable-area 可以实现拖拽缩放.不好旋转 是不是可以利用canvas绘图 ...
- uniapp微信小程序图片裁剪插件,支持自定义尺寸、定点等比例缩放、拖动、图片翻转、剪切圆形/圆角图片、定制样式
qf-image-cropper2.0 图片裁剪插件 1.效果预览: 2.平台支持: 1.支持微信小程序(移动端.PC端.开发者工具) 2.H5平台(2.1.0版本起) 3. 支持APP平台(2.1. ...
- android图片底部居中对齐,android开发图片居中的小技巧
释放双眼,带上耳机,听听看~! 制作UI布局的时候都会出现复杂的LinearLayout嵌套,并且常常会被一些问题混淆,警惕在android中图片居中的小技巧大家都知道吗?别着急,下文是技术狗小编为大 ...
- android图片晃动动画,剖析Android动画(图片闪烁、左右摇摆、上下晃动等效果)
通常我们需要一个item连续的播放某一段动画或者循环的执行某个动画,这里我们就可以用到一下技巧. 一.续播(不知道取什么名字好,就是先播放动画A, 接着播放动画B) 有两种方式: 第一种: 分别定义两 ...
- html图片自动移动代码是什么,html图片滚动代码
html图片向左无缝隙循环滚动代码 向左或向右都可以,无缝隙循环滚动,麻烦请给完整代码,5张图片图片大小用css3实现循环滚动效果: css: #wrap{ width: 200px; height: ...
- html语言图片滚动代码,[转载]Html网页图片滚动代码
style=overflow:hidden;height:100;width:90;> id=butong_net_top2> var speed=30 butong_net_top2.i ...
- VUE实现前台图片 标注(添加矩形框)、放大、缩小、拖拽
需求:实现图片上自定义多个矩形选框,选框可移动缩放拖动,图片可以放大缩小.拖拽 ,选框内填充标注文字. 框内填充文字基本都会,不多赘述,后期可添加选框移除功能(思路右击选框弹出选项删除,获取当前点击选 ...
最新文章
- 这一次,你能彻底搞懂 Flink!
- 手持机设备公司(WINCE/ANDROID/LINUX)
- (转)php-cli模式学习(PHP命令行模式)
- bzoj2287【POJ Challenge】消失之物 缺一01背包
- LeetCode meituan-003. 小美的跑腿代购(排序)
- navicat 添加外键1215错误
- 树的非递归前中后序遍历
- C语言什么是结构体?初步学习C语言结构体三部曲
- 加速器instagram_“类似Instagram过滤器”标记肿瘤图像中的分子细节
- 01背包 hihocoder第六周
- 浏览器FLASH禁用后无法播放rtmp流怎么办webrtc视频流直播浏览器无插件播放也支持rtmp拉转成webrtc输出
- 圣思园 java_圣思园Java8新特性及实战视频教程 下载
- android 设置组件背景图片,Android TextView背景颜色与背景图片设置
- redission实现分布式锁
- permissionerror winerror 5 拒绝访问。
- 如何设置Xiuno BBS URL-Rewrite(伪静态设定)
- The bean ‘beanNameViewResolver‘, defined in class path resource [cn/afterturn/easypoi/configuration/
- python写的点名器(内附源码)
- python怎么加逗号_python – 什么是最简单的方法添加逗号到一个整数?
- 哈希表+哈希桶简介及实现
热门文章
- 区块链安全20种注意的风险
- [violet6] 故乡的梦
- Roson的Qt之旅#56 QTime用法
- iptables实现端口映射(本地和远程端口映射)
- 谁说 Vim 不好用?送你一个五彩斑斓的编辑器!
- 建筑储能相变材料:两种热性能标准测试方法比较
- 解决“未将对象引用设置到对象的实例”
- 畅享5android版本,科普华为畅享5怎么root及安卓6.0系统怎么root
- 批处理中使用变量嵌套/命令嵌套实现随机密码
- android性能测试 内存,测试基础之Android性能测试一:内存