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):
I had these results:
[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
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.
This is the way how the stock camera app disables rotation animation:
private void setRotationAnimation() {
int rotationAnimation = WindowManager.LayoutParams.ROTATION_ANIMATION_CROSSFADE;
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
winParams.rotationAnimation = rotationAnimation;
win.setAttributes(winParams);
}
Note: According to API Reference and comment below, this only works:
FLAG_FULLSCREEN
flag is set for WindowManager.LayoutParams
of the ActivityYou can set in the AndroidManifest a property called android:configChanges
where you can decide which changes you want to manage in code. In this way, the rotation change animation will be disabled and you can handle it as you want in the method onConfigurationChanged
of your Activity
.
<activity
android:name=".MySuperClass"
android:label="@string/read_qrcode"
android:screenOrientation="portrait"
android:configChanges="orientation" />
android:rotationAnimation="seamless"
add this attribute in activity will reduce animation when rotate. I try to find it when i want to make smooth camera app
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With