2016-08-14 7 views
0

ユーザーが画面を回転させるときに、たとえば変数の値などを変更したいとします。オリエンテーションの変更で何かをする

は、私は私のようなものを使用して方向性を持つことができます知っている:

this

が、私はif portrait do this, if landscape do thisを定義する必要はありません。

私は現在の方向をキャッチして、私が望むことをやりたいと思います。

+0

ようにしたいものは何でもしなければなりません 'public void onConfigurationChanged(Configuration newConfig)' –

答えて

0

一部のデバイスでは、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 
} 
+0

しかし、向きに関する変更を検出したいと思います。ポートレートには '1'を使用し、横向きには' 2'を使用しません。 – George

+0

"onConfigurationChanged ()がクラッシュする可能性があります "ソース? – njzk2

0

を使用しています。次のコードを参照してください:

@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"をデカールする必要があります。これはあなたを助ける

・ホープ.. :)

+0

ありがとうございますが、私はあなたに言ったように、私は画面の向きを取得したくありません。向きが変わったら何かしたいです。 :) – George

+0

いつオリエンテーションをいつ変更するのですかonConfigurationChanged()メソッドは、onConfigurationChanged()メソッドにコードを入れてください。これは親クラスのメソッドをオーバーライドしていますので、オリエンテーションについて心配しないでください。オリエンテーションchenge –

+0

これは、答えが100%あなたのものでない場合は、[Android Docs](https://developer.android.com/guide/topics/resources/runtime-changes.html)から貼り付けて、あなたのソースを引用してください –

0

あなたの活動の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"); 
} 
関連する問題