Android buttonimage shake animation

14,302

Replace your shakeanim.xml file with this.

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:duration="150"
        android:fromXDelta="-10%"
        android:repeatCount="5"
        android:repeatMode="reverse"
        android:toXDelta="10%"/>
</set>

btw you can change your MainActivity "setOnClickListener" like this as you have already declared imageButton.

imageButton.setOnClickListener(new OnClickListener() {

            @Override 
            public void onClick(View v) {
                clicks--;               
                clicksToGo.setText("You need to click " + clicks + " more times to open it");
                imageButton.startAnimation(shake);  
            }  
        }); 

If this helps please mark it as the right answer. Thank you

Share:
14,302

Related videos on Youtube

The M
Author by

The M

Updated on June 04, 2022

Comments

  • The M
    The M almost 2 years

    I am new with android and im looking for a way to shake my buttonimage on click. I got this so far but it crashes all the time. Or if you click it nothing works. I hope you people can help me out. if i forgot anythiing just say it. code can be messy.

    i got a anim folder. with shakeanim.xml

    code:

    activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
    
        tools:context=".MainActivity" >
    
         <ImageButton
             android:id="@+id/imageButton1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerHorizontal="true"
             android:layout_centerVertical="true"
             android:src="@drawable/chest"
            android:background="@null"/>
    
         <TextView
             android:id="@+id/textView1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_above="@+id/imageButton1"
             android:layout_centerHorizontal="true"
             android:layout_marginBottom="51dp"
             android:text="100 Clicks" />
    
    </RelativeLayout>
    

    MainActivity.java

    package com.example.egghatcher;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.ImageButton;
    import android.widget.TextView;
    
    
    public class MainActivity extends Activity {
    
        ImageButton imageButton;
    
        TextView clicksToGo;
    
        Animation shake;
    
        private int clicks = 100;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            shake = AnimationUtils.loadAnimation(this, R.anim.shakeanim);
        }
    
        public void addListenerOnButton() {
    
            imageButton = (ImageButton) findViewById(R.id.imageButton1);
    
            clicksToGo = (TextView)findViewById(R.id.textView1);
    
            imageButton.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    clicks--;               
                    clicksToGo.setText("You need to click " + clicks + " more times to open it");
                    findViewById(R.id.imageButton1).startAnimation(shake);  
                } 
            });
    
        }
    
    
    }
    

    shakeanim.xml

    <?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="300"
        android:fromXDelta="0"
        android:interpolator="@android:anim/cycle_interpolator"
    
        android:toXDelta="10" />
    
  • Admin
    Admin almost 7 years
    the animation jumps!
  • Daksh Gargas
    Daksh Gargas almost 7 years
    what's with this formXDelta