如图,
不知道图片中的每张图是不是ImageView,是的话canvas.rotate()、Matrix.rotate()都可以实现图片旋转,但是Android中View的可绘图区域是一个垂直的矩形,View中的图片旋转之后会一部分图像就会不可见,如图,增大view的显示区域倒也可以把图像完整显示,但是View的四角就会留下一些没有绘制的空白区域,点击这些区域被这张图片覆盖的其他图片就不能获得点击事件。美图秀秀里被那些空白的区域覆盖的图片是可以获得点击事件的,并且可以拖动;
小弟实在想不明白是怎么实现的,忘高手告知!!小弟不胜感激!!!
不知道图片中的每张图是不是ImageView,是的话canvas.rotate()、Matrix.rotate()都可以实现图片旋转,但是Android中View的可绘图区域是一个垂直的矩形,View中的图片旋转之后会一部分图像就会不可见,如图,增大view的显示区域倒也可以把图像完整显示,但是View的四角就会留下一些没有绘制的空白区域,点击这些区域被这张图片覆盖的其他图片就不能获得点击事件。美图秀秀里被那些空白的区域覆盖的图片是可以获得点击事件的,并且可以拖动;
小弟实在想不明白是怎么实现的,忘高手告知!!小弟不胜感激!!!
解决方案 »
- 是大神就来瞧瞧-------EditText多行显示时,在行末输入空格不会自动换行问题!!!!!!!!!!
- android 开发闹钟问题
- Android入门
- 求助Unable to start activity ComponentInfo{mars.mobile/mars.mobile.DetailActivity}
- AudioCommandThread::threadLoop中对应mLock.lock()的unlock的地方在哪里
- 用什么技术做跨电脑和手机的网站最省事?
- 有什么办法保留版本A的数据到版本B呢?
- 求助:Android开发环境的配置问题
- 几十k的字符串本地怎么存储,SharedPreferences可以吗
- android studio gradle failed:protocol family unavailable
- android Gallery图片显示,默认第一张图片位置是屏幕的中间,屏幕右边会显示下张图片?
- 如何用listview显示sqlite里的数据?
我认为要实现这个效果,把图片旋转之后用一个更大的矩形imageView去包裹他但是你说在覆盖区域是有点击事件的,那就只有整个View都由自己重写,自己处理onDraw和touch消息来控制刷新了
其他的就想不到了
谢谢,反编译秀秀的代码大致看了下,如兄台所说,秀秀就是重写的整个View,自己处理的onDraw和touch消息来控制刷新。
不过感觉实现起来会很有难度。
1.canvas可以draw多个Bitmap吗?
2.touchEvent里要判断手指点击的坐标是否被倾斜的图片包裹,这个怎么判断?
期待兄台的解答?
2可以用Matrix matrix = new Matrix();matrix.setRotate(90);做旋转放大平移操作,canvas本身也有旋转的方法rotate。
1、 canvas的draw就是一层一层覆盖上去的,后面的覆盖前面的,可以draw多个的2、 因为没有控件用了,图片的位置什么的肯定都是自己管理,自己算坐标,用一个多边形代替。然后把位置存储起来。所以也就只有判断点击点在不在多边形内。涉及的算法我只知道最简单的。
前面还说到那个拖动,就需要随时动态刷新变换什么的了,很废内存所以那个判断算法肯定不能太差
不过这都是估计,具体能承受到什么样子应该看机器