별다르게 차이는 없다.
위젯 자체가 상속이기 때문에 다들 비슷하다고 할 수 있다.
상태 drawable : 눌르냐 안누르냐에 따라 다른 모양을 보여줄 수 있다.
transition drawable
shape drawable
drawable > finger_drawable.xml
xml파일 작성하고,
button > background 속성에
xml 파일을 지정!!!
finger_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/rock" />
<item android:drawable="@drawable/finger_pressed" />
</selector>
andriod api 기본 속성을 이용해서 작성
selector -> shape 로 변경
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="200dp" android:height="120dp"/>
<stroke android:width="1dp" android:color="#0000ff"/>
<solid android:color="#aaddff"/>
<padding android:bottom="1dp"/>
</shape>
작성한 사각형
tips
android studio에서 그냥 버튼을 놓으면 계속 보라색으로 보인다
이때,
button을
androidx.appcompat.widget.AppCompatButton 로 변경하면 된다.
gradient를 drawable로 설정해보자
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#7288db"
android:centerColor="#3250b4"
android:endColor="#254095"
android:angle="90"
android:centerY="0.5"
/>
<corners android:radius="2dp"
/>
</shape>
constraintLayer의 backgroud에 resource선택으로
drawable선택
xml 파일
drawable은 image가 아니라 graphic을 쓰기 떄문에 더 깔끔하다
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<stroke android:width="1dp"
android:color="#b255da"
/>
<solid android:color="#00000000"
/>
<size android:width="200dp"
android:height="100dp"
/>
</shape>
</item>
<item android:top="1dp"
android:bottom="1dp"
android:right="1dp"
android:left="1dp"
>
<shape android:shape="rectangle">
<stroke android:width="1dp"
android:color="#ff55da"
/>
<solid android:color="#00000000"/>
</shape>
</item>
</layer-list>