새로운 뷰 버튼 / 이미지 / 텍스트 어떤 것이든 된다.
View 클래스를 상속....
뷰 크기 / 영역 => 감싸고 있는 레이아웃의 영향을 받는다.
뷰의 상태에 따라서 , 크기를 정할 때 자동 호출되는 메서드 : onMeasure()
뷰를 그릴 때 자동 호출되는 메서드 : onDraw()(Canvas canvas)
뷰의 크기를 부모레이아웃에게 전달할 경우 : setMeasuredDimension()
onMeasure() / setMeasuredDimension()
int width, int height
onMeasure(int width, int height ) : 레이아웃에서 허용하는 여유공간의 폭과 너비를 전달....
onDraw()(Canvas canvas) 메서드를 재호출할 경우 : invaildate()
1. 게임화면 처럼 전체화면에 대한 뷰를 작성할 경우
public class ~~~ extends View{
생성자(){ }
public void onDraw(Canvas canvas){ }
}
2. 특정 위젯을 새로 작성할 경우
public class ~~~ extends Appcompat(Button) {
생성자(Context context){ } // 자바 코드에서 new 객체생성
생성자(Context context, AttributeSet attr){ } // XML문서에 설정된 내용을 이용하여 객체 생성
}
각 생성자의 첫번째 코드는 부모의 생성자에게 Context를 전달, AttributeSet 를 전달...
글자의 색 : setTextColor(색상)
배경색 : setBackgroundColor(색상)
글자의 크기 : setTextSize(픽셀단위만 가능)
sp 단위를 사용할 경우에는 values폴더에 dimens.xml 문서로 정의해야 한다....
*sp 단위 : 화면의 크기에 따라 자동으로 변경될 수 있는 단위,,,,
dimens.xml 파일을 자바코드에서 사용할 경우에는
Resources 객체의 getDimension()를 이용
dimens.xml 내부에서 크기를 선언하는 방법 .
<resources>
<dimen name = "이 름">크기 및 단위</dimen>
</resources>
MainAcitivity
=================================================================
===================================================================
MyButton
==========================================================================
activity_main.xml
=========================================================================
dimens.xml
일반 적인 상태
터치 한 상태
'프론트엔드 > 안드로이드 스튜디오' 카테고리의 다른 글
안드로이드 스튜디오 : 클래스 이름 바꾸기 (0) | 2022.02.03 |
---|---|
안드로이드 스튜디오 : Generate / 자동생성 (0) | 2022.02.03 |
안드로이드 스튜디오 : 나인패치(Nine Patch) (0) | 2022.02.03 |
안드로이드 스튜디오 : 여러가지 위젯 / CheckBox / RadioButton / EditText / (0) | 2022.02.02 |
안드로이드 스튜디오 : 리니어 레이아웃 / 스크롤뷰 (0) | 2022.02.02 |