Disable default animation from Portrait to Landscape

Jorge Cevallos picture Jorge Cevallos · Aug 14, 2012 · Viewed 14.6k times · Source

I have an app with several 'normal' activities which can run on either landscape or portrait. They are designed for and mostly used on portrait.

This app has one single activity which uses the camera and is locked on landscape. I 'simulate' this activity is on portrait by rotating images and texts 90 degree, so it looks like the rest of activities.

On some device, such as Samsung Galaxy Tab 7 and Galaxy S3, a rotation animation is shown when going from a normal portrait activity to camera landscape activity and back. This is confusing for user because landscape activity simulates being on portrait.

Is there a way to remove this rotation animation? Ideally I'd like to change to default portrait to portrait animation, but just removing rotation animation would be enough.

I've tried

overridePendingTransition(0, 0);

an other variations of that method without success.

[ADDED]

Following suggestions by @igalarzab, @Georg and @Joe, I've done this (still with no luck):

  • Added android:configChanges="orientation|screenSize" to Manifest
  • Added onConfigurationChanged
  • Created a dummy animation which does nothing and added overridePendingTransition(R.anim.nothing, R.anim.nothing);

I had these results:

  • onConfigurationChanged is called only when rotating same Activity (Activity A on portrait -> Activity A on landscape). But it's not called when going from Activity A on portrait -> Activity B on landscape
  • This prevented Activity from being restarted when rotating, but it did NOT removed rotation animation (tested on Galaxy S3, Galaxy Nexus, Galaxy Tab 7.0 and Galaxy Tab 10.1)
  • overridePendingTransition(R.anim.nothing, R.anim.nothing); removed normal transitions (portrait->portrait and landscape->landscape) but it didn't removed rotation animation (portrait->landscape and vice versa).

[VIDEO]

I've uploaded a video that shows animation I want to disable. This happens when changing from camera activity (locked to landscape) to other activity while holding phone on portrait:

http://youtu.be/T79Q1P_5_Ck

Answer

hackbod picture hackbod · Aug 28, 2012

Sorry there is no way to control the rotation animation. This is done way outside of your app, deep in the window manager where it takes a screenshot of the current screen, resizes and rebuilds the UI behind it, and then runs a built-in animation to transition from the original screenshot to the new rebuilt UI. There is no way to modify this behavior when the screen rotation changes.