[안드로이드] SlidingDrawer과 세로화면 고정
안드로이드 SlidingDrawer과 세로화면 고정 |
■ SlidingDrawer는 어떤 객체를 안보이게 해놨다가 핸들(Handle)버튼을 클릭하면 미끄러지듯이 나타나고, 다시 핸들 버튼을 누르면 사라지게 하는 움직이는 객체입니다.
■ 간단한 예제를 하나 만들어 보겠습니다. 이 예제는 이미지가 하나 있고 아래쪽에 핸들버튼을 배치하고, 버튼을 클릭하면 아래쪽에 숨겨져 있던 이미지가 위쪽으로 올라 오면서 원래 있던 이미지와 겹쳐지면서 버튼이 위쪽으로 올라가게 됩니다. 다시 버튼을 누르면 이미지가 아래쪾으로 사라지면서 원래의 이미지만 나타나게 하는 형태입니다. 두 이미지가 겹쳐지는걸 확인하기 위해서 나중에 나타날 그림의 아래쪾을 일부러 공백으로 만들어서 테스트 해보겠습니다..
■ 위 그림은 실행을 해서 핸들버튼을 클릭한 상태인데요. 다시 버튼을 클릭하면 위쪽의 이미지는 사라지게 되고 아래쪽 그림만 그대로 있게 됩니다. 다음과 같이 이미지를 준비했습니다.
■ SlidingDrawer 클래스의 상속을 간단하게 살펴보고 넘어가겠습니다.
■ SlidingDrawer는 그 자체에 기본적으로 움직이는 로직이 있어서 Activity에서 따로 설정을 해주지 않아도 미끄러지는듯한 효과를 낼 수 있습니다.
■ 레이아웃의 배치를 살펴보겠습니다.
■ 그림처럼 전체를 FrameLayout으로 묶어주고, ImageView와 SlidingDrawer과 핸들버튼으로 사용할 버튼을 배치하고 있습니다. xml 소스를 보면서 자세히 살펴보죠
■ 이미지뷰에 준비한 그림들을 배치하고, 핸들 버튼을 [ android:handle ]속성에서 정의하고 있으며, 콘텐트 영역은 [ android:content ]속성에서 정의하고 있습니다. 그리고 핸들 버튼으로 사용할 버튼 객체를 배치하고, 아이디를 위에서 정의한 "handle"속성과 동일하게 하고 있습니다. 그리고 클릭했을때 나타날 슬라이딩 효과와 함께 나타날 콘텐트 영역을 "LinearLayout"으로 정의하고, 아이디로 "content"속성과 동일하게 하고 있습니다.
■ 이 예제의 경우 가로화면으로 보면 그림의 위치가 달라지게 되므로 세로화면으로만 고정하도록 하겠습니다. 이것은 androidManifest.xml파일에서 설정하는데요. 다음과 같습니다.
■ 매니페스트 파일에서 그림처럼 액티비티를 설정하는 부분중 [android:screenOrientation]을 "portrait"로 설정을 하면 어플을 실행할때 화을 회전하려고 단말기를 옆으로 눕혀도 항상 세로화면으로 고정이 되어 나타나게 됩니다.
■ 액티비티 파일은 따로 작성해줄 필요 없이 기본 생성되는 activity_main.xml 파일을 출력하는 내용으로 그대로 실행을 하면 됩니다.
■ AVD에서 실행된 내용을 살펴보겠습니다.
■ 프로젝트를 실행을 하면 그림처럼 한장의 사진과 핸들버튼이 출력이 됩니다. 버튼을 클릭해 보면 다음 그림처럼 또 다른 사진이 나타나게 되면서 버튼이 위쪽으로 올라갑니다.
■ 이런 기능이 있는 SlidingDrawer는 이벤트나 광고 또는 확장 메뉴로 사용하기에 유용한 툴입니다.