일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Data REST
- IntelliJ
- batch
- docker
- spring pid
- spring-webmvc #코드읽기
- 세미나
- JPA mapping
- spring batch 코드
- ApplicationPidFileWriter
- ORM
- 톰캣
- spring camp
- JUnit
- tomcat
- JPA
- Spring Batch
- spring-mvc
- 코드 리뷰
- spring-webmvc
- spring bean
- Spring
- spring boot
- static inner class
- spring jpa
- Spring Data REST
- REST API
- SuperTypeToken
- Spring Data JPA
- spring boot tomcat
- Today
- 69
- Total
- 822,612
woniper
Android XML Selector 생성 및 적용하기 본문
안드로이드에서 Selector를 xml로 만들어서 Button이나 ListView 등 클릭 이벤트가 들어가는 View에 적용할 수 있다. 기본으로 제공하는 View를 특별히 커스텀하게 사용하지 않는 이상 기본 제공하는 Selector기능을 사용할 수 있지만, View를 커스텀하게 사용하는 경우가 대부분이기 때문에 Selector를 사용해야한다.
예를 들면 Button을 눌렀을때(pressed)와 누르지 않았을 경우(nonPressed)에 이미지, 또는 색을 다르게 구분하고 싶을때 사용하는 것이 바로 Selector이다.
1. Drawable 폴더 생성
안드로이드 프로젝트를 생성하면 기본적으로 drawable 폴더는 추가 되어 있지 않기 때문에 사용자가 추가해 주어야한다. res폴더 밑에 drawable 디렉토리를 생성한다.
new > Directory > drawable
2. Color Selector 만들기
Color를 이용한 Selector든 Image를 이용한 Selector 모두 android:drawable="" 속성에 적용한다.
Color Selector는 색상값을 바로 입력하면 사용이 불가능하고, color.xml을 만들어 주어야한다.
- color.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<resources>
<color name="pressed">#B3CA6F</color>
<color name="nonpressed">#4D5052</color>
</resources>
color.xml파일은 res/values 폴더에 생성한다.
- btn_color_selector.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<!--color selector-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 클릭 했을 경우 -->
<item android:state_pressed="true" android:drawable="@color/pressed"/>
<!-- 클릭하지 않은 경우 -->
<item android:state_pressed="false" android:drawable="@color/nonpressed"/>
</selector>
3. Image Selector 만들기
pressed(눌렀을때) 이미지와 nonpressed(누르지 않았을때) 이미지를 res/drawable에 추가한다.
- btn_image_selector.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<!--image selector-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 클릭 했을 경우 -->
<item android:state_pressed="true" android:drawable="@drawable/btn_pressed"/>
<!-- 클릭하지 않은 경우 -->
<item android:state_pressed="false" android:drawable="@drawable/btn_nonpressed"/>
</selector>
4. Selector 적용하기
- main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:layout_weight="2"
android:text="color"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/btn_color_selector"/>
<Button
android:layout_weight="2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/btn_image_selector"/>
</LinearLayout>
5. 적용 화면
nonPressed 상태 pressed 상태
6. Press 상태 종류
- android:state_enable : 사용 가능 상태
- android:state_selected : 선택 상태
- android:state_pressed : 클릭 상태 (눌려있는 경우)
- android:state_focused : 포커스 상태
- android:state_checked : 체크된 상태
'Android' 카테고리의 다른 글
Android Intent를 이용한 Activity간 Data 공유 (4) | 2014.08.02 |
---|---|
Android XML Selector 생성 및 적용하기 (5) | 2014.08.02 |
[Android] 어플리케이션 로딩화면(Splash) 구현하기 (6) | 2013.06.12 |
[안드로이드]AsyncTask 설명 (1) | 2013.04.12 |
-
fff 2015.01.08 10:33 btn_color_selector.xml
이건 어디에 넣어야 하나요? -
woniper1 2015.01.08 10:36 신고 btn_image_selector.xml과 동일하게 res/drawable 폴더에 넣으면 적용가능합니다. 감사합니다.
-
selected 2015.12.05 16:50 질문 하나만 드려도 될까요?
pressed는 정상적으로 작동하는데
selected는 정상적으로 작동하지 않습니다.
저는 어플리케이션에 BGM기능을 구현하여 '메가폰'이미지를 누르면 X표시로 바뀌면서 음악이 꺼지고
한번 더 누르면 X표시가 없어지면서 음악이 다시 재생되는 기능을 만드려고 한느데
selected가 안되는데 어떻게 해야할까요..? -
woniper1 2015.12.05 16:59 신고 제가 안드로이드 개발에 손 놓은지가 좀 돼서 정확한 답변이 아닐 수 있는데요. 아마 안드로이드 버전이 올라가면서 생긴 문제일텐데요. 테스트하신 안드로이드 버전으로 이 기능을 검색해 보시면 나오실겁니다. 감사합니다
-
안드 2019.10.24 16:34 잘 보고 갑니다 ^^