1

I have made an activity in android,I want is when i start the app the very first activity in my app should come from left and slide to right animation effect.but i have no idea about how to implement it,So can anyone help me or give me some trick so that i can solve it out.I have animation XML ready with my project.

Thank you in advance my code:

package com.esp.Estorec.ui;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.RelativeLayout;

public class SplashActivity1 extends Activity implements AnimationListener {
RelativeLayout view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    view=(RelativeLayout)findViewById(R.id.splash1);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_splash1);
        Animation animationSlideInLeft = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);

        animationSlideInLeft.setAnimationListener(new AnimationListener(){
            @Override
            public void onAnimationEnd(Animation animation) {
                // if you need to do something
            }

            @Override
            public void onAnimationRepeat(Animation animation) {    
            }

            @Override
            public void onAnimationStart(Animation animation) {
        }});

        view.startAnimation(animationSlideInLeft);


        new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
                handler.sendEmptyMessage(1);
            }
        }, 2000);
    }

    private Handler handler = new Handler()
    {
        @SuppressWarnings("deprecation")
        @Override
        public void handleMessage(android.os.Message msg)
        {
            try
            {
                Intent intent = null;
                intent = new Intent(SplashActivity1.this,
                        SplashActivity2.class);
                startActivity(intent);
                overridePendingTransition(R.anim.animated_activity_slide_left_in, R.anim.animated_activity_slide_right_out);
                finish();
            } catch (Exception e) {

            }
        }
    };
    @Override
    public void onAnimationEnd(Animation animation) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationRepeat(Animation animation) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationStart(Animation animation) {
        // TODO Auto-generated method stub

    }


}
jigar
  • 1,571
  • 6
  • 23
  • 46

3 Answers3

3

Define a new animation style in your styles.xml, as follows

    <style name="MyTheme.Window" parent="@android:style/Animation.Activity">
      <item name="android:activityOpenEnterAnimation">@anim/your_desired_animation</item>
      <item name="android:activityOpenExitAnimation">@anim/your_desired_animation</item>
      <item name="android:activityCloseEnterAnimation">@anim/your_desired_animation</item>
      <item name="android:activityCloseExitAnimation">@anim/your_desired_animation</item>
    </style>

Then set this style in a theme (themes.xml) as follows :

<style name="MyTheme" parent="@android:style/Theme">
      <item name="android:windowAnimationStyle">@style/MyTheme.Window</item>
</style>

And then you can simply set these themes to every activity in your AndroidManifest.xml as follows:

<activity 
  android:name="your_activity" 
  android:theme="@style/MyTheme">
</activity>
Ritesh Gune
  • 16,629
  • 6
  • 44
  • 72
2

Replace "view" with your outermost Layout name. Write this code in your oncreate method of the activity that you want the animation to occur.

 animationSlideInLeft = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
 animationSlideInLeft.setDuration(1500);

            animationSlideInLeft.setAnimationListener(new AnimationListener(){
                @Override
                public void onAnimationEnd(Animation animation) {
                    // if you need to do something
                }

                @Override
                public void onAnimationRepeat(Animation animation) {    
                }

                @Override
                public void onAnimationStart(Animation animation) {
            }});

            view.startAnimation(animationSlideInLeft);
canova
  • 3,965
  • 2
  • 22
  • 39
  • Please check my updated question and tell me what changes should i do in that.."SplashActivity1.startAnimation(animationSlideInleft);" shows error that make method – jigar Aug 13 '13 at 11:27
  • inside your R.layout.activity_splash1 layout, give an id to your outermost layout (ex: LinearLayout). Then inside your code, define that layout as view = (LinearLayout)findViewById(R.id.myOutLayout); after this, write view.startAnimation(animationSlideInleft); – canova Aug 13 '13 at 11:32
  • i have updated my code as per suggested pls chek it..its give me error...null pointer – jigar Aug 13 '13 at 11:53
  • view=(RelativeLayout)findViewById(R.id.splash1); write this line after setContentView(R.layout.activity_splash1);. and you can set duration as well. Check my updated answer for duration setting. – canova Aug 13 '13 at 11:58
1

Set the background colour of your activity to white(#FFF), create an imageview and the imageview should be transparent and then write a XML animation using the amount of drawables you want. Finally start the animation in the imageview. This should do the trick.

Eric B.
  • 4,622
  • 2
  • 18
  • 33