[Android] 액티비티 화면 방향 설정


액티비티 화면은 크게 생각하면 "가로" , "세로" 두가지로 되어있고 폰을 360도 회전한다고 생각했을때 총 4가지의 방향이 있습니다.


보통 매니페스트에서 액티비티 내 속성에 아래와 같이 추가합니다.


<activity
android:name=".test"
android:screenOrientation="화면방향값">
</activity>


이번 포스팅에는 위의 screenOrientation 의 속성에 대해 정리해볼까 하는데요. 예전에 안드로이드 OS 2.2 (프로요) 개발당시에 봤었던 속성 보다 훨씬 많이 있어서 깜짝 놀랬습니다.



<ScreenOrientation 속성 종류>



속성

설명

unspecified

 기본값. 시스템에서 방향을 결정합니다. 선택된 디바이스마다 방향은 달라질 수 있습니다.

behind

 액티비티 스택에서 이전의 액티비티 방향과 같은 방향을 표시합니다.

landscape

 액티비티를 가로 방향으로 고정할때 사용됩니다.

portrait

 액티비티를 세로 방향으로 고정할때 사용됩니다.

reverseLandscape

 가로방향 고정, 일반적인 방향에서 역방향으로 표시합니다. (API 9 [OS ver 2.3] 추가)

reversePortrait

 세로방향 고정, 일반적인 방향에서 역방향으로 표시합니다. (API 9 [OS ver 2.3] 추가)

sensorLandscape

 가로방향 고정, 센서에 따라 정/역방향으로 표시합니다. (API 9 [OS ver 2.3] 추가)

sensorPortrait

 세로방향 고정, 센서에 따라 정/역방향으로 표시합니다. (API 9 [OS ver 2.3] 추가)

userLandscape

 가로방향 고정, 센서 장치 및 사용자 센서 기본설정에 따라 정/역방향으로 표시될 수 있습니다. 만약 센서 기반 회전 기능이 고정되어 있는 경우에는 landscape와 동일하게 동작하고 그렇지 않으면 sensorLandscape와 동일하게 동작합니다.(API 18 [OS ver 4.3] 추가)

userPortrait

 세로방향 고정, 센서 장치 및 사용자 센서 기본설정에 따라 정/역방향으로 표시될 수 있습니다. 만약 센서 기반 회전 기능이 고정되어 있는 경우에는 portrait와 동일하게 동작하고 그렇지 않으면 sensorPortrait와 동일하게 동작합니다.(API 18 [OS ver 4.3] 추가)

sensor

 방향은 기기 회전 센서에 의해 결정됩니다. 화면 방향은 사용자가 기기를 회전시킬때 변경되며 일부 장치에서는 4가지 방향으로 회전하지만 기본적으로 4가지 방향으로 회전하지 않습니다. 4방향을 모두 허용하려면 fullSensor 를 사용해야합니다.

fullSensor

 방향은 4 방향 중 하나의 기기 방향 센서에 의해 결정됩니다. (API 9 [OS ver 2.3] 추가)

nosensor

 방향은 물리적인 센서를 참조하지 않고 결정됩니다. 센서가 무시되므로 화면은 사용자가 움직이는 방법을 기반하지 하지 않습니다. 이 차이점을 제외하고 시스템은 unspecified 와 동일한 규정을 사용하여 방향을 선택합니다.

user

 사용자가 현재 선호하는 방향을 표시합니다.

fullUser

 센서 기반 회전 기능이 잠긴 경우에는 user 와 동일한 기능으로 동작하고, 그렇지 않을때에는 fullSensor와 동일하게 동작합니다.(API 18 [OS ver 4.3] 추가)

locked

 무엇이든지 현재의 회전으로 방향을 잠급니다.(API 18 [OS ver 4.3] 추가)


보통 ScreenOrientation 옵션은 화면을 고정할때 사용하는 옵션이므로 위의 표에서 landscape, portrait 속성을 가장 많이 사용합니다.


위의 설명글은 구글플레이 레퍼런스 사이트를 참고하여 해석한 부분인데요. 내용이 이상한 부분 있으시면 댓글로 말씀해주시면 감사하겠습니다.

저작자 표시
신고
Creative Commons License
Creative Commons License
Posted by 냥아
화면 크기는 다음과 같이 구할 수 있습니다.


public int getLcdSIzeWidth()
{
    return ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth();
}   //가로 크기
    
public int getLcdSIzeHeight()
{
    return ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight();
}    // 세로 크기

Log.d("MyTag", "getLcdSIzeWidth() :" + getLcdSIzeWidth());
Log.d("MyTag", "getLcdSIzeHeight() :" + getLcdSIzeHeight());
저작자 표시
신고
Creative Commons License
Creative Commons License
Posted by 냥아
새해가 밝았네요 모두 새해복 많이 받으셨나요?
항상 블로그를 운영하면서 글을 제때제때 못올리다보니
공부한 내용들을  하나도 올리지 못했네요 ㅠ.ㅠ
이제부터라도 꾸준하게 맘 잡고 올리도록 하겠습니다.

이번에 적을 내용은 버튼을 클릭했을 때 반응을 하는 부분에 대하여 글을 올립니다.

안드로이드 개발시 버튼 클릭 할 때 개발자가 준비한 버튼 이미지나 색상들을 적용시켜서 동작 하는데요.
제가 설명할 방법은 두가지가 됩니다.

1. 버튼 클릭 시 Touch 이벤트를 적용, ACTION_DOWN 과 ACTION_UP 을 이용해서 버튼의 그림을 변경.

about_bt = (Button)findViewById(R.id.about_bt);
about_bt.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {

				Intent intent = new Intent(this, 액티비티 실행할 클래스);
				startActivity(intent); // 클릭 이벤트에 액티비티 실행				
			}
		});		
	about_bt.setOnTouchListener(new OnTouchListener() {	//버튼 터치시 이벤트		
			public boolean onTouch(View v, MotionEvent event) {
				if(event.getAction() == MotionEvent.ACTION_DOWN) // 버튼을 누르고 있을 때
					about_bt.setBackgroundResource(drawable.이미지);
				if(event.getAction() == MotionEvent.ACTION_UP){ //버튼에서 손을 떼었을 때 
					about_bt.setBackgroundResource(drawable.이미지); 
				}
				return false;
			}
		}); 

예전에는 위와 같은 방법을 사용해서 default 이미지와 클릭시 이미지를 번갈아 사용을 했었습니다.

요즘 사용하는 방법은 xml Selector 를 사용하는 방법인데요 이는 다음과 같습니다.

2. xml에서 selector 를 구현하는 방법

우선 xml 폴더나 drawable 등의 폴더에서 임의의 xml을 생성합니다.

그리고 xml을 다음과 같이 설정합니다.




	
	
	
	




그리고 이 xml 파일을 해당 버튼의 android:background="해당 xml 파일" 와 같이 설정해주시면 이벤트가 잘 적용되는 것을 확인할 수 있습니다.

두가지 방법에서 편한 방법을 사용하시면 될듯 한데 저는 2번 방법이 요즘에 무지 편한거 같네요 소스 보기도 편한거 같고 하하
글 읽어 주셔서 감사하구요~ 오늘도 좋은 하루되세요^^

 
저작자 표시
신고
Creative Commons License
Creative Commons License
Posted by 냥아


티스토리 툴바