M0286_Libro Curso
2: Avanzado en Android
private int mElementNumber = 0; @Override public boolean onTouchEvent(MotionEvent event) { synchronized (mElements) { mElements.add(new Element(getResources(), (int) event.getX(), (int) event.getY())); mElementNumber = mElements.size(); } return super.onTouchEvent(event); } Insertamos el método animate() en la clase Panel, al que llamaremos en cada bucle del hilo, realiza la llamada a cada elemento de la clase Element. public void animate(long elapsedTime) { synchronized (mElements) { for (Element element : mElements) { element.animate(elapsedTime); } } } Y por último, en la clase ViewThread , en el método run() calcularemos el tiempo transcurrido y llamaremos a los métodos anímate() y doDraw() de la clase Panel . @Override public void run() { Canvas canvas = null; mStartTime = System. currentTimeMillis (); while (mRun) { canvas = mHolder.lockCanvas(); if (canvas != null) { mPanel.animate(mElapsed); mPanel.doDraw(mElapsed, canvas); mElapsed = System. currentTimeMillis () - mStartTime; mHolder.unlockCanvasAndPost(canvas); } mStartTime = System. currentTimeMillis (); } } Si ejecutamos la aplicación, cada vez que pulsemos sobre la pantalla aparecerá un nuevo icono que se empezará a mover por la pantalla de una forma aleatoria.
La aplicación completa “SeasMovimiento2D” se puede descargar desde la plataforma de estudio.
101
Made with FlippingBook - Online catalogs