Notice
Recent Posts
Recent Comments
반응형
오늘도 공부
[펌]Sliding Toggle 버튼 만들기 본문
반응형
출처 :
http://www.androidpub.com/878847
안녕하세요 그냥가자입니다.
오늘 만들어볼 것은 (무슨 오늘의 요리 삘이네요..) Sliding Toggle 버튼입니다.
토글버튼으로 만들면 드래그 효과가 안나죠?
그렇다고 그냥 직접 끌고 다니게 만들자니 코딩량이 만만찮습니다.
전 언제나 짧고 간단하게 만듭니다. 귀찮거든요 ㅡㅡㅋ
그럼 시작해보겠습니다.
SlideButton.java
01.public class SlideButton extends SlidingDrawer implements Checkable,02.OnDrawerOpenListener, OnDrawerCloseListener{03.int mButtonResource = 0;04.OnCheckChangedListner mOnCheckChangedListner;05.public SlideButton(Context context, AttributeSet attr){06.super(context, attr);07. 08.setOnDrawerOpenListener(this);09.setOnDrawerCloseListener(this);10.}11. 12. 13.@Override14.public boolean isChecked() {15.// TODO Auto-generated method stub16.return !isOpened();17.}18. 19.@Override20.public void setChecked(boolean checked) {21.// TODO Auto-generated method stub22.if(!isOpened() != checked){23.if(checked){24.this.animateClose();25.}else{26.this.animateOpen();27.}28.}29. 30.}31. 32.@Override33.public void toggle() {34.// TODO Auto-generated method stub35.if(!isOpened()){36.this.animateOpen();37.}else{38.this.animateClose();39.}40. 41.}42. 43.public interface OnCheckChangedListner{44.public void onCheckChanged(View v, boolean isChecked);45.}46. 47.@Override48.public void onDrawerOpened() {49.// TODO Auto-generated method stub50.if(mOnCheckChangedListner != null){51.mOnCheckChangedListner.onCheckChanged(this, isChecked());52.}53.}54. 55.@Override56.public void onDrawerClosed() {57.// TODO Auto-generated method stub58.if(mOnCheckChangedListner != null){59.mOnCheckChangedListner.onCheckChanged(this, isChecked());60.}61.}62.public OnCheckChangedListner getOnCheckChangedListner() {63.return mOnCheckChangedListner;64.}65. 66.public void setOnCheckChangedListner(67.OnCheckChangedListner onCheckChangedListner) {68.this.mOnCheckChangedListner = onCheckChangedListner;69.}70.}
뭐 딴거 없구요... SlidingDrawer를 상속받아서 했다는게 잴큰 특징 되겠습니다.
그리고 Checkable을 구현한건 CompoundButton (라디오버튼 같은 넘들) 처럼 붙일려고 한겁니다.
slide_button.xml
01.<LinearLayout02.xmlns:android="http://schemas.android.com/apk/res/android"03.android:layout_width="wrap_content"04.android:layout_height="wrap_content"05.>06.<a.b.c.SlideButton07.android:layout_width="112px"08.android:layout_height="48px"09.android:content="@+id/slideContentLayout"10.android:handle="@+id/slideHandle"11.android:background="@drawable/sns_toggle_btn_bg"12.android:orientation="horizontal"13.android:id="@+id/slideButton"14. 15.>16.<Button17.android:layout_width="wrap_content"18.android:layout_height="wrap_content"19.android:id="@+id/slideHandle"20.android:background="@drawable/sns_toggle_btn_bar"21.>22.</Button>23.<LinearLayout24.android:layout_width="fill_parent"25.android:layout_height="fill_parent"26.android:layout_weight = "1"27.android:background="#00000000"28.android:id="@+id/slideContentLayout"29.>30.</LinearLayout>31.</a.b.c.SlideButton>32.</LinearLayout>
버튼과 배경이 중요한데요...
배경은 On/Off을 하나로 가지고 있고
버튼으로 한쪽을 가리는 형태로 만드시면됩니다.
버튼이 길이가 1이라면 배경은 길이가 2정도 되겠죠
MainActivity.java
01.requestWindowFeature(Window.FEATURE_NO_TITLE);02.setContentView(R.layout.slide_button);03.sb = (SlideButton)findViewById(R.id.slideButton);04. 05. 06.sb.setOnCheckChangedListner(new SlideButton.OnCheckChangedListner() {07. 08.@Override09.public void onCheckChanged(View v, boolean isChecked) {10.// TODO Auto-generated method stub11.Log.i("aaa","bbb");12.Toast t = Toast.makeText(context, Boolean.toString(isChecked), Toast.LENGTH_LONG);13.t.show();14.}15.});
이부분은 onCreate의 일부인데요... 그냥 onCreate에 저것만 쓰셔도 나올겁니다.
스샷은 제가 사용한 이미지가 공개하면 좀 애매해서...
생략하도록하겠습니다. 써보신분들이 후기 올려주시면 감사하겠습니다
반응형
'Android > Tip&Tech' 카테고리의 다른 글
| Android: how to create transparent or opeque background (0) | 2011.12.22 |
|---|---|
| Fragment animation 정의하기 팁#1 (0) | 2011.12.21 |
| java android 명명규칙 및 일반규칙 (0) | 2011.12.09 |
| [펌]안드로이드 로딩화면 추천 구축방법 (0) | 2011.12.08 |
| [출처]안드로이드 태스크,어피니티,플래그 (0) | 2011.12.07 |
