안드로이드의 view 중 기능을 갖고 사용자와 상호작용을 하는 것들
레이아웃 위에 배치되어 화면에 나타나고 코드를 통해 통제하여 사용자와 소통하는 수단이 된다.
Widget 사용 패턴
- 먼저 레이아웃에 사용하고자 하는 위젯을 배치한다.
- 이때 Activity가 실행되면 화면이 구성되고 화면에 배치된 모든 뷰들은 객체로 생성된다.
- 객체로 생성된 뷰 중에 필요한 위젯들의 주소 값을 얻어와(뷰 바인딩으로 인해 해당 작업은 필요 없다.) 코드로 이들을 통제하게 된다.
- 필요하다면 이벤트에 대한 코드를 수성하여 사용한다.
위젯의 종류
- textview
- 사용자에게 전달하고자 하는 문자열을 표시하는 뷰
- 주요 속성
- text : 보여주고자 하는 문자열
- lines : 최대 라인 수(기본값 무한)
- textColor : 문자열의 색상
- textSize : 문자열의 크기
- textAppearance : 문자열의 형식(색상, 크기 등)
- 주요 메서드
- getText : 문자열(CharSequence) 추출하기, toString으로 string 형태로 추출도 가능
- setText : 문자열 덮어쓰기
- setBackgroundColor : 문자열 배경색 지정하기, Color.RED, Color.Blue, Color.argb(50, 0, 255, 190) ...
- setTextColor : 문자열 색상 지정하기
- append : 문자열 추가하기
- button
- 사용자가 클릭하면 개발자가 만든 코드를 동작시켜 주는 뷰이다.
- 문자열을 표시하는 Button과 이미지를 표시하는 ImageButton이 있다.
- 주요 속성
- text : Button의 문자열 (기본값 전부 대문자)
- srcCompat : ImageButton의 이미지 (이미지 파일을 사용한다면 파일명이 빈 칸이 없어야 하며 모두 소문자여야 한다.)
- 주요 메서드
- setText : Button의 문자열 덮어쓰기
- setBitmap : ImageButton의 이미지 덮어쓰기
- res 객체 생성 Resources res = getResources();
- Bitmap 객체 생성 Bitmat bitmap = BitmapFactory.decodeResource(res, R.drawable.파일명);
- activityMainBinding.imageButton.setImageBitmap(bitmap)
- 주요 이벤트
- Click : 버튼을 눌렀을 때 발생하는 이벤트
- implements OnClickListener를 통해 리스너 클래스를 생성한다. 익명 클래스를 사용해도 된다.
- 이때 OnClickListener가 android.view.View의 인터페이스인 것을 확인해야 한다.
android.content.DiaLogInterface는 대화 상자의 버튼 이벤트 처리를 위한 인터페이스이다.
- Click : 버튼을 눌렀을 때 발생하는 이벤트
- EditText
- 사용자에게 문자열 데이터를 입력 받을 때 사용하는 뷰이다.
- 입력 받는 형식이 어떻든 문자열로 저장한다.
- Palette -> Text에 기본 inputType 설정에 따라 여러 종류의 EditText가 있다.(password, e-mail ...)
- 주요 속성
- text : 표시할 문자열을 설정
- hint : 입력된 값이 없을 경우 표시할 안내 문구를 설정
- inputType : 입력 값에 대해 설정. 표시되는 형식, 나타나는 키보드 등에 영향을 준다. (제한 X)
- imeOptions : 나타나는 키보드의 Entet 키 모양을 설정한다.
- requestFocus로 포커스를 줄 수 있다.
- 주요 이벤트
- TextWatcher : 입력한 내용을 실시간으로 감시. 입력 내용 변경 전, 변경 순간,(:=) 변경 후로 나눠서 작업할 수 있다.
- EditorAction : Enter 키를 눌렀을 때 발생하는 이벤트
- TextInputLayout
- EditText를 보완한 뷰이다.
- 속성, 이벤트, 프로퍼티 등을 그대로 사용하며 몇 가지 요소가 추가되었다.
- 주요 속성
- hint : 원래는 입력된 값이 없을 경우 표시되고 있다면 사라지지만, 여기서는 안내 문구 용도로 사용돼 사라지지 않고 상단으로 이동한다.
- counterEnabled : 입력한 글자의 수가 나타난다.
- counterMaxLength : 지정한 글자수를 넘으면 붉은 색으로 표시해준다.
- 주요 메서드
- getEditText : TextInputLayout이 가지고 있는 EditText 객체의 주소 값
- setError : 오류로 표시할 메시지를 설정한다.
- ImageView
- 이미지를 사용자에게 보여주고자 하는 목적으로 제공되는 뷰
- 이미지를 저장하는 경로는 drawable과 mipmap이 있다.
- 이미지를 넣는 폴더는 기본적으로 drawable이다.
- 버전이 변경되면서 mipmap이라는 폴더도 제공하는데, 이 폴더의 이미지는 비트맵이 아닌 벡터 방식으로 이미지를 그리게 된다.
- 비트맵 방식은 이미지를 화면상에 표시하는 속도가 빠른 대신 용량이 크고(압축 기술로 인해 이 단점은 상관 없어졌다), 이미지를 확대하면 계단현상이 발생하고 축소하면 이미지가 뭉개지는 단점이 있다.
- 벡터 방식은 이미지를 그리기 위한 데이터를 가지고 있어 이를 해석해야 하기 때문에 속도가 느리지만 확대/축소에서 이미지가 변질되지 않는다. 그래서 mipmap은 런처 아이콘용 이미지를 넣는 폴더로 사용된다.
- 주요 속성
- srcCompat : 보여줄 이미지를 지정한다. 안드로이드 4 버전까지는 src였는데 벡터 방식의 이미지(SVG, PSD 등)을 처리할 수 있는 기능을 추가하여 srcCompat으로 변경하였다.
- 주요 메서드
- setImageResource : res 폴더에 있는 이미지를 설정한다.
- setImageBitmap : Bitmap 객체로 만들어진 이미지를 설정한다.
- setImageDrawable : Drawable 객체로 만들어진 이미지를 설정한다.
- ToggleButton
- 환경설정과 같은 화면에서 애플리케이션의 기능을 ON/OFF 하는 기능을 제공하고자 할 때 사용한다.
- 지금은 더 좋은 뷰들이 생겨 많이 사용하지는 않는다.
- 주요 속성
- textOn : On 상태일 때 표시할 문자를 설정한다.
- textOff : Off 상태일 때 표시할 문자를 설정한다.
- checked : 기본 상태를 설정한다. 기본값은 Off 상태이다.
- 주요 메서드
- isChecked : 현재 상태를 확인한다. On이면 true, Off면 false를 반환한다.
- setChecked : 상태를 설정한다. true면 On, false면 Off로 설정한다.
- toggle : 현재의 토글 상태를 반전시킨다.
- 주요 이벤트
- click : Toggle 버튼을 클릭했을 때 발생하는 이벤트
- checked change(android.widget.Compound <== true or false 인 뷰를 위한 메서드) : On/Off 상태가 변경되면 발생하는 이벤트. 클릭 여부와 상관없이 변경을 감지하기 때문에 보통 이 이벤트를 사용한다.
- CheckBox
- 선택할 수 있는 항목들을 제공하고 체크를 통해 선택할 수 있도록 하는 뷰
- 다수의 CheckBox를 동시에 선택할 수 있다.
- 각각의 CheckBox는 독립적이므로 서로 영향을 주지 않는다.
- 주요 속성
- text : 체크 박스에 표시할 문자열을 설정한다.
- checked : 체크 상태를 설정한다.
- 주요 메서드
- isChecked : 현재 체크 상태를 확인한다.
- setChecked : 체크 상태를 설정한다.
- toggle : 현재 체크 상태를 반전시킨다.
- 주요 이벤트
- checkedChange : 체크 상태가 변경되는 사건을 감지한다.
- RadioButton
- 하나의 그룹 안에서 하나만 선택할 수 있도록 하는 뷰
- 주요 속성
- text : RadioButton에 표시되는 문자열을 설정한다.
- checked : 체크 상태를 설정한다. 반드시 하나는 체크해야 한다.
- 주요 메서드
- getCheckedRadioButtonId : 그룹 내에서 선택되어 있는 RadioButton의 id를 확인한다.
- setChecked : RadioButton 체크 상태 값. 체크 상태 설정 시 같은 그룹 내의 RadioButton은 모두 체크가 해제된 상태가 된다.
- 주요 이벤트
- checkedChange : 그룹 내의 RadioButton의 체크 상태가 변경되는 것을 감지한다.
- Switch
- On/Off 상태를 좌우로 이동하면서 설정할 수 있는 뷰이다. toggle과 유사하다.
- 주요 속성
- text : Switch 좌측에 표시되는 문자열을 설정한다.
- thumb : 버튼 부분의 이미지를 설정한다.
- track : 트랙 부분의 이미지를 설정한다. xml로 설정하면 on/off 상태일 때 이미지를 각각 설정할 수 있다.
- textOn : on 상태일 때 표시되는 문자열을 설정한다.
- textOff : off 상태일 때 표시되는 문자열을 설정한다.
- showText : textOn, textOff에 설정한 문자열을 보여줄 것인가를 설정한다. 기본값은 false.
- checked : on/off 상태를 설정한다.
- 주요 메서드
- isChecked : Switch의 on/off 상태 값을 반환한다.
- setChecked : Switch의 on/off 상태를 설정한다.
- 주요 이벤트
- checkedChange : Switch의 on/off 상태가 변경되는 것을 감지한다.
- CheckedTextView
- CheckBox, RadioButton을 커스터마이징 할 수 있도록 제공되는 뷰이다.
- TextView이기 때문에 기본적으로 문자열을 보여주는 것이 주 목적이며 클릭했을 때 상호작용되지 않는다.
- 체크 상태, 체크 표시를 보여주는 기능을 포함한다.
- 체크박스와 라디오버튼의 기능을 가지고 있지 않는다.
- 주요 속성
- checkMark : 체크 상태를 표시하는 아이콘을 설정한다.
- checkedTextView는 checkMark를 설정하면 우측에 표시된다.
- checkMark 속성이 아닌 다음 속성을 이용하면 원하는 방향에 표시할 수 있다.
- drawalbeTop, drawableBottom, drawableLeft, drawableRight
- checked : 체크 상태를 설정한다.
- clickable : 클릭이 가능한지 설정한다. CheckBox나 RadioButton이 가지고 있는 기능이 구현되어 있지 않기 때문에 개발자가 기능을 모두 구현해줘야 한다. 이때 clickable에 true를 설정해야 이벤트에 반응할 수 있고 이를 통해 리스너를 구현하여 기능을 구현해줘야 한다.
- checkMark : 체크 상태를 표시하는 아이콘을 설정한다.
- 주요 메서드(CheckBox와 유사)
- isChecked : 체크 상태 값을 반환한다.
- setChecked : 체크 상태를 설정한다.
- toggle : 체크 상태를 반전한다.
- 주요 이벤트
- click : 클릭했을 때 발생한다. checkedTextView는 이 이벤트를 반드시 설정해야 한다.
checkedTextView는 checkbox나 radioButton이 가지고 있는 기능(checkedChange ...)을 click 이벤트 발생 시 개발자가 모두 처리해줘야 한다.
- click : 클릭했을 때 발생한다. checkedTextView는 이 이벤트를 반드시 설정해야 한다.
- Chip
- 버튼, 체크박스, 라디오 등의 기능을 가지고 있는 UI 요소이다.
- ChipGroup을 통해 RadioButton 처럼 구성할 수 있다.
- 주요 속성
- style : Chip의 스타일을 설정한다. 기본값은 Chip.Action
- checkable: 체크 가능 여부를 설정한다.
- text : Chip에 표시할 문자열을 설정한다.
- chipIcon : Chip에 표시할 아이콘을 설정한다.
- chipIconVisible : chipIcon을 보여줄 지 설정한다.
- checkedIcon : 선택되었을 때 표시할 아이콘을 설정한다.
- checkedIconVisible : checkedIcon을 보여줄 지 설정한다.
- singleSelection : 내부의 Chip 중 하나만 선택되게 할 것인가를 설정한다.
- checkedChip : 최초에 선택되어 있을 Chip을 설정한다.
- 주요 메서드
- isChecked : 체크 상태 값을 반환한다.
- setChecked : 체크 상태를 설정한다.
- getCheckedChipId : 그룹 내에서 선택되어 있는 Chip의 id 값을 반환한다.
- 주요 이벤트
- checkedChange : 체크 상태가 변경되는 것을 감지한다.
- CloseIconClick : 닫기 버튼을 누르는 것을 감지한다.
- CheckedChange : ChipGroup 내부의 Chip의 체크 상태가 변경되는 것을 감지한다.
- ProgressBar
- 오래 걸리는 작업이 있을 경우 작업 중임을 표시하는 뷰이다.
- 3초의 법칙 : 사용자는 3초 이상을 기다려주지 않는다. 반응이 너무 늦으면 앱이 멈춘 줄 알고 종료할 수 있기 때문에 progressBar를 사용해 오래 걸리는 작업임을 알려준다.
- 주요 속성
- style : ProgressBar의 스타일을 설정한다. 보통 Material이 붙은 것을 사용한다.
- 구글의 Material Design 지침에 따라 디자인된 UI를 의미한다.
- 부드럽고 직관적인 애니메이션 효과, 그림자와 고도 표현, 다양한 색상 및 테마 등의 장점을 지니고 있다.
- 무엇보다 익숙하고 일관적인 디자인을 유지할 수 있다는 장점이 있다.
- Horizontal ProgressBar는 막대기 형으로 진행 상황을 나타낼 수 있는데, 아래 속성을 가진다.
- max : 최댓 값
- progress : 현재 값
- style : ProgressBar의 스타일을 설정한다. 보통 Material이 붙은 것을 사용한다.
- 주요 메서드
- getProgress : 현재 값을 반환한다.
- setProgress : 현재 값을 설정한다.
- incrementProgressby : 지정한 값 만큼 증가 혹은 감소시킨다.
- SeekBar
- ProgressBar와 매우 유사하지만 사용자가 값을 직접 지정할 수 있는 기능을 갖추고 있다.
- SeekBar(Descript)는 눈금이 있는 버전이다.
- 주요 속성
- style : SeekBard의 스타일을 설정한다.
- max : 최대 값(Descript는 눈금의 수)
- progress : 현재 값
- 주요 메서드는 ProgressBar와 같다.
- 주요 이벤트
- seekBarChange : SeekBar의 상태가 변경되는 것을 감지한다.
- 코드를 통해서 변경됐는지 혹은 사용자에 의해서 변경됐는지 구분이 가능하다.
- onProgressChanged - 값이 변경되었을 때
- onStartTrackingTouch - 값을 변경하기위해 터치했을 때
- onStopTrackingTouch - 값을 변경하기 위해 터치 한 후 떼었을 때
- seekBarChange : SeekBar의 상태가 변경되는 것을 감지한다.
- RatingBar
- 별점을 조절할 수 있는 뷰이다.
- 주요 속성
- numStars : 별의 개수를 설정한다.
layout_width가 match_parent로 되어있으면 numStars에 상관없이 가로로 꽉 차도록 별의 개수가 조절된다. - stepSize : 별점이 조절되는 양을 설정할 수 있다.
- rating : 현재 별점을 설정한다.
- isIndicator : 별점을 사용자가 조절할 수 있는지 설정한다. true면 사용자가 별점을 조절할 수 없다.
- style : RatingBar의 스타일을 설정한다.
- progressDrawable : 별의 이미지를 설정한다. 기본, 조절 중, 채워진 부분을 구분해줘야 한다.
- numStars : 별의 개수를 설정한다.
- 주요 메서드
- getRating : 현재 별점을 반환한다. 반환 타입은 float이다.
- setRating : 현재 별점을 설정한다.
- 주요 이벤트
- RatingBarChange : 별점이 변경되는 것을 감지한다. SeekBar처럼 변경되는 것만 감지하고, 사용자가 변경했는지 여부를 구분할 수 있다.
- ScrollView
- 배치되어 있는 뷰가 화면을 벗어날 경우 스크롤을 할 수 있도록 제공되는 뷰이다.
- 위 아래로 스크롤이 가능하며 HorizontalScrollView는 좌우로 스크롤이 가능하다.
- ScrollView와 HorizontalScrollView를 조합하면 상하 좌우 스크롤이 가능하다.
- 주요 메서드
- getScrollY : 현재 스크롤 된 Y 좌표를 반환한다. 반환타입은 int이고, 픽셀 수를 의미한다.
- getScrollX : 현재 스크롤 된 X 좌표를 반환한다.
- scrollTo : 지정된 위치로 스크롤한다. 입력된 좌표가 화면보다 크다면 최대한 이동한다.
- ScrollView에서는 Y좌표를, HorizontalScrollView에서는 X좌표를 설정한다.
- scrollBy : 현재 위치에서 지정된 값 만큼 이동한다.
- smoothScrollTo : 지정된 위치로 스크롤한다. 애니메이션이 동작한다.
- smoothScrollBy : 현재 위치에서 지정된 값 만큼 이동한다. 애니메이션이 동작한다.
- 주요 이벤트
- ScrollChange : 스크롤 변경을 감지한다.
- CardView
- 화면에 배치되는 뷰들을 그룹으로 묶어 관리할 수 있는 뷰이다.
- CardView 자체에 그림자를 두어 약간 공중에 떠있는 듯한 모습을 보여줄 수 있다.
- 주요 속성
- contentPadding : 내부 여백을 설정한다.
- cardCornerRadius : CardView 모서리의 둥근 정도를 설정한다.
- cardElevation : 공중에 떠있는 정도를 설정한다. 이에 따라 그림자 효과가 달라진다.
- FloatingActionButton
- 공중에 띄워져 있는 버튼 용도로 사용한다. (스크롤에 상관없이 화면에 고정되어 있는 버튼 등)
- ImageButton 처럼 이미지를 넣어 사용한다.
- 주요 속성
- srcCompat : 표시할 이미지를 설정한다.
- 주요 이벤트
- click : 클릭되는 것을 감지한다.
- CalendarView
- 달력을 표시할 수 있는 뷰이다.
- 주요 속성
- firstDayOfWeek : 한 주의 첫 번째 요일을 설정한다. 1 = 일요일(기본), 2 = 월요일 ....
- minDate : 달력에 표시되는 최소 날짜
- maxDate : 달력에 표시되는 최대 날짜
- 주요 메서드
- setDate : 날짜를 설정한다. 원래는 지정한 날짜를 millisec로 환산한 값을 넣어야 하지만, Java의 Calendar 객체를 사용하면 간편하다.
- getDate : setDate를 통해 설정된 날짜 값을 반환한다. 즉, 사용자가 터치한 날짜를 반환하지는 않는다. 해당 기능을 원할경우에는 아래 이벤트를 사용한다.
- 주요 이벤트
- dateChange : 사용자가 달력을 터치하여 선택한 날짜를 감지한다. 사용자가 터치한 날짜를 반환하고 싶다면 선택한 날짜를 setDate로 설정해줘야 한다.
- SearchView
- 검색어를 입력할 수 있도록 제공되는 뷰이다.
- 검색에 관련된 기능은 없으며 검색어 입력 용도로 사용한다. 즉, 개발자가 직접 구현해야 한다.
- 주요 속성
- queryHint : 안내 문구를 설정한다.
- 주요 메서드
- getQuery : 사용자가 입력한 검색어를 반환한다.
- 주요 이벤트
- queryText : 검색어를 입력하거나 enter 버튼을 누르면 검색어를 받는다. onQueryTextSubmit의 반환값이 false면 키보드가 내려가고, true면 키보드가 유지된다.
'TIL > Android' 카테고리의 다른 글
Menu (0) | 2024.04.09 |
---|---|
권한 (0) | 2024.04.05 |
Adapter View (0) | 2024.04.04 |
view와 layout (0) | 2024.03.20 |
안드로이드 기초 (0) | 2024.03.19 |