3

次の問題があります。携帯電話を縦向きから横向きに変更すると、画像が消えてしまいます。私が現在の活動を行っていて、方向を変えると、それは完全にうまく機能します。別のアクティビティに行って戻ってきても、まったく問題なく動作します。しかし問題は、メイン ページに戻った後、最初に方向を変更したときに onConfigurationChanged() が呼び出されないことです。戻ったときに画像が表示される/正しく表示されない場合がありますが、最初に向きを変更したときに onConfigurationChanged() が呼び出されず、向きを2回変更するまで画像が表示されます/表示されません。皆さんの助けをいただければ幸いです。ここに私のコードのいくつかの部分があります。configChange- orientation パーミッションを既にマニフェストに入れているので、問題ありません。

    @Override
    public void onConfigurationChanged(Configuration newConfig) {L.p("configList",5200184);
        super.onConfigurationChanged(newConfig);

        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE&&isVertical==true) {

            Logo.setVisibility(ImageView.GONE);
            mainLogo.setVisibility(ImageView.GONE);
            isHorizontal=true;

        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT&&isHorizontal==true){

            Logo.setVisibility(ImageView.VISIBLE);
            mainLogo.setVisibility(ImageView.VISIBLE);
            isVertical=true;
        }
      }




    @Override
    protected void onResume() {L.p("onResumeList", 5200113);
        super.onResume();
        Context ctx = getApplicationContext();
  WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
  Display display = wm.getDefaultDisplay();

        if((display.getOrientation() == Surface.ROTATION_90) || (display.getOrientation() == Surface.ROTATION_270))
            {//Horizontal
            L.p("you are resuming horizontal",5200124);
            Logo.setVisibility(ImageView.INVISIBLE);
    mainLogo.setVisibility(ImageView.INVISIBLE);    
    isHorizontal=true;
    //isVertical=false;
            }
        else {//Vertical
            L.p("you are resuming vertical",5200131);
    Logo.setVisibility(ImageView.VISIBLE);
    mainLogo.setVisibility(ImageView.VISIBLE);
    isVertical=true;
  //    isHorizontal=false;
    }
        tracker.trackPageView("/deviceList");
    }

ありがとう!

4

4 に答える 4

0

向きの変更をオーバーライドする必要はありません。layout-land画像を含まない (または画像が非表示/非表示に設定されている) フォルダーに新しいレイアウト ファイルを宣言するだけです。向きを変更すると、アクティビティはそのレイアウトを onCreate に読み込みます。

于 2012-02-15T01:01:12.310 に答える
0

なぜ isHorizo​​ntal と isVertical をチェックするのですか? それらの1つがfalseであり、それがif条件に失敗する可能性はありますか?

于 2012-02-15T01:01:39.667 に答える
0

inの下でそれぞれの属性を宣言しない限り、onConfigurationChanged()メソッドは呼び出されません。<activity>AndroidManifest.xml

android:configChanges="orientation"
于 2012-02-15T01:07:29.103 に答える