2011-11-18 8 views
14

私はAndroidの携帯電話とタブレットの両方と互換性があることを目的としたAndroidプロジェクトに取り組んでいます。タブレットでは、アプリがうまく動作しているように見えます。しかし、電話では、プログラム的にもレイアウトにも問題なく走っています(10.1インチ画面での作業は4インチ画面よりもはるかに簡単です)。これらの問題のいくつかを解決するために、私たちは画面の向きを無効にすることを決めましたが、一時的に少なくとも電話のバージョンについてのみ行いました。電話機の画面の向きをロックするにはどうすればいいですか? (Android)

質問は簡単ですが、Androidタブレットを有効にしたまま、Android携帯の画面の向きを無効にするにはどうすればよいですか?私はマニフェストファイルでこれを行うことができることを知っていますが、これは私が信じているタブレットの向きも固定します。

答えて

11

アプリケーションからも実行できます。

Lock screen orientation (Android)
http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

と属性はここで見つけることができます:

http://developer.android.com/reference/android/R.attr.html#screenOrientation


を検出するために、Androidのデバイスは、タブレットやスマートフォンであれば、あなたはこのソリューションを使用する必要があります(異なるSO Q &A)、https://stackoverflow.com/a/9308284/492624

+1

なぜこの答えは有効なものとして設定されているあなたの活動に

は、メソッドを作成しますか?電話やタブレットでさまざまな動作を設定する方法については説明していません。 –

2

実行時にこれを処理して画面サイズを取得してからRunTimeConfigurationChangesを作成すると、そのように見えることはありません。次に役立つかもしれません。

お試しくださいHandling Runtime Changes

そして

おかげ..あなたがそれに成功を得るなら、私に知らせてください。

+0

私はあなたに同意しますが、それを行うことができます。これを行うには: 1.デバイスの画面解像度を取得します。 2.アクティビティのonConfigurationChangedメソッドをオーバーライドします。 –

1

1つの方法は、電話のバージョンとタブレットのバージョンに対して個別のアクティビティを作成することです。そして、その方向をアンドロイドマニフェストファイルに修正します。もう一つの方法は、現在使われているデバイスをチェックして、コードを使用して、アクティビティ自体に配向を固定することで、個別の活動を作成

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

は、タブと電話のバージョンを維持するためにその簡単なように、より良い方法です。

10

まず、これを防止するようにしてください。私は複雑な問題のための簡単な修正だったので、それをやりました。しかし、実際には、これをやらなければならないことを防ぐようにしてください。

本当にやり直したい場合は、次のコードを使用してください。

private boolean isTablet() { 
     return (this.getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
    } 

そして、あなたのonCreateで次の手順を実行します:

if (!isTablet()) { 
     // stop screen rotation on phones because <explain> 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 
関連する問題