天天看点

Android两种不同的方法去实现图像的放大与缩小(很有帮助)

其实不算两种不同的方法,只是一个方法用的是硬编码,而另一个用的是mvc设计模式,用的都是同一个类matrix。

第一种:硬编码方式

mainactivity.java

main.xml

关于布局这块,那么细致的去确定位置坐标,真是有点麻烦,我是用一款专门的设计软件droiddraw去做的,咋此可以下载: 

Android两种不同的方法去实现图像的放大与缩小(很有帮助)

droiddraw-r1b14.rar

实现的效果如图1:

Android两种不同的方法去实现图像的放大与缩小(很有帮助)

此图为放大到最大时的截图,放大按钮被置为disabled。

注意:由于在代码70-73行有强制类型转换,所以每次放大后的长宽高都有误差,所以不是每次放大都是精准的,同理,缩小也一样。

第二种:在xml里设计(mvc)

自定义view.java

这里注意应该把按键监听语句放在mainactivity.java代码里面,不应该放在自定义view里面进行监听,这样会出错。

总结:

/* 加载资源 */

bmp = bitmapfactory.decoderesource(getresources(), r.drawable.me);  或mbitmap = ((bitmapdrawable) getresources().getdrawable(r.drawable.myicon)).getbitmap();

第二个通过键盘去放大缩小,我试着通过添加按钮区控制,但是总是出错。

通过对代码的比较,显然易见,mvc的代码更清楚,但是用硬编码有硬编码的好处,硬代码编程运行时可以加快调用速度,而mvc会增加内存。

在android中不允许imageview在产生后,动态修改其长度和宽度,所以为了实现图片放大缩小功能,使用的方式是当用户在单击放大或缩小的按钮时,除了将图片作放大或缩小的动作外,并将原来layout中imageview删除,重新产生一个新的imageview,指定图片给它后,再放入layout里,用户看来,就好像同一张图片再放大或缩小。即方法一的代码。

代码有很多不足,希望大家自己去修改,也希望高人能在此给予指点。

继续阅读