2013-10-30 1 views
0

배경 이미지가 포함 된 활동이 있지만 가로 방향이 가로로 변경되면 이미지를 변경해야합니다. 그 때문에 onConfigurationchange()를 추가했습니다. 그러나 그것은 효과가 없습니다. 이미지가 변경되지 않습니다. 당신이 다음에 밖으로 체크 인하 안드로이드 전화 근래 경우 pls는 저에게에뮬레이터의 방향을 변경해도 배경이 변경되지 않습니다.

SamActivity.java

package com.example.samworkshop; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.res.Configuration; 
import android.view.Menu; 
import android.widget.Button; 
import android.widget.RelativeLayout; 

    public class SamActivity extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_sam); 

     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.sam, menu); 
      return true; 
     } 

     @Override 
     public void onConfigurationChanged(Configuration newConfig) { 
      super.onConfigurationChanged(newConfig); 
      RelativeLayout layout =(RelativeLayout)findViewById(R.id.sam); 
      // Checks the orientation of the screen 
      if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
          layout.setBackgroundResource(R.drawable.sam_back_land); 
      } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
       layout.setBackgroundResource(R.drawable.sam_back); 
      } 
     } 
    } 

activity_sam.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/sam" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:background="@drawable/sam_back" 
    tools:context=".SamActivity" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="250dp" 
     android:layout_height="75dp" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="39dp" 
     android:background="@drawable/buttonsel" /> 

</RelativeLayout> 
+0

onRestoreInstanceState (Bundle savedInstanceState) 메서드를 재정의하고 해당 메서드에서 배경 이미지를 변경합니다. – jyomin

답변

0

도움이됩니다. 에뮬레이터 dosnt 회전과 함께 작동합니다.

1

이미지가 정적 인 경우 (세로 1 장, 가로 1 장) 경치 용으로 두 개의 레이아웃을 작성하는 대신 layout-land/activity_sam.xml과 세로 용으로 layout/activity_sam.xml을 각각 하나씩 레이아웃 매개 변수를 지정합니다. 방향 변경이 불가능할 경우 manifest도 확인하십시오.

0

코드를 디버그하고 메소드 이 호출되지 않습니다. 매니페스트 파일 내에서 활동에 android:configChanges을 지정하지 않았으므로 해당 활동에서 처리 할 하나 이상의 구성 변경 사항을 처리합니다. 양 배경에 같은 이름을 지정

그럼 내가 활동 태그 아래에 매니페스트 파일 안에

android:configChanges="keyboardHidden|orientation|screenSize" 

을 추가하고 마법 :이

<activity 
      android:name="SamActivity " 
      android:configChanges="keyboardHidden|orientation|screenSize" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Light.NoTitleBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
0

같은

처럼 일 이미지를 선택하고 초상화로 원하는 이미지를 일반 드로어 블 폴더에 넣고 원하는 이미지를 "드로어 블 랜드"라는 새 폴더에 가로로 놓습니다. onConfigurationChanged 메소드가 필요 없습니다. 이것이 효과가 있기를 바랍니다. 가난한 영어에 대한 죄송합니다.

관련 문제