«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

[android] Button의 color변경 (pressed, focus, default) 과 그라데이션 주기. 본문

Android/Tip&Tech

[android] Button의 color변경 (pressed, focus, default) 과 그라데이션 주기.

행복한 수지아빠 2011. 5. 27. 14:53

출처 : http://www.cyworld.com/prizm0911/3284619

아래 xml파일을 res/values 에 생성.

 

1.--------------------------------------------------------------------------------------------

 

color.xml

 

<?xml version="1.0" encoding="UTF-8"?> 
<resources>          
 <color name="pressed1">#959ca4</color> 
 <color name="pressed2">#646d79</color>
 
 <color name="focused1">#959ca4</color> 
 <color name="focused2">#646d79</color> 
  
 <color name="default1">#686e77</color> 
 <color name="default2">#40474f</color> 
 
 <color name="stroke">#00000000</color> 
</resources>

 

2.--------------------------------------------------------------------------------------------

 

아래 xml파일을 res 에 해당 drawable 에 생성.

여기서는 위 1 번에서 설정된 색을 가져와서 셋팅하게됩니다.

 

예> @color/pressed1 = color = xml파일, pressed1 = name

 

selector.xml

 

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
 
    <item android:state_pressed="true" > 
        <shape> 
            <gradient 
                android:startColor="@color/pressed1
                android:endColor="@color/pressed2
                android:angle="270" /> 
            <stroke 
                android:width="3dp" 
                color="@color/stroke" /> 
            <corners 
                android:radius="3dp" /> 
            <padding 
                android:left="10dp" 
                android:top="10dp" 
                android:right="10dp" 
                android:bottom="10dp" /> 
        </shape> 
    </item>

    <item android:state_focused="true" > 
        <shape> 
            <gradient 
                android:endColor="@color/focused1
                android:startColor="@color/focused2
                android:angle="270" /> 
            <stroke 
                android:width="3dp" 
                color="@color/stroke" /> 
            <corners 
                android:radius="3dp" /> 
            <padding 
                android:left="10dp" 
                android:top="10dp" 
                android:right="10dp" 
                android:bottom="10dp" /> 
        </shape> 
    </item> 
 
    <item>         
        <shape> 
            <gradient 
                android:endColor="@color/default1
                android:startColor="@color/default2
                android:angle="270" /> 
            <stroke 
                android:width="3dp" 
                color="@color/stroke" /> 
            <corners 
                android:radius="3dp" /> 
            <padding 
                android:left="10dp" 
                android:top="10dp" 
                android:right="10dp" 
                android:bottom="10dp" /> 
        </shape> 
    </item>

</selector>

 

3.--------------------------------------------------------------------------------------------

 

해당 레이아웃 xml 파일 Button에 selector.xml 적용.

Button의 background에 drawable에 생성해둔 selector.xml 을 적용함으로써...

클릭, 포커스, 기본 색이 selector.xml 의 설정된 gradient 칼라로 적용되고, 코너라운드, 테두리, 간격등의 설정이 함께 적용됩니다.

 

main.xml

 

<--  생략  -->

 

   <Button
   android:layout_width="215px"
   android:layout_height="wrap_content"
   android:layout_marginTop="5px"
   android:layout_marginLeft="5px"
   android:layout_alignParentLeft="true"
   android:background="@drawable/selector"
   />

 

<-- 생략 -->

 

--------------------------------------------------------------------------------------------

 

아래는 제가 만들어본 버튼에 위 과정을 토대로 입혀본 결과.

왼쪽은 기본, 오른쪽은 포커스 되었을때와 클릭했을때 결과입니다.

color.xml 에서 색을 적절하게 변경하고 selector.xml 에서 설정등을 적절하게 변경해서 쓰면 좀더 이쁘고 유용하겠지요.

 

 

 


'Android > Tip&Tech' 카테고리의 다른 글

[펌]c2dm 관련 팁  (0) 2011.05.30
Working with XML on Android  (0) 2011.05.28
[펌]SimpleCursorAdapter와 spinner 연결시 getSelectedItem()  (0) 2011.05.25
android chart 관련  (0) 2011.05.25
DB변경시 어댑터 자동변경 코드  (0) 2011.05.25