2013-03-27 4 views
2

제대로 찾는 데 어려움이 있습니다. 내가 원하는 것은 내 색을 변경하면 다른 것으로 변경되거나 텍스트가 변경됩니다. 무작위로 tho 될 필요는 없습니다. 쓸데없는 것들이 포함되지 않은 유용한 것을 찾을 수 없습니다. 인터넷 검색의Android Java - 흔들 때 색상/텍스트 변경

+0

이것을 수행하십시오. 이렇게하면 도움이 될 것입니다. http://stackoverflow.com/questions/2317428/android-i-want-to-shake-it – Satheesh

답변

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(); 

    } 

} 
관련 문제