Android animation

I had an activity (e.g. homeActivity), and when I start a new activity (say nextActivity) from my home activity, I would like to give it an animation effect similar to appearing from below. Is this possible in android?

+6
android
source share
3 answers

after calling startActivity , call overridePendingTransition with the animation identifier defined for xml to exit the activity to enter. See the docs for this method here.

+6
source share

You can prevent the default animation (slide to the right) with the Intent.FLAG_ACTIVITY_NO_ANIMATION flag in your intentions.

i.e:.

 Intent myIntent = new Intent(context, MyActivity.class); myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); context.startActivity(myIntent); 

then in your activity you just need to specify your own animation.

+2
source share
 TopListActivity topList; Vector<BitmapDrawable> images; int count = 0; public AnimationAlphaTimer(TopListActivity _topList) { this.topList = _topList; this.images = new Vector<BitmapDrawable>(); for (int i = 0; ; i++) { // LOAD IMAGES HERE } if (this.images.size() > 0) { this.topList.slide_0.setBackgroundDrawable(this.images.get(0)); if (this.images.size() > 1) { this.topList.slide_1.setBackgroundDrawable(this.images.get(1)); } } this.count = 1; } public void launch() { if (this.images.size() >= 2) { (new Timer(false)).schedule(this, 100); } } @Override public void run() { this.doit(); this.cancel(); } private void doit() { if ((this.count % 2) == 0) { AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f); animation.setStartOffset(3000); animation.setDuration(3000); animation.setFillAfter(true); animation.setAnimationListener(this); this.topList.slide_1.startAnimation(animation); } else { AlphaAnimation animation = new AlphaAnimation(0.0f, 1.0f); animation.setStartOffset(3000); animation.setDuration(3000); animation.setFillAfter(true); animation.setAnimationListener(this); this.topList.slide_1.startAnimation(animation); } } public void onAnimationEnd(Animation animation) { if ((this.count % 2) == 0) { this.topList.slide_1.setBackgroundDrawable( this.images.get((this.count + 1) % (this.images.size())) ); } else { this.topList.slide_0.setBackgroundDrawable( this.images.get((this.count + 1) % (this.images.size())) ); } this.count++; this.doit(); } public void onAnimationRepeat(Animation animation) { } public void onAnimationStart(Animation animation) { }} 

try this, i think it will work.

+1
source share

All Articles