728x90
ButtonSelector을 통해 버튼을 눌렀을 때와 안 눌렀을 때를 기준으로 버튼에 효과를 줄 것이다.
https://www.youtube.com/watch?v=9E0WwR_6P9w
1. selector_button.xml 생성 (drawable 폴더 안에)
<?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="#64FFDA"/>
<corners android:radius="10dp"/>
</shape>
</item>
<item android:state_pressed="false">
<shape>
<solid android:color="#E040FB"/>
<corners android:radius="10dp"/>
</shape>
</item>
</selector>
- state_pressed가 true값이라면 클릭했을 때 효과이다.
- state_pressed가 false값이라면 클릭하지 않았을 때의 효과이다.
2. selecotr_button_img.xml 생성하기 (drawable 폴더 안에)
<?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/ic_launcher_background" >
</item>
<item android:state_pressed="false" android:drawable="@drawable/ic_launcher_background">
</item>
</selector>
- 여기치 못한 상황으로 drawable 폴더 내에 같은 사진으로 했다. (drawable 폴더에 새로운 사진을 추가해 효과를 줘보자)
3. 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">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="192dp"
android:backgroundTint="#000000"
android:backgroundTintMode="add"
android:text=""
android:background="@drawable/selector_button_img"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="136dp"
android:text="태윤"
android:textColor="#ffffff"
android:textStyle="bold"
android:background="@drawable/selector_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button"
app:layout_constraintVertical_bias="0.055" />
</androidx.constraintlayout.widget.ConstraintLayout>
- 버튼 2개를 만들어준다.
- 첫번째 버튼에 backgroundTint 와 backgroundTintMode를 추가해준다.
4. values 폴더 내에 themes 폴더 내에 themes.xml에 들어간다.
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.ButtonSelector" parent="Theme.AppCompat.Light">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>
- stlye의 parent를 위와 같이 바꿔준다. (이렇게 해주지 않으면 색 지정이 이상해질 수 있음)
※ 실행 결과
'study & bootcamp > 안드로이드 앱 스터디' 카테고리의 다른 글
[Android App 개발 스터디] #24 구글맵 (0) | 2021.09.25 |
---|---|
[Android App 개발 스터디] #24 구글맵 (0) | 2021.09.04 |
[Android App 개발 스터디] #23 뒤로가기 두 번 눌러 앱 종료 (0) | 2021.09.04 |
[Android App 개발 스터디] #22 음악재생 MP3 (0) | 2021.08.25 |
[Android App 개발 스터디] #20 Spinner 드롭다운 (0) | 2021.08.25 |