MyButton 이라는 자바 클래스 파일 하나를 생성한다.
생성후 AppCompatButton를 상속 받는다. (이 클래스를 button으로 만들어주기 위해 상속받는다)
init라는 메소드를 만들어 그안에서 배경색과 글자색을 지정해주고 dimen이라는 xml파일을 생성해 textsize를 지정해주었다.
public MyButton(Context context) {
super(context);
init(context);
}
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public void init(Context context) {
setBackgroundColor(Color.CYAN);
setTextColor(Color.BLACK);
float textSize = getResources().getDimension(R.dimen.text_size);
setTextSize(textSize);
}
이 코드는 버튼을 눌렀을때 색깔이 변경되는 코드이다.
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.d("MyButton", "onDraw 호출됨");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d("MyButton", "onTouchEvent 호출됨");
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
setBackgroundColor(Color.BLUE);
setTextColor(Color.RED);
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_OUTSIDE:
case MotionEvent.ACTION_UP:
setBackgroundColor(Color.CYAN);
setTextColor(Color.BLACK);
break;
}
invalidate(); //화면에 보이는게 유효하지 않다. 다시 그려주는 함수다.
return true;
}
후 main_activity.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">
<org.techtown.view.MyButton
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="확인"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
이러한 버튼이 나오는걸 확인할 수 있다.
'코딩 > Android' 카테고리의 다른 글
Fragment 로 activity 화면에 보여주기 (1) | 2020.07.29 |
---|---|
안드로이드 Parcelable 의 오브젝트 전달법 (0) | 2020.07.27 |