210202

[View] 비트맵 버튼 정리 본문

Android/View

[View] 비트맵 버튼 정리

dev210202 2020. 6. 1. 10:04

비트맵 버튼이란?

- 나인패치 이미지를 적용하여 버튼을 생성하면 사용자가 버튼을 눌렀을 때 버튼이 눌린지 확인하기 어렵다. 이를 비트맵 버튼을 사용하여 버튼의 상태를 이벤트로 구분할 수 있게 만들어준다.

 

사용법

1. 버튼을 상속해서 새로운 비트맵 버튼을 만든다.

package techtown.org;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.MotionEvent;

import androidx.appcompat.widget.AppCompatButton;

public class BitmapButton extends AppCompatButton {
    public BitmapButton(Context context) {
        super(context);
        init(context);
    }

    public BitmapButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    private void init(Context context){
        setBackgroundResource(R.drawable.appmarker12);
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        super.onTouchEvent(event);
        int action = event.getAction();

        switch (action){
            case MotionEvent.ACTION_DOWN:
                setBackgroundResource(R.drawable.appmarker12);
                break;
            case MotionEvent.ACTION_UP:
                setBackgroundResource(R.drawable.ic_launcher_background);
                break;
        }
        invalidate();

        return true;
    }
}

2. 사용할 xml 파일에 해당하는 비트맵 버튼을 사용한다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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">


    <techtown.org.BitmapButton
        android:background="@drawable/appmarker12"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


    </techtown.org.BitmapButton>




</LinearLayout>
Comments