Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I make vibrate animation for ImageView

I have no idea for this animation.

How can I do it via XML like that? Or another solution?

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fillAfter="true"> 
    ......
</set>

Thanks for your help

like image 484
Nam Vu Avatar asked Feb 04 '13 04:02

Nam Vu


3 Answers

This code shakes a view in horizontal direction

shake.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXDelta="0"
    android:interpolator="@anim/cycle_5"
    android:toXDelta="10" />

cycle_5.xml

<?xml version="1.0" encoding="utf-8"?>
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:cycles="5" />

Method to shake ImageView

public void onShakeImage() {    
   Animation shake;
   shake = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.shake);

   ImageView image;
   image = (ImageView) findViewById(R.id.image_view);

   image.startAnimation(shake); // starts animation
}
like image 74
Philip Herbert Avatar answered Nov 15 '22 19:11

Philip Herbert


1) vibrate or 2) shake (using property animation)the following code working for me.

 ObjectAnimator rotate = ObjectAnimator.ofFloat(animateView, "rotation", 0f, 20f, 0f, -20f, 0f); // rotate o degree then 20 degree and so on for one loop of rotation.
// animateView (View object) 
        rotate.setRepeatCount(20); // repeat the loop 20 times
        rotate.setDuration(100); // animation play time 100 ms 
        rotate.start();
like image 8
Geet Thakur Avatar answered Nov 15 '22 19:11

Geet Thakur


Create shake.xml inside anim directory

<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
    android:duration="70"
    android:fromDegrees="0"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="5"
    android:repeatMode="reverse"
    android:toDegrees="0" />
<translate
    android:duration="70"
    android:fromXDelta="40"
    android:interpolator="@android:anim/linear_interpolator"
    android:repeatCount="5"
    android:repeatMode="reverse"
    android:toXDelta="-40" />

inside your java file add below method

public void animateView(View view){
    Animation shake = AnimationUtils.loadAnimation(getActivity(), R.anim.shake);
    view.startAnimation(shake);
}

and pass your view inside method for animation

animateView(yourView);
like image 5
Mehul Solanki Avatar answered Nov 15 '22 17:11

Mehul Solanki