안드로이드 스튜디오 위젯 - andeuloideu seutyudio wijes

대부분의 앱들은 위젯 기능을 지원합니다. 위젯(Widget) 은 컴퓨터에서 사용하던 용어인데, 웹 브라우저를 통하지 않고 날씨, 달력, 계산기 같은 기능을 바로 이용할 수 있도록 만든 프로그램입니다. 스마트폰에 위젯도 앱을 실행하지 않고 바탕화면에서 필요한 정보만을 한눈에 볼 수 있기 때문에 유용합니다. 자신이 만든 앱에서 위젯 기능을 추가하고 싶다면 간단하게 해결할 수 있습니다. 안드로이드 스튜디오에서 클릭 몇 번으로 만들 수 있기 때문입니다.

먼저 프로젝트를 선택하고 상단 메뉴 New > Widget > App Widget를 선택합니다.

안드로이드 스튜디오 위젯 - andeuloideu seutyudio wijes

설정 화면에서는 위젯의 모양과 크기를 지정해야 합니다. 위젯 설정을 위한 값들 중에서 Resizable 은 가로/세로의 크기를 조절할 수 있는지 여부를 결정합니다. Not resizable은 크기 조절이 불가능한 고정형입니다

위젯의 최소 크기를 지정하는 옵션입니다. 가로/세로 셀 크기를 선택합니다. 바탕화면의 크기를 고려해서 정해야 합니다

위젯 서비스를 위한 자동으로 3가지 파일과 AndroidManifest.xml 에 위젯 관련 코드를 추가합니다. 추가된 파일은 다음과 같습니다

AndroidManifest.xml 에는 다음과 같은 코드가 들어갑니다

이제 App을 빌드해서 에뮬레이터에 설치해 보겠습니다. 그리고 위젯을 바탕화면에 추가할 수 있는지 알아봐야겠죠. 스마트폰에서 위젯을 추가하는 방법은 간단합니다. 화면을 2~3초간 누르면 위젯 설치 메뉴가 나타납니다

위젯 목록에서 자신이 만든 앱을 찾아보세요. 위젯이 나타나면 꾹 누릅니다. 바탕화면에 위젯이 표시되었습니다. 다음 포스팅에서는 위젯을 클릭해서 앱을 호출하는 방법에 대해 알아 보겠습니다

액티비티(Activity)란?

- 응용 프로그램을 구성하는 주요 단위

- 하나의 UI를 구성하는 기본 단위 -> 한 응용 프로그램은 다수의 액티비티를 가질 수 있다.

- 여러 개의 뷰가 모여 하나의 액티비티를 구성

뷰(View)란?

- UI를 구성하는 핵심 컴포넌트

- 사각영역에 자신의 모양을 나타냄

- 파생 뷰들을 이용해 다양한 기능을 제공

뷰(View)의 종류

- 위젯 (컨트롤) : 직접적으로 보이면서 UI를 구성

android.view.View의 서브 클래스

- 뷰 그룹 (레이아웃) : 직접적으로 보이진 않지만, 다른 뷰를 자식으로 갖는 컨테이너 역할

ViewGroup의 파생 클래스

최상위 뷰(View)의 속성

  • id : 뷰 참조시 사용
  • layout_width, layout_height : 뷰의 폭과 너비 지정
    • 속성값
      • match_parent :  부모 크기에 맞춤
      • wrap_content : 내용물 크기만큼 채움
  • background  : 뷰의 배경을 어떤 색으로 채울 것인가
  • padding : 뷰와 내용물간의 내부 여백 지정
    •  layout_margin : 외부 여백 지정
  • visibility : 뷰의 표시 여부 지정
    • 속성값
      • visible : 보이는 상태
      • invisible : 자리를 차지하며 숨긴 상태
      • gone : 자리를 차지하지 않으며 숨긴 상태

기본 위젯

눈에 직접 보이고 사용자와 상호작용함 

기본위젯 종류

  • TextView

    • 텍스트를 출력하는 위젯
    • 속성
      • text : 출력할 문자열 지정
      • textColor : 색상 지정
      • textSize : 글꼴의 크기 지정 (단위 : sp, dp..)
      • textStyle : 글꼴 스타일 지정 
        • normal, bold, italic
      • typeface : 글꼴 유형 지정
        • normal, sans(고딕), serif(명조체), monospace(고정 폭 글꼴) 
      • maxLines : 출력할 텍스트의 최대 줄 수 지정
      • ellipsize : maxLines와 조합해 사용, 줄의 초과 내용 정리, 말줄임표 위치 조절
        • 속성값
          • start : 말줄임표 처음으로
          • middle : 말줄임표 가운데로
          • end : 말줄임표 끝으로
          • none : 말줄임표 없음
      • gravity : TextView 영역 내에서 텍스트 내용의 중력 방향 결정
        • cf) layout_gravity 속성 : 자신을 컨테이너 어느 영역에 지정할 것이지를 결정
      • singleLine : true값 설정시, 단말기 방향에 상관없이 무조건 한 줄에 배치, 말줄임표 표시
  • Button

    • 사용자의 터치 동작으로 명령을 내리는데 사용
    • onClick 속성으로 이벤트 핸들러 함수 지정
    • CompundButton은 check/unCheck 두가지 상태 가짐
  • EditText

    • 사용자로부터 텍스트를 입력받을 수 있는 위젯
    • 속성
      • inputType : 입력되는 문자열 제한, 입력시 사용되는 소프트웨어 입력기의 자판 변경
        • 속성값
          • none : 모든 문자 입력가능, 줄바꿈 가능
          • text : 모든 문자 입력 가능, 줄바꿈 불가능
          • textMultiLine : 여러 줄 입력 가능
          • number : 키보드의 숫자 입력 모드
          • phone : 전화번호 입력모드
      • Lines : 처음 보여질 입력창의 최대 줄 수
      • maxLines : 초기엔 한 줄로 보이지만 확장 가능한 최대 줄 수
      • hint : 입력 전에 보여지는 입력 내용에 대한 힌트 
      • textColorHint : 힌트 글자의 색상 변경'
      • focusable : 사용자의 입력을 통해 텍스트 내용의 변경 가능 여부 설정
        • 속성값 false일 경우, 입력할 수 없는 EditText
      • enabled : 해당 뷰의 활성화 여부 설정
        • 속성값 false일 경우, 사용자의 입출력 기능을 막아버림 (해당 위젯을 사용하지 않음), 연한 글씨료 표현
  • ImageView

    • 아이콘이나 이미지 파일을 출력하는 위젯
    • png, jpg, gif등의 포맷 지원
    • 속성
      • src : 출력할 이미지 지정
      • adjustViewbounds : 축소된 원본 이미지로 ImageView 크기를 조정할지 여부 설정
      • maxHeight, maxWidth : ImageView영역에 그려질 이미지의 최대 크기 지정
      • scaleType : 이미지의 확대, 축소 방식을 지정
      • cropToPadding : 이비지 일부를 자를지 여부 결정
      • tint : 이미지에 색조 입힘
      • baseLineAlignBottom, baseLine : 원하는 위치에 정렬 기준선 설정