绝对定位下ImageView重绘Bitmap的问题

rappercn 2012-02-11 12:24:35
我在一个AbsoluteLayout上添加了一个ImageView,用于显示一张比较大(肯定超出屏幕尺寸,等比显示)的图片
ImageView可以拖动,每隔一秒种需要重绘Bitmap并且用setImageBitmap方法把图片刷新到ImageView上
我的问题是:当ImageView被拖动到离开屏幕左上角之后,当再次调用setImageBitmap方法时,ImageView又自己跑到屏幕左上角去了,请问该如何处理才能保持ImageView的位置不发生变化?
...全文
663 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻找IT之路 2013-10-13
  • 打赏
  • 举报
回复
记录一下当前显示位置在看每setImageBitmap的时候再image设置postTranslate()。
qq403750026 2013-10-12
  • 打赏
  • 举报
回复
用surfaceView 你这样搞不好没销毁的话, 进几次还oom了, 特别是大分辨率手机
zhyntc54321 2013-07-23
  • 打赏
  • 举报
回复
你走的路子错了。 每一帧都重新绘图,建议换 surfaceView,用imageView你会坑死的。 setImageBitmap方法是会重新生成一个bitmap对象去转换的,刷新频繁点你的程序就崩溃了。 还有ImageView 大小是会根据你set进去的图片自动维护大小和位置的! 如果实在不想用surfaceView,建议自定义一个View,实现onDraw方法吧。
逐Ls梦 2013-07-22
  • 打赏
  • 举报
回复
引用 10 楼 wdy2008213 的回复:
[quote=引用 9 楼 scliu0718 的回复:] 最好用Metrix来做
用matrix的画,要怎么设置imageview的宽高呢。图片只能在Imageview里面拖动、缩放。imageview设成固定大小的话,就不能全屏拖动缩放了,设成屏幕大小的话,当有多张图片的时候,触摸区域重叠了,又不行。我需要在一个屏幕上放多张图片,这些图片都可以随意拖动、缩放。[/quote]好乱。。。 你想做成360里面菜单手动效果么?除此之外你还得放大? 很麻烦,你先一个一个来实现吧。放大先做好,如果用matrix来的话不需要手动给它设置宽度,只需要给它传放大比例
wdy2008213 2013-07-20
  • 打赏
  • 举报
回复
引用 9 楼 scliu0718 的回复:
最好用Metrix来做
用matrix的画,要怎么设置imageview的宽高呢。图片只能在Imageview里面拖动、缩放。imageview设成固定大小的话,就不能全屏拖动缩放了,设成屏幕大小的话,当有多张图片的时候,触摸区域重叠了,又不行。我需要在一个屏幕上放多张图片,这些图片都可以随意拖动、缩放。
逐Ls梦 2013-07-19
  • 打赏
  • 举报
回复
最好用Metrix来做
wdy2008213 2013-07-19
  • 打赏
  • 举报
回复
我也遇到这个问题了,请问你解决了吗
a_tuzi 2012-11-22
  • 打赏
  • 举报
回复
在up事件里面 记录下坐标 初始化一下
逐Ls梦 2012-11-22
  • 打赏
  • 举报
回复
记录一下当前显示位置 然后每setImageBitmap的时候再image设置postTranslate()。
拿来主义者 2012-11-21
  • 打赏
  • 举报
回复
我也遇到了这个问题 顶下 请高手回答
rappercn 2012-02-13
  • 打赏
  • 举报
回复
还没有人出来解答,再顶一下
rappercn 2012-02-12
  • 打赏
  • 举报
回复
问题补充:
之前用SurfaceView做的时候可以直接在canvas上绘制图形,不需要重新设置背景图(但如果今后加入缩放,并且重新绘制的话,很可能也有同样的问题),可问题是SurfaceView上的动画功能并不很好实现。
所以解决问题的方法我觉得第一是setImageBitmap时能够保持imageview的位置不动。第二就是不使用bitmap,直接在bitmap上绘制。

希望有遇到此问题的朋友指点一二。
Rain麦子 2012-02-11
  • 打赏
  • 举报
回复
是不是也要更新一下LayoutParams!
rappercn 2012-02-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 smilekai0908 的回复:]

是不是也要更新一下LayoutParams!
[/Quote]

setImageBitmap后,getLeft()未发生变化,我觉得设置了也没用。
当onDraw方法被调用时,坐标就自动变成了(0,0)。

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧