Today, I wrote a method to handle the ondoubletap event. Double-click the program to zoom in and out the screen event, double-click the screen image to zoom in, and then double-click the screen image to zoom in to the original effect. See the results!
Source image: double-click the screen to enlarge the effect:
Paste the code below:
I. Code in mainactivty. Java class:
Package com.cn. android; import android. app. activity; import android. OS. bundle; import android. util. log; import android. view. gesturedetector; import android. view. keyevent; import android. view. motionevent; import android. view. gesturedetector. ongesturelistener; public class mainactivity extends activity implements ongesturelistener {private imageshowview listener = NULL; private synchronized gestureener; private double scale = 1.0; @ override public void oncreate (bundle savedinstancestate) {super. oncreate (savedinstancestate); mimageshowview = new imageshowview (this); setcontentview (mimageshowview); gesturetor = new gesturedetector (this); gesturetor. setondoubletaplistener (New gesturedetector. ondoubletaplistener () {@ override public Boolean ondoubletap (motionevent e) {// todo auto-generated method stub // If (scale = 1.0) {scale = scale + 0.5; mimageshowview. setscale (scale);} else if (scale = 1.5) {scale = scale-0.5; mimageshowview. setscale (scale);} log. V ("Daming", "ondoubletap"); Return true ;}@ override public Boolean ondoubletapevent (motionevent E) {// todo auto-generated method stub // double-click to generate two logs. V ("Daming", "ondoubletapevent"); Return false ;}@ override public Boolean onsingletapconfirmed (motionevent e) {// Click Log once. V ("Daming", "onsingletapconfirmed"); Return false ;}}) ;}@ override public Boolean ontouchevent (motionevent me) {return gesturetries. ontouchevent (me) ;}@ override public Boolean ondown (motionevent e) {// todo auto-generated method stub return false;} @ override public Boolean onfling (motionevent E1, motionevent E2, float velocityx, float velocityy) {// todo auto-generated method stub return false;} @ override public void onlongpress (motionevent E) {// todo auto-generated method stub} @ override public Boolean onscroll (motionevent E1, motionevent E2, float distancex, float distancey) {// todo auto-generated method stub return false;} @ override public void onshowpress (motionevent E) {// todo auto-generated method stub} @ override public Boolean onsingletapup (motionevent e) {// todo auto-generated method stub return false ;}}
Ii. Code in imageshowview. Java:
Package com.cn. android; import android. content. context; import android. graphics. bitmap; import android. graphics. canvas; import android. graphics. matrix; import android. graphics. drawable. bitmapdrawable; import android. view. keyevent; import android. view. view; public class imageshowview extends view implements runnable {bitmap mbitmap = NULL; int mbitmapwidth = 0; // define the image width int mbitmapheight = 0; // define the image's high private Double scale = 1.0; matrix mmatrix = new matrix (); Public imageshowview (context) {super (context); mbitmap = (bitmapdrawable) getresources (). getdrawable (R. drawable. image1 )). getbitmap (); mbitmapwidth = mbitmap. getwidth (); mbitmapheight = mbitmap. getheight (); // enable the thread new thread (this ). start ();} public void setscale (double scale) {This. scale = scale ;}@ override protected void ondraw (canvas C Anvas) {super. ondraw (canvas); mmatrix. reset (); mmatrix. postscale (float) scale, (float) scale); // you can specify bitmap mbitmap2 = bitmap. createbitmap (mbitmap, 0, 0, mbitmapwidth, mbitmapheight, mmatrix, true); // draw the image imageshowview after rotation. drawimage (canvas, mbitmap2, (320-mbitmapwidth)/); mbitmap2 = NULL ;}@ override public void run () {While (! Thread. currentthread (). isinterrupted () {try {thread. sleep (100);} catch (interruptedexception e) {// todo auto-generated Catch Block E. printstacktrace () ;}postinvalidate () ;}} Private Static void drawimage (canvas, Bitmap bitmap, int X, int y) {// todo auto-generated method stub canvas. drawbitmap (bitmap, X, Y, null );}}
Note: The above is all my code, and the images in the project will not be uploaded. You can upload an image by yourself. If you need the complete code, you can leave the email address, if you have any questions, please leave a message and I will reply to them! If you have good suggestions, you can come up with them, learn together, and make progress together!