티스토리 뷰



이 자료들은 팁스소프트에서 제공하는 [ 알짜배기 ] 프로그램을 이용하면 더 편리하게 볼수 있습니다.
* 알짜배기 프로그램 받기 - http://www.tipssoft.com/bulletin/tb.php/QnA/8406
* 관리자의 Tipssoft 이야기를 들어보세요 ( 트위터 ID : tipssoft )
* 안드로이드 강좌 목록 - http://www.tipssoft.com/bulletin/tb.php/old_bbs/501

기본적으로 안드로이드 어플리케이션은 기기의 방향(가로/세로)이 전환되면 액티비티를 파괴했다가
다시 생성하면서 액티비티의 화면을 다시 구성합니다. 그래서 소켓이나 데이터베이스같은 연결을
유지해야 하는 작업을 할 때 화면 방향이 전환되면서 연결을 끊었다가 다시 연결하거나 회전하기 전의
상태를 저장했다가 회전한 후에 다시 저장한 상태로 설정하는 등 추가적인 작업을 해주어야 합니다.
이 외에도 어플리케이션 특성에 따라서 가로나 세로 방향으로 고정하여 개발하는 경우도 있습니다.
이번 강좌에서는 어떻게 어플리케이션의 화면을 고정하여 사용하는지에 대해서 알아보도록 하겠습니다.
1. 기능 구현하기
어플리케이션의 회전을 방지하려면 각 액티비티의 속성에 고정하려는 방향을 명시해주어야 합니다.
해당 속성은 AndroidManifest.xml 파일에서 설정하거나 자바 클래스에서 메소드를 호출하여 설정할
수 있습니다.
1.1 AndroidMenifest.xml 파일에서 설정하기
화면을 고정하려면 <Activity> 요소의 screenOrientation 속성에 방향을 설정하는것이기 때문에
어플리케이션 내에 여러개의 액티비티를 사용하는 경우 모든 액티비티를 <application ... > 요소
내에 추가하여 screenOrientation 속성을 설정해주어야 합니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tipssoft.farm.NoRotate"
android:versionCode="1"
android:versionName="1.0">
<application android:label="@string/app_name" android:icon="@drawable/icon">

<activity android:name="ReverseRotateActivity"
android:label="@string/app_name"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="SecondActivity" android:screenOrientation="reverseLandscape"/>
<activity android:name="ThirdActivity"/>

</application>
</manifest>
screenOrientation 속성에 설정할 수 있는 화면 고정에 관한 값은 4가지이며 각 값에 따라 아래의
그림처럼 적용됩니다.
reversePortrait 와 reverseLandscape 는 안드로이드 플랫폼 버전에 따라 지원하지 않을 수도
있습니다.
1.2 액티비티 java 파일에서 설정하기
AndroidManifest.xml 파일에서 Activity 요소의 속성을 설정하지 않고, 액티비티의 java 파일에서
setRequestedOrientation 메소드를 이용하여 화면을 고정하는 방법입니다. 화면을 고정하고자하는
모든 액티비티의 java 파일에서 이 메소드를 호출해주어야 합니다.
import android.content.pm.ActivityInfo;

public class ThirdActivity extends Activity implements OnClickListener
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.third);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
setRequestedOrientation 메소드로 설정할 수 있는 화면 고정에 관한 값은 4가지이며 각 값에 따라
아래의 그림처럼 적용됩니다.

SCREEN_ORIENTATION_REVERSE_PORTRAIT 와 N_ORIENTATION_REVERSE_LANDSCAPE 는
안드로이드 플랫폼 버전에 따라 지원하지 않을 수도 있습니다.
2. 실행 화면

 

댓글