android - Issue with getting GestureDetector to work with handleMessage -


my app shows bunch of bitmaps animate 1 one it's stored in bitmap array , when app starts curposition 0 start animating obj @ index 0. handlemessage animate each obj 1000ms delay between each obj when app starts first time , when app starts first time handlemessage animates each obj normally.

the issue once double tap restart button bitmap. used gesturedetector class , have restart button constructed via bitmap when listen ondoubletap , should happen handlemessage go thru each bitmap restarting animating them.

for reason, when double tap restart button bitmap, handlemessage running , know since put in logcat message , logcat message in update method see running thru each curposition mean line: log.i ("cur pos. far:", "" + curposition );

but don't visually see animation running thru update method unless interrupt app (i.e. close app or minimize resume app) , double tap restart button bitmap , double tapping restart button bitmap works once need interrupt app work again.

public class mainactivity extends activity  implements     gesturedetector.ongesturelistener,     gesturedetector.ondoubletaplistener {  private mysurfaceview mysurfaceview;  private bitmap restart_buttonbitmap; private gesturedetector mgesturedetector; private miniproj2button restart; private miniproj2button newlevel;  private final int size = 5; private final int delay = 1000; private bitmap[] myobjs = new bitmap[ size ];  //screen size info private int screenwidth; private int screenheight; //the size in pixels of place on game board private int blocksize; private int numblockswide; private int numblockshigh;   @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     mysurfaceview = new mysurfaceview(this);     setcontentview(mysurfaceview);      // create gesturedetector     mgesturedetector = new gesturedetector(this, this);      // attach listeners that'll called double-tap , related gestures     mgesturedetector.setondoubletaplistener( );  }//end method: oncreate  @override protected void onstop() {     super.onstop();     log.d("onstop", "main activity's onstop called");     gameview.surfacedestroyed( mysurfaceview.getholder() );     this.finish(); }  @override protected void onresume() {     super.onresume();     log.d("onresume", "main activity's onresume called");      mysurfaceview = new mysurfaceview(this);     setcontentview(mysurfaceview);     mysurfaceview.surfacecreated( mysurfaceview.getholder() ); }  @override protected void onpause() {     super.onpause();     log.i("onpause", "main activity's onpause called");     mysurfaceview.surfacedestroyed( mysurfaceview.getholder() ); }  @override public boolean ondoubletap(motionevent e) {      //reset animation if restart button pressed!     if ( restart.isbuttontouched(e.getx(), e.gety(), blocksize,blocksize)  ) {          curposition = 0;      }      return true; }  public void configuredisplay() {     //find out width , height of screen     display display =             getwindowmanager().getdefaultdisplay();     point size = new point();     display.getsize(size);     screenwidth = size.x;     screenheight = size.y;      //determine size of each block/place on board //        blocksize = screenwidth/10;     blocksize = screenwidth/10;      //determine how many blocks fit     //height , width //        numblockswide = 10;     numblockswide = 10;     numblockshigh = ( ( screenheight ) ) / blocksize;   }//end method: configuredisplay  @override public boolean ontouchevent(motionevent e) {     mgesturedetector.ontouchevent(e);     return super.ontouchevent(e);  }//end ontouchevent  class mysurfaceview extends surfaceview implements surfaceholder.callback, handler.callback {      canvas canvas = new canvas();     surfaceholder surfaceholder;//this lets access canvas still need use canvas class     handler myhandler;     paint paint = new paint ();      public mysurfaceview(context context) {         super(context);         paint.setcolor(color.argb(255, 0, 0, 0));         path = new path ();         myhandler = new handler(this);         getholder().addcallback(this);     }      @override     public void surfacecreated(surfaceholder holder) {         this.surfaceholder = holder;         myhandler.sendemptymessage(0);     }      @override     public void surfacechanged(surfaceholder holder,                                int format, int width, int height) {         // enter here???     }      @override     public void surfacedestroyed(surfaceholder holder) {         log.i("me", "surfacedestroyed: bye!" );         myhandler.removecallbacksandmessages(null);     }      protected void drawit ( ) {          if ( surfaceholder.getsurface().isvalid() ) {             canvas = surfaceholder.lockcanvas();             canvas.drawcolor(color.white);//the background              //for each obj, draw              surfaceholder.unlockcanvasandpost(canvas);         }//end if block: valid surfaceholder     }//end method: drawit      public void update() {         log.i ("cur pos. far:", "" + curposition );          if ( curposition < size ) {             myobjs [ curposition ].animateme ( );             curposition++;         }       }//end method: update       @override     public boolean handlemessage(message msg) {          if (curposition < size  ) {             log.i("still objs 2 animate","yes");             log.i ("cur pos. far:", "" + curposition );             gameview.update();             gameview.drawit();             myhandler.sendemptymessagedelayed(msg.what, delay);         }          else {             myhandler.sendemptymessagedelayed(msg.what, 10);             gameview.drawit();         }          return true;     }//end method: handlemessage  }//end inner class: mysurfaceview }//end class: mainactivity 


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -