굉장히 간단한 코든데 오랜만에 직접 짜려하면 헷갈릴때가 있어서 정리해놓는다.
여러번 작성해봤는데도 머리가 기억안나는거보면 머리가 나쁜것같다ㅜㅜ
다시는 볼 일이 없길 바라며...
* thumb_up.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:drawable="@drawable/ic_thumb_up"/>
<item android:state_selected="true" android:drawable="@drawable/ic_thumb_up_selected"/>
</selector>
우선 버튼의 선택여부에 따라 다른 drawable을 적용시킬 수 있도록 xml파일을 하나 생성하여 state_selected 여부에 걸맞는 drawable을 지정해준다.
* activity_main.xml
<Button
android:id="@+id/button_mainactivity_thumbs_up"
android:layout_width="28dp"
android:layout_height="28dp"
android:background="@drawable/background_selector_thumb_up" /> // 위에서 만든 xml파일 지정!
// 위의 버튼과 연계된 텍스트뷰. 정수값이 적혀있고, 버튼이 선택되면 값이 1증가, 선택취소되면 1감소한다.
<TextView
android:id="@+id/textview_mainactivity_thumbs_up_count"
...
android:text="15"
... />
* MainActivity.java 소스코드
// 위의 버튼에 대한 onClickListener 설정하는 코드
// 핵심은 view.isSelected() 를 활용하여 선택여부에 따른 코드를 작성한다는 것. 아래의 코드내용은 중요치않음
button_thumbs_up.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.setSelected(!view.isSelected()); // up버튼 선택여부 반전시키기
if(view.isSelected()){ // 현재 up버튼이 선택된 상황
if(button_thumbs_down.isSelected())
// 이미 down버튼이 선택되어 있었다면, up수 늘리기 전에 down버튼 선택취소
button_thumbs_down.callOnClick();
// 현재의 up개수 파악해서 +1 된 값으로 재설정
int count = Integer.parseInt(tv_thumbs_up_count.getText().toString());
tv_thumbs_up_count.setText(Integer.toString(++count));
}
else{
// 현재의 up개수 파악해서 -1 된 값으로 재설정
int count = Integer.parseInt(tv_thumbs_up_count.getText().toString());
tv_thumbs_up_count.setText(Integer.toString(--count));
}
}
});
'프로그래밍 > 안드로이드 앱 프로그래밍' 카테고리의 다른 글
[안드로이드] Service 활용하기(백그라운드 실행) (2) | 2019.04.19 |
---|---|
액티비티 수명주기 - SharedPreferences를 활용한 데이터 저장 및 복구(onPause/onResume) (0) | 2019.04.19 |
[Android] 인플레이션(Inflation) 이해하기 (0) | 2019.01.22 |
[Android] Java 코드에서 px->dp변환 과정없이 바로 값 적용하기 (0) | 2019.01.18 |
[Android] Toast 가지고 놀기 (위치지정, 모양/색 변경) (1) | 2019.01.16 |