버튼이나 레이아웃이 select가 됐을 때 state 변화 값 탐지해서 변화를 시켜주는 selector 구현.
버튼 터치, 클릭했을 때 등의 상태 값 받아와서 버튼의 변화 만들어줌.
activity_main.xml

처음에 이렇게 설정 상단의 버튼도 (오른쪽, 위, 왼쪽) 연결
drawble 폴더에서 selector_button.xml 만들기
<item android:state_pressed="true">
는 눌린 상태가 true이냐는 뜻 //false는 안 눌린 거
<shape 는 모양
<solid android:color="#536DFE"/>
는 면 색상 정하기 rgb 컬러가 나온다
Material A200이 예뻐서 이걸로 함.
<corners android:radius="10dp"/>
는 겉면 처리 (완곡하게 만들어주네)
다시 activty_main.xml로 돌아와서
android:background="@drawable/selector_button"
설정을 해준다. 근데 버튼의 색이 바뀌지 않는 경우가 있다. 이는 <Button을<androidx.appcompat.widget.AppCompatButton으로 바꿔주면 해결이 된다.
*참고
https://hyunjungchoi.tistory.com/116
https://velog.io/@chaemin/Android-background-vs-backgroundTint-%EC%B0%A8%EC%9D%B4
저작권 없는 아이콘
7,700,000+ free and premium vector icons, illustrations and 3D illustrations
Iconfinder is the world's largest marketplace for icons, illustrations and 3D illustrations in SVG, AI, and PNG format.
www.iconfinder.com
코드
selector_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="#7E91F8" />
<corners android:radius="10dp" />
</shape>
</item>
<item android:state_pressed="false">
<shape>
<solid android:color="#536DFE" />
<corners android:radius="10dp" />
</shape>
</item>
</selector>
selector_button_img.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/apple">
</item>
<item android:state_pressed="false" android:drawable="@drawable/apple_gray">
</item>
</selector>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/button"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="44dp"
android:background="@drawable/selector_button"
android:text="홍드로이드"
android:textColor="#ffffff"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button2"
app:layout_constraintVertical_bias="0.087" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/button2"
android:layout_width="193dp"
android:layout_height="180dp"
android:layout_marginTop="168dp"
android:background="@drawable/selector_button_img"
android:text=""
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
결과

'[Android Studio] (Java)' 카테고리의 다른 글
| [Android Studio] RelativeLayout (0) | 2023.09.01 |
|---|---|
| [Android Studio] LinearLayout(리니어 레이아웃) (0) | 2023.09.01 |
| [Android Studio] StartActivityForResult (0) | 2023.09.01 |
| [Android Studio] SNS 앱 만들기 #1 (인스타 하단 바) (0) | 2023.08.31 |
| [Android Studio] (뒤로 가기 두 번 눌러 앱 종료) (0) | 2023.08.31 |