質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

3355閲覧

横固定Activityから横固定Activityへの画面遷移(finish())時に一瞬縦に回転してしまう

k.has

総合スコア34

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/03/01 21:29

横固定のActivity(Play.java)をfinish()して、横固定のメインActivityに戻る際に元のActivityが一瞬縦に回転してフリーズしてしまいます。これが何ともかっこわるいのでスムースに画面遷移させたいのですがうまくいきません。

画面遷移時のアニメーションを無効(http://wada811.blogspot.com/2013/05/invalidate-activity-animation.html)にしているつもりなんですがやっぱり回転してしまいます。無効化出来ていないのでしょうか・・・

ご教授願いますm(_ _)m

Main.java

public class Play extends Activity { final int TIME_INTERVAL = 36000; final int TIME_INTERVAL_LONG = 38000; SharedPreferences sp; // setting of Timer final int NUM_TIMER = 13; Timer mTimer[] = new Timer[NUM_TIMER]; SurfaceBoy surfaceBoy; SurfaceDog surfaceDog; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.play); sp = getSharedPreferences("pref", MODE_PRIVATE); surfaceBoy = new SurfaceBoy(this); surfaceDog = new SurfaceDog(this, sp); //同じようなSurfaceViewが11個あります以下略 } @Override public void onResume() { super.onResume(); findViewById(R.id.ib_play_home).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { for (int i = 0; i < NUM_TIMER; i++) { if (mTimer[i] != null) mTimer[i].cancel(); } finish(); } }); // backgroung animation setAnimation(); // setting of overlaying surfaceView final ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); for (int i = 0; i < NUM_TIMER; i++) { mTimer[i] = new Timer(); } // switch 0:OFF 1:ON int dog = 0; int mTime = 0; int repeat = 1; if (dog == 1) { mTimer[0].schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { addContentView(surfaceDog, params); addContentView(surfaceBoy, params); } }); } }, 0); mTime += TIME_INTERVAL; } } // Animation of sun & cloud public void setAnimation() { Animation animSun = AnimationUtils.loadAnimation(Play.this, R.anim.anim_sun); Animation animCloud = AnimationUtils.loadAnimation(Play.this, R.anim.anim_cloud); findViewById(R.id.iv_back_sun).setAnimation(animSun); findViewById(R.id.iv_back_cloud).setAnimation(animCloud); animSun.start(); animCloud.start(); } @Override public void onPause() { super.onPause(); cancelAndRemove(); Log.v("","play onPause is running"); } public void cancelAndRemove() { for (int i = 0; i < NUM_TIMER; i++) { if (mTimer[i] != null){ mTimer[i].cancel(); mTimer[i] = null; } } ViewGroup vg = (ViewGroup) surfaceBoy.getParent(); if (vg != null) { vg.removeView(surfaceBoy); if (surfaceDog != null) vg.removeView(surfaceDog); } finish(); } }

Manifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.whatsthis" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/icon_dog" android:label="@string/app_name" > <activity android:name=".Main" android:label="@string/app_name" android:screenOrientation="landscape" android:theme="@style/MyTheme" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Play" android:screenOrientation="landscape" android:theme="@style/MyTheme" > </activity> </application> </manifest>

styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Application theme. --> <style name="MyTheme" parent="android:Theme.Light.NoTitleBar.Fullscreen"> <item name="android:soundEffectsEnabled">false</item> <item name="android:windowAnimationStyle">@android:style/Animation</item> <item name="android:activityOpenEnterAnimation">@null</item> <item name="android:activityOpenExitAnimation">@null</item> <item name="android:activityCloseEnterAnimation">@null</item> <item name="android:activityCloseExitAnimation">@null</item> </style> <style name="CustomCheckBox" parent="android:Widget.CompoundButton.CheckBox"> <item name="android:button">@drawable/cb_fragment</item> </style> <style name="CustomCheckBoxSet" parent="android:Widget.CompoundButton.CheckBox"> <item name="android:button">@drawable/cb_set</item> </style> </resources>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

画面の縦横入れ替えのアニメーションは画面遷移のアニメーションとは全くの別物です。

縦横入れ替えのアニメーションはOSによって開始されるため、これを抑制する方法はないと思います。

縦横入れ替えのアニメーションが動くときに端末はどのような持ち方をしていますか?

投稿2016/03/02 04:24

編集2016/03/02 04:27
yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k.has

2016/03/02 20:49

なるほど!そうなんですねー! 持ち方はずっと横のままなんですが、時々アニメーションが動かずに遷移する時もあります。ちなみにデバイスはGaraxySのSC-04でOSのバージョンは4.4.2です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問