일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 수성구맛집
- 코딩공부
- 어플개발
- 안드로이드개발
- 대구인스타핫플
- androidstudio
- 동성로맛집
- 의무경찰
- 대구카페
- 개발자
- 안드로이드앱개발
- 앱개발
- 애드센스
- 안드로이드
- 대구핫플
- 수성구카페
- 범물동
- 동성로카페
- 대구맛집
- 파이썬
- 범물동카페
- 안드로이드스튜디오
- 코딩
- 안드로이드앱
- 인스타핫플
- Android
- 동성로핫플
- 지산동카페
- 감성카페
- 애드몹
- Today
- Total
Glacier's Daily Log
Android) 안드로이드 ImageView 스위치 처럼 사용하기 (Use ImageView like Switch) 본문
Android) 안드로이드 ImageView 스위치 처럼 사용하기 (Use ImageView like Switch)
h__glacier_ 2021. 7. 1. 00:04ImageView 스위치 처럼 사용하기
안드로이드 이미지뷰 True/False 값에 따라 drawable 값이 바뀌도록 설정하기
정말 오랜만에 포스팅인 것 같다.
학기 중에 공부, 휴식, 여가생활, 개발 다 잡기는 너무 힘든 것 같다.
그래서 블로그는 어느새 부터인가 손을 떼버렸다.
이제 방학했으니 한두개씩 다시 포스팅 해봐야겠다.
오늘은 협업중인 프로젝트에서 개발중에 별점 관련 기능을 구현하는 중 이였다.
내가 원하는 방식은 unfilled_star / filled_star drawable image 가 필요하고
ImageView 를 클릭할 때마다 이 두개의 drawable이 번갈아가면서 나오게 하는 것이였다.
그리고 서버와 별점값을 통신해야 하기 때문에 true / false 값도 나타낼 수 있어야 했다.
나는 당연히 getDrawable 과 setImageDrawable 두개를 이용해서 쉽게 구현할 수 있을 줄 알았다.
public void onClick(View v) {
if(review_star4.getDrawable().equals(getDrawable(R.drawable.star_rating_unfilled))) {
review_star4.setImageResource(R.drawable.star_rating);
} else{
review_star4.setImageResource(R.drawable.star_rating_unfilled);
}
}
이렇게 구현하면 당연히 될 줄 알았으나
이미지뷰는 바뀔 생각을 안했다.
한 30분동안 getDrawble getResources 등등 모든 메소드를 총동원해서 작성해보아도 깜깜무소식이였다.
너무 답답해서 구글링을 또 30분 해본 결과
너무 간단한 방법이 있었다.
selector drawable을 하나 생성해서
true / false 값에 따라 drawable 값을 정해주고
원하는 이미지뷰 src값에 drawable을 넣어주면 해결되는 문제였다.
내가 원하는 true/false 구현과 스위치 기능 구현까지 모두 한번에 해결이 가능했다.
-- 구현 방법 --
1. selector xml을 하나 생성한다.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:drawable="@drawable/star_rating" />
<item
android:drawable="@drawable/star_rating_unfilled" />
</selector>
2. ImageView src 값에 금방 만든 selector 파일을 넣는다.
3. ImageView onClickListener을 true/false 값에 따라 설정한다.
if (review_star4 != null) {
review_star4.setSelected(!review_star4.isSelected());
}
끝이다.
이제 별점 구현이 완벽하게 작동하는 모습을 볼 수 있다.
이렇게 간단하고 짧은 코드로 ImageView를 마치 Toggle Switch 처럼 사용할 수 있게 되었다.
'Coding > Android' 카테고리의 다른 글
Android) 안드로이드 Jsoup로 웹크롤링 하기 (예제포함) - "데일리 브리핑 앱 개발기" (22) | 2021.08.12 |
---|---|
스마트폰으로 한컴타자연습을 한다구요? - "오늘은 타자왕" 스마트폰 타자연습/타자대결 어플 추천 (1) | 2021.07.28 |
롤 커뮤니티 어플 "듀오할래?" 개발기 - 롤 듀오 상대, 친구 구하기 / 티어별 게시판 (0) | 2021.02.20 |
Android) 'killProcess' 로 앱을 종료하였지만 앱이 재실행 혹은 이전 액티비티가 나타날 때 해결방법 (2) | 2021.01.11 |
Android) 앱이 Google Play 정책을 준수하지 않음 해결하기 - "개인정보처리방침" URL 만드는 법 (4) | 2020.12.05 |