Android - Как «встряхнуть, чтобы стереть»? - PullRequest
4 голосов
/ 20 февраля 2011

Это может быть простой вопрос, но я застрял.Я пытаюсь реализовать функцию «встряхнуть, чтобы стереть» в программе рисования (простое приложение рисования).Я не могу заставить его работать.Вот мой код:

private final SensorEventListener mSensorListener = new SensorEventListener() {

        public void onSensorChanged(SensorEvent se) {
          float x = se.values[0];
          float y = se.values[1];
          float z = se.values[2];
          mAccelLast = mAccelCurrent;
          mAccelCurrent = (float) Math.sqrt((double) (x*x + y*y + z*z));
          float delta = mAccelCurrent - mAccelLast;
          mAccel = mAccel * 0.9f + delta; // perform low-cut filter

          if (mAccel > 2) {    
              mView.onDraw(mCanvas);
              mCanvas.drawBitmap(cache, 0, 0, new Paint(Paint.DITHER_FLAG));
          }
        }

        public void onAccuracyChanged(Sensor sensor, int accuracy) {
        }
      };

SensorEventListener основан на в этом примере .Я делаю это в операторе if, но холст не будет сброшен до тех пор, пока после я не коснусь экрана (новое событие касания).

Я бы хотел, чтобы холст сбрасывался / стирался во время события встряхивания, без каких-либо дополнительных запросов от пользователя.

Любая помощь была бы замечательной, спасибо!

1 Ответ

2 голосов
/ 20 февраля 2011

Возможно, вам придется вызвать invalidate для графического объекта, чтобы перерисовать его.Надеюсь, это поможет!http://developer.android.com/guide/topics/graphics/index.html

...