Я делаю анимацию маятника, которая имеет изображение, которое должно двигаться по оси х, когда телефон наклонен до определенной степени и возвращается в исходное состояние, когда телефон держится прямо.Анимация контролируется движением телефона android
Вот что я сделал: -
Main.Java
public class MainActivity extends Activity implements SensorEventListener
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgPend= (ImageView)findViewById(R.id.imgBell);
sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
lastUpdate = System.currentTimeMillis();
rAnimation= new RotateAnimation(0.0f, 30.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
rAnimation.setFillAfter(true);
}
@Override
public void onSensorChanged(SensorEvent event)
{
// TODO Auto-generated method stub
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
getAccelerometer(event);
}
private void getAccelerometer(SensorEvent event)
{
// TODO Auto-generated method stub
float[] values = event.values;
float x = values[0];
float y = values[1];
// float z = values[2];
float accelationSquareRoot = (x * x + y * y)//+ z * z)
/(SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH);
long actualTime = System.currentTimeMillis();
if (accelationSquareRoot >= 2) //
{
if (actualTime - lastUpdate < 200)
{
return;
}
lastUpdate = actualTime;
rAnimation= new RotateAnimation(0.0f, 30.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
rAnimation.setFillAfter(true);
rAnimation.setRepeatMode(rAnimation.REVERSE);
imgPend.startAnimation(rAnimation);
}
}
Вопрос заключается в том, что анимация не очень гладко, и происходит только тогда, когда я встряхните телефон. Я хочу, чтобы он был гладким, только наклон и назад.
Спасибо, что он работал, чтобы получить изображение в исходном месте – user3146095