2013-03-27 3 views
2

Мне сложно найти это правильно. Все, что я хочу, это то, что когда я встряхиваю изменения цвета на что-то другое или меняет текст на что-то. Не обязательно быть случайным. Не могу найти ничего полезного, которое не содержит бесполезных вещей.Android Java - изменение цвета/текста при встряхивании

+0

Пройдите через это. Это поможет вам сделать это. http://stackoverflow.com/questions/2317428/android-i-want-to-shake-it – Satheesh

ответ

2

Не даже 20 секунд дает прибегая к помощи уже есть, вероятно, прекрасно решение рабочей копии-паста с легким обратного вызова, где вы можете сделать все, что вы хотите в вашей деятельности ...

http://android.hlidskialf.com/blog/code/android-shake-detection-listener

0

Используйте класс ниже и при создании нового экземпляра вызывайте метод setCallBack в том экземпляре, который вы создали для получения обратных вызовов, передайте этот экземпляр, когда вы регистрируете прослушиватель через диспетчер датчиков.

import android.hardware.Sensor; 

import android.hardware.SensorEvent; 

import android.hardware.SensorEventListener; 



public class ShakeListener implements SensorEventListener { 

    private ShakeCallback mShakeCallback; 

    private int totalMovement; 
    private long timeMilies; 
    private float lastX, lastY, lastZ = -1.0f; 
    private int shakeIntervalMilies = 2000; 

    ShakeListener() { 
    } 

    public static ShakeListener newInstance() { 
     return new ShakeListener(); 
    } 


    public ShakeListener setCallBack(ShakeCallback shakeCallback) { 
     this.mShakeCallback = shakeCallback; 

     return this; 
    } 


    public ShakeListener setShakingInterval(int intervalMilies) { 
     this.shakeIntervalMilies = intervalMilies; 

     return this; 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     if (mShakeCallback != null) { 
      totalMovement = (int) ((event.values[0] + event.values[1] + event.values[2]) - (lastX 
        + lastY + lastZ)); 
      if (totalMovement > 20 
        && (System.currentTimeMillis() - timeMilies >= shakeIntervalMilies)) { 
       mShakeCallback.onShake(); 
       timeMilies = System.currentTimeMillis(); 

      } 
      lastX = event.values[0]; 
      lastY = event.values[1]; 
      lastZ = event.values[2]; 
     } 
    } 

    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 

    } 
    public static interface ShakeCallback { 
     public void onShake(); 

    } 

} 
Смежные вопросы