기억 저장소

클라우드 기반 인공지능 개발과 DevOps 실무

프론트엔드/안드로이드 스튜디오

안드로이드 스튜디오 : 새로운 뷰 만들기

하늘.98 2022. 2. 3. 11:05

새로운 뷰  버튼 / 이미지 / 텍스트 어떤 것이든 된다.
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

 

 

일반 적인 상태 

터치 한 상태