ユーザーが画面を回転させるときに、たとえば変数の値などを変更したいとします。オリエンテーションの変更で何かをする
は、私は私のようなものを使用して方向性を持つことができます知っている:
が、私はif portrait do this, if landscape do this
を定義する必要はありません。
私は現在の方向をキャッチして、私が望むことをやりたいと思います。
ユーザーが画面を回転させるときに、たとえば変数の値などを変更したいとします。オリエンテーションの変更で何かをする
は、私は私のようなものを使用して方向性を持つことができます知っている:
が、私はif portrait do this, if landscape do this
を定義する必要はありません。
私は現在の方向をキャッチして、私が望むことをやりたいと思います。
一部のデバイスでは、void onConfigurationChanged()がクラッシュすることがあります。ユーザーはこのコードを使用して現在の画面の向きを取得します。
public int getScreenOrientation()
{
Display getOrient = getActivity().getWindowManager().getDefaultDisplay();
int orientation = Configuration.ORIENTATION_UNDEFINED;
if(getOrient.getWidth()==getOrient.getHeight()){
orientation = Configuration.ORIENTATION_SQUARE;
} else{
if(getOrient.getWidth() < getOrient.getHeight()){
orientation = Configuration.ORIENTATION_PORTRAIT;
}else {
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
return orientation;
}
と活動のonConfigurationChangedメソッドを使用し
if (orientation==1) // 1 for Configuration.ORIENTATION_PORTRAIT
{ // 2 for Configuration.ORIENTATION_LANDSCAPE
//your code // 0 for Configuration.ORIENTATION_SQUARE
}
を使用しています。次のコードを参照してください:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
あなたはまた、アンドロイドを含めるようにマニフェストファイル内の適切な要素を編集する必要があります。
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
注:アンドロイド3.2(API configChangesちょうど以下のコードを参照してくださいレベル13)以上では、デバイスがポートレートと風景の向きを切り替えると「画面サイズ」も変化します。したがって、APIレベル13以上の開発時に方向変更によるランタイムの再起動を防止するには、APIレベル13以上でandroid:configChanges = "orientation | screenSize"をデカールする必要があります。これはあなたを助ける
・ホープ.. :)
ありがとうございますが、私はあなたに言ったように、私は画面の向きを取得したくありません。向きが変わったら何かしたいです。 :) – George
いつオリエンテーションをいつ変更するのですかonConfigurationChanged()メソッドは、onConfigurationChanged()メソッドにコードを入れてください。これは親クラスのメソッドをオーバーライドしていますので、オリエンテーションについて心配しないでください。オリエンテーションchenge –
これは、答えが100%あなたのものでない場合は、[Android Docs](https://developer.android.com/guide/topics/resources/runtime-changes.html)から貼り付けて、あなたのソースを引用してください –
あなたの活動のonConfigurationChangedメソッドをオーバーライドして、現在の向きを確認し、あなたがあなたのドンを意味しています。この
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Check orientation
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
DoSomethingForLandscapeOrientation();();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
DoSomethingForPortraitOrientation();
}
}
private void DoSomethingForLandscapeOrientation(){
Log.i("Method For","Landscape");
}
private void DoSomethingForPortraitOrientation(){
Log.i("Method For","Portrait");
}
ようにしたいものは何でもしなければなりません 'public void onConfigurationChanged(Configuration newConfig)' –