본문 바로가기

Android ᙏ̤̫͚/Android Programming

[Do it 안드로이드 프로그래밍] 둘째마당 03-1. 기본 위젯

<표현> 속성 메소드 개념

 

둘째마당 03-1

 

기본 위젯

 

TextView

  • 화면에서 글자 보여주는 역할
  • 화면 구성 시 가장 많이 사용하는 기본 위젯
  • 속성
    • text
      • 텍스트뷰의 문자열 설정 가능 (문자열 없다면 차지 영역 알 수 없음)
      • 작성 방법
        • text 속성 값으로 직접 문자열 지정
        • /app/res/valus/strings.xml 파일에 작성한 문자열 지정: 이 방법 더 권장 (레이아웃과 문자열 파일 구분하는 것이 더 good!)
          • ex) 여러 언어 버전으로 XML 레이아웃 파일 만드는 것보다 strings.xml 파일을 언어별로 만드는 것이 더 효율적
          • text속성에 "@string/변수명" 통해 참조
    • textColor
      • 텍스트뷰에서 표시하는 문자열의 색상 설정
      • #AARRGGBB (A: Alpha, R: Red, G: Green, B: Blue)
        • Alpha - FF: 투명하지 않음, 00: 투명, 88: 반투명
    • textSize
      • 텍스트뷰에서 표시하는 문자열의 크기(폰트 크기)
      • dp, sp, px 단위 사용 가능; sp 단위 권장(단말 해상도에 따라 글자 크기 일정하게 보여줌)
    • textStyle
      • 텍스트뷰에서 표시하는 문자열의 스타일 속성 설정
      • normal, bold, italic 등의 값 지정
      • | 기호 통해 여러 개의 속성 값 지정 가능 (앞뒤 공백제거 필수)
    • typeFace
      • 텍스트뷰에서 표시하는 문자열의 폰트 설정
      • normal, sans, serif, monospace 중 하나 지정(폰트 앱에 추가하여 폰트 설정 가능)
    • maxLines
      • 텍스트뷰에서 표시하는 문자열의 최대 줄 수 설정
      • 한 줄만 표시하고 싶은 경우, 값 "1"로 설정
    • ellipsize
      • 입력 내용의 생략 부분 설정
      • "none", "start", "middle", "end"
    • autoLink=true
      • 문서에 포함된 웹 주소, 이메일 주소를 링크 색상으로 표시하고 누르면 바로 접속 혹은 메일 편집기 띄워주는 기능
    • lineSpacingMultiplier
      • 줄 간격을 기본의 배수로 설정
    • lineSpacingExtra
      • 줄 간격 여유 값으로 설정
  • 코드
  • <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/person_name"
        android:textColor="#0000FF" 
        android:textSize="40sp"
        android:textStyle="bold" 
        android:typeface="serif"/>
  •  

 

Button

  • 사용자가 클릭하면 클릭에 대한 반응을 하는 위젯
    • OnClickListener 정의하여 버튼에 설정
  • 텍스트뷰 상속하여 정의되어 있어 텍스트뷰의 속성 그대로 가짐
  • 텍스트 없이 버튼 사용 원한다면, 태그 적용
    • image 클릭 시 이전 버튼 클릭과 동일하게 적용
  • 종류
    • 기본 버튼
      • 클릭 이벤트 처리
    • 체크 박스
      • 클릭 이벤트 처리, 상태 값 저장, 선택/해제 상태 표시 가능
      • 누를 때마다 체크 상태 변화
    • 라디오 버튼
      • 클릭 이벤트 처리, 상태 값 저장, 선택/해제 상태 표시 가능
        • 꼭 RadioGroup 먼저 추가하고 그 안에 RadioButton 추가해야함
      • 다른 버튼 선택 시 선택하지 않은 라디오 버튼은 자동 해제
      • 코드
      • <RadioGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""/>
        </RadioGroup>​
  • 속성
    • text
    • textColor
    • textSize
  • 메소드
    • public boolean isChecked( ): 선택되어 있는지 확인
    • public void setChecked(boolean checked): 체크 상태 지정
    • void onCheckedChanged(CompoundButton buttonView, boolean isChecked): 버튼 상태 변화 여부 확인

 

EditText

  • 입력상자 역할, 사용자에게 값 입력받을 때 사용
  • 글자 입력하기 위해 커서 옮기면 키패드가 화면에 등장(한글, 영문, 숫자 등 문자 유형 다양)
    • inputType 속성 통해 입력 문자의 유형 지정 가능
  • 속성
    • hint
      • 기본 안내문의 hint 표시
    • textColorHint
      • hint 속성의 글자 색상 지정
    • editable=false
      • 문자열 편집 불가능
  • 코드
<EditText
    android:id="@+id/usernameInput"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="24sp"
    android:inputType="text"
    android:hint="이름을 입력하세요"/>
  • 커서 관련 속성
    • selectAllOnFocus=true
      • 포커스 받을 때, 문자열 전체가 선택됨: 전체 내용 수정 가능
      • 대체 없이 이후에 추가하고 싶은 경우, 오른쪽 방향 키 누르고 입력
    • cursorVisible=false
      • 커서 보이지 않게 설정
  • 커서 관련 메소드
    • public int getSelectionStart()
      • 선택된 영역의 시작 위치 제공
      • 선택 영역 없다면 현재 위치 알려줌
    • public int getSelectionEnd()
      • 선택된 영역의 끝 위치 제공
      • 선택 영역 없다면 현재 위치 알려줌
    • public void setSelection(int start, int stop)
    • public void setSelection(int index)
      • 선택 영역 지정
    • public void selectAll()
      • 전체 문자열 선택
    • public void extendSelection(int index)
      • 선택 영역 확장
  • 문자열 변경 처리 속성
    • getText()
      • 입력된 문자, 입력 문자가 필요 포맷과 맞는지 확인
      • Editable 객체 return
        • toString()
          • 일반 String 타입의 문자열 확인 가능
    • public void addTextChangedListener(TextWatcher watcher)
      • TextWatcher 객체 설정
        • 텍스트 변경 시 발생하는 이벤트 처리
          • 메소드
            • public void beforeTextChanged(CharSequence s, int start, int count, int after)
            • public void afterTextChanged(Editable s)
            • public void onTextChanged(CharSequence s, int start, int before, int count)
            • setFilters()
              • InputFilter 객체를 파라미터로 전달
              • 입력된 문자열 길이 값 확인
            • LengthFilter()
              • 입력될 문자열의 길이 값 설정

 

ImageView, ImageButton

  • 이미지를 화면에 표시할 때 사용하는 가장 간단한 위젯
  • 이미지 파일은 app/src/main/res/drawable 폴더에 복사해 넣기
    • 확장자는 JPG, PNG
  • 속성
    • app:srcCompat=@drawable/파일명: 필수 속성
      • app/res/drawable 폴더에 저장한 이미지 지정: 이미지 리소스 지정 방식
      • 이미지 파일명은 확장자 제외하고 작성
    • android:src: 필수 속성
    • maxWidth, maxHeight
      • 이미지가 표시되는 최대 폭, 높이 설정
      • 설정하지 않는다면, 원본 이미지 그대로 나타남
      • 이미지 원본 너무 큰 경우, 최대 크기 제한 가능
    • tint
      • 이미지뷰에 보이는 이미지 색상 설정
      • ##AARRGGBB 포맷으로 적용
    • scaleType
      • 이미지뷰 크기에 맞게 원본 이미지 크기 자동으로 확대/축소하여 보여줄 때 사용
      • fitXY, centerCrop, centerInside 등 이미지 변환 알고리즘 미리 적용된 값 적절하게 사용 가능
  • drawable 폴더 제대로 사용하기
    • 초고해상도
      • app/res/drawable-xhdpi
      • app/res/drawable-xxhdpi
      • app/res/drawable-xxxhdpi
    • 고해상도
      • app/res/drawable-hdpi
    • 중간 해상도
      • app/res/drawable-mdpi
    • 저해상도
      • app/res/drawable-ldpi
  • 코드
  • <ImageButton
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@drawable/ok_btn" 
        android:contentDescription="ok button">