eoe 移动开发者论坛

 找回密码
 加入eoe

QQ登录

只需一步,快速开始

查看: 1656|回复: 13
收起左侧

[多媒体] ImageView缩放、移动

[复制链接]

签到天数: 48 天

连续签到: 1 天

[LV.5]常住居民I

2258

主题

1203

帖子

765

e币
发表于 2014-9-15 11:14:10 | 显示全部楼层 |阅读模式
50e币
目前要做的是一个图片合成功能的产品图片缩放合成已经做到了,用第三方的view类: PhotoView
现在只能在放大时,上下或左右超过屏幕才能移动
只要上下左右都在屏幕,ImageView整个就是固定在中间,无法移动


本来想要打掉重写一个自定义ImageView
但是,找了很多例子,对于取得ImageView的 上下左右座标没有头绪
网上写说 有两种可以做到缩放 一种是xml 设置scaletype: matrix 另一种是好像直接对ImageView做缩放
因为合成会用到ImageView的上下左右座标,因此很苦恼阿

请会的大神门不吝提供一下 思绪方向
或者 如果有例子也可以提供
感谢各位的帮忙

最佳答案

查看完整内容

这是我在项目中使用到的图片合成,还有图片手势旋转,缩放。我还是不太明白你的具体需求

签到天数: 6 天

连续签到: 1 天

[LV.2]偶尔看看I

13

主题

891

帖子

4359

e币
发表于 2014-9-15 11:14:11 | 显示全部楼层
xjxuvup 发表于 2014-9-15 12:23
我上面描述错误 是超出中间这个范围
实际上图如果大于这个范围 是可以拖曳的
但是如果小于这个范围 那就 ...

这是我在项目中使用到的图片合成,还有图片手势旋转,缩放。我还是不太明白你的具体需求

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入eoe

x

签到天数: 6 天

连续签到: 1 天

[LV.2]偶尔看看I

13

主题

891

帖子

4359

e币
发表于 2014-9-15 11:30:35 | 显示全部楼层
用Canvas,可以不用坐标,
Canvas canvas = new Canvas(backgroundBitmap);
Paint paint = new Paint();
canvas.drawBitmap(smallBitmap,left,top, paint);//left获取:smallBitmap.getLeft();top获取:smallBitmap.getTop()
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
返回backgroundBitmap这样就可以合成了

签到天数: 48 天

连续签到: 1 天

[LV.5]常住居民I

2258

主题

1203

帖子

765

e币
 楼主| 发表于 2014-9-15 11:53:24 | 显示全部楼层
lanyj189 发表于 2014-9-15 11:30
用Canvas,可以不用坐标,
Canvas canvas = new Canvas(backgroundBitmap);
Paint paint = new Paint();

这个我知道 但是如果超出屏幕的话
这种就不能用了
不知道有什么方法
目前有找到例子是用android:scaleType:matrix
这种的可以自由在屏幕移动
但是我取不到座标
合成的时候会用到
虽然用您的方式可以不用座标
但是这样的话
如果超出屏幕
就不能用这方法了
谢谢您的帮忙

签到天数: 6 天

连续签到: 1 天

[LV.2]偶尔看看I

13

主题

891

帖子

4359

e币
发表于 2014-9-15 11:58:07 | 显示全部楼层
xjxuvup 发表于 2014-9-15 11:53
这个我知道 但是如果超出屏幕的话
这种就不能用了
不知道有什么方法

为什么超出屏幕还合成?这也不符合逻辑

签到天数: 48 天

连续签到: 1 天

[LV.5]常住居民I

2258

主题

1203

帖子

765

e币
 楼主| 发表于 2014-9-15 12:23:00 | 显示全部楼层
lanyj189 发表于 2014-9-15 11:58
为什么超出屏幕还合成?这也不符合逻辑

我上面描述错误 是超出中间这个范围
实际上图如果大于这个范围 是可以拖曳的
但是如果小于这个范围 那就只能固定在中间
这是缩放的结果
使用者也许只想要合成某一部分
并不想要合成全部
且或者 不想固定在中间
这就造成了我一开始问的问题了
要能自由移动
且超出范围也要能够合成
谢谢您



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入eoe

x

签到天数: 48 天

连续签到: 1 天

[LV.5]常住居民I

2258

主题

1203

帖子

765

e币
 楼主| 发表于 2014-9-15 15:01:47 | 显示全部楼层
我做的合成功能,ui是这样的一个FrameLayout 里面包两个View(宽高都是match_parent)
其中这两个View...底下是可以缩放的ImageView,上面是相框(中间可能有挖洞),然后需求是使用者可以对底下那一层ImageView做缩放,移动,图可以大于中间那个范围,然后我在合成时,
只截中间那个范围,超过的我就裁掉,目前缩放可以做到放大能移动,但是缩小就固定在那边了,缩小还能够移动这一段找了网路上的范例,有些能做到,但是我不知道怎么取图的top,left,right,bottom四个座标点
只有取得那四个座标点 我才能针对中间那个范围做合成

签到天数: 6 天

连续签到: 1 天

[LV.2]偶尔看看I

13

主题

891

帖子

4359

e币
发表于 2014-9-15 16:12:36 | 显示全部楼层
xjxuvup 发表于 2014-9-15 15:01
我做的合成功能,ui是这样的一个FrameLayout 里面包两个View(宽高都是match_parent)
其中这两个View...底下 ...

int[] location = new  int[2] ;
view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标
location [0]--->x坐标,location [1]--->y坐标
这样的方式行吗?

签到天数: 2 天

连续签到: 1 天

[LV.1]初来乍到

144

主题

895

帖子

598

e币
发表于 2014-9-15 16:14:00 | 显示全部楼层
xjxuvup 发表于 2014-9-15 12:23
我上面描述错误 是超出中间这个范围
实际上图如果大于这个范围 是可以拖曳的
但是如果小于这个范围 那就 ...

啊不支持手势旋转啊,差评

签到天数: 48 天

连续签到: 1 天

[LV.5]常住居民I

2258

主题

1203

帖子

765

e币
 楼主| 发表于 2014-9-15 16:21:53 | 显示全部楼层
阿毛的往事 发表于 2014-9-15 16:14
啊不支持手势旋转啊,差评


阿毛来帮忙下阿

签到天数: 48 天

连续签到: 1 天

[LV.5]常住居民I

2258

主题

1203

帖子

765

e币
 楼主| 发表于 2014-9-15 16:29:00 | 显示全部楼层
lanyj189 发表于 2014-9-15 16:12
int[] location = new  int[2] ;
view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标
loc ...

您好,这个方法不行,我是用xml的ScaleType = "matrix"去做缩放
实际上用这方法的话,取到的都是固定的值
目前朝向获取drawable的方式 看能不能取得top left 然后获取 宽高 应该就能合成了
但是目前还找不到获取的方式

签到天数: 2 天

连续签到: 1 天

[LV.1]初来乍到

144

主题

895

帖子

598

e币
发表于 2014-9-15 16:34:00 | 显示全部楼层
xjxuvup 发表于 2014-9-15 16:21
阿毛来帮忙下阿

你怎么知道我会,拼图涂鸦的?我的做法和你不同啊,我是继承view 在一个view里面通过重写canvas做的涂鸦旋转之类的操作,没有用到imageview这些控件。

该用户从未签到

1

主题

550

帖子

44

e币
发表于 2014-9-15 16:56:18 | 显示全部楼层
这个肯定要自己画的 要不效率不高的

签到天数: 48 天

连续签到: 1 天

[LV.5]常住居民I

2258

主题

1203

帖子

765

e币
 楼主| 发表于 2014-9-15 17:01:04 | 显示全部楼层
阿毛的往事 发表于 2014-9-15 16:34
你怎么知道我会,拼图涂鸦的?我的做法和你不同啊,我是继承view 在一个view里面通过重写canvas做的涂鸦 ...

我不知道你会阿 哈哈 不过我貌似解决了我用以下图的方式就能取得 top left right bottom了r是RectF
透过r.top r.left可以分别取得top, left座标


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入eoe

x
*滑动验证:
您需要登录后才可以回帖 登录 | 加入eoe

本版积分规则

推荐阅读
赞助商们

QQ|联系我们|小黑屋|手机版|eoe 移动开发者论坛 ( 京ICP备11018032 京公网安11010802020210  

GMT+8, 2017-8-21 10:49 , Processed in 0.575032 second(s), 45 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表
关闭

扫一扫 关注eoe官方微信