Palette란 ?
디자인을 코드로 작성하여 표현하는 것이 아니라 마우스로 직접 조작하여 표현할 수 있는 기능.
Palette 메뉴에는 자주사용하는 컴포넌트들 / Text / Buttons / Widgets / Layout/ Container / Google에서 제공하는 카테고리들이 존재!
1. Common - 자주사용하는 것들을 모아놓았다
2. Text
TextView : 화면에 텍스트를 표시한다
Plain Text : 키보드를 표시해주는 textview (아래에 밑줄 처져있음)
Password : 키보드를 표시해주고, 비밀번호와 같은 개인 정보 보호 정보들을 치도록 텍스트 숨김처리
Password(Numeric) : 숫자 키보드를 표시하고 개인 정보 보호를 위해 입력한 텍스트 숨김
Email : 스페이스바 왼쪽에 '@' 문자를 추가해서 표준 텍스트 키보드를 표시
Phone : 전화번호 형식의 텍스트를 입력하게 숫자 키보드 표시 & '-' 표시
Postal Address: 우편번호 형식의 텍스트를 입력 / 키보드 맨 윗줄에 길게 탭했을 때 숫자가 입력됨
Multiline Text : 새 줄을 추가하기 위해 Enter키를 추가하여 표준 텍스트 키보드를 표시해준다.
Time : 시간형식의 텍스트 / 사용자가 입력하기 쉽게 ':'가 있음
Date : 날짜 형식의 텍스트를 입력하기 쉽게 '/'문자를 추가하여 숫자 키보드를 표시
Number:기본 숫자 키보드 표시 ( '-', ',' 등의 부호 표시 안됨)
(signed) : 시작시 '+', '-' 문자 허용한다
(Decimal):소수점 혀용
AutoCompleteTextview: 사용자가 입력하는 동안 자동완성 제안을 표시하는 편집이 가능한 텍스트 보기
MutilAutoCompleteTextView : 확장 가능한 편집 가능한 텍스트보기로, AutoCompleteTextView사용자가 전체 내용 대신 입력하는 텍스트의 하위 문자열에 대한 완성 제안을 표시
CheckedTextView : 체크박스를 제공하는 확장 TextViewMainActivity에서 setOnClickListner을 통해 체크 박스의 체크와 해제 속성을 부여 할 수 있음
TextlnputLayout : 텍스트를 입력하는 곳이 Layout의 속성을 가짐
Layout의 속성을 설정하듯이 속성을 설정할 수 있음
3. Buttons
Button : 사용자가 클릭하여 작업 수행할 수 있음
Activity안에서 setOnClickListener로 버튼을 누르면 어떤 작업을 할건지 설정 가능 / 또는 onClick을 설정해줌
ImageButton : 이미지 버튼을 표시
Chip : 타원형의 텍스트를 표현하는 버튼
Chipgroup : 다양한 chip을 관리할 수 있는 컴포넌트
check box : 선택 또는 선택 해제 할 수 있는 체크 박스의 버튼
radioButton : 라디오 버튼
RadioGroup : 세트에서 하나의 옵션 선택
Toggle Button : 두 상태 사이에서 설정을 변경, 누르기 전 후 버튼 안의 텍스트 변경 (default : off)
Switch: 텍스트 오른쪽에 스위치 생성
Floating Action Button : Ui 위에 떠있는듯한 버튼, 버튼을 활용하여 특수 동작 기능을 넣을 수 있다. (안에 사진을 지정?할 수 있다)
4. Widgets
View ; 이미지 내에서 공간을 설정
imageView : view의 속성을 상속받아, 공간안에 사진을 넣는다
webView : view의 속성을 상속받아, url과 연결된 뷰를 넣는다.
각 os별 내장된 웹 브라우저를 뷰형태로 앱에서 표현한다.
VideioView: view를 상속받고 액티비티에 동영상을 넣을 수 있다.
calendarview: view를 상속받아 달력을 넣을 수 있다.
탭, 클릭 동작으로 날짜를 선택할 수 있고, 원하는 날짜로 달력을 스크롤 할 수 있다.
progressbar : 진행 상황을 알려주는 원형의 컴포넌트
(horizontal); 수평의 작업 진행률을 나타내는 사용자 인터페이스 요소
seekbar : progressbar의 확장 위젯 ( 드래그 기능이 추가됨)
(discrete) : 불연속적으로 놓여있는 점 위를 움직이며 조절하는 컴포넌트
rating bar : 별표로 등급을 매길 수 있는 컴포넌트
search view : 사용자가 검색어 입력 후 search provider에게 검색을 요청할 수 있는 ui 제공
texture view :비디오와 같은 콘텐츠 스트림을 표시 가능
surface view: 뷰 계층 구조에 포함된 형식과 크기의 제어가 가능한 전용 드로잉 표면을 제공
horizontal divider : 수평으로 나눔
vertical divider:수직으로 나눔
5. Containers
spinner : 여러개의 값 중 1개를 선택하기 위해 사용하는 기본 위젯
recycler view : 스크롤이 가능한 컨테이너에 여러개의 뷰를 담아서 보여주는 listview의 진화 버전
(list view : 보여줘야하는 뷰 객체를 다 생성 / recycler view : 화면에 보여지는 일정 갯수의 view객체만 생성 후 스크롤 할 때마다, 화면 밖으로 나간 view의 정보를 viewHolder에 저장시켜놓고 해당 view들을 재사용함)
scrollview: 수직으로 스크롤하는 기능 - 하나의 위젯만 가능
nestedscrollview : 한 화면에 여러개의 스크롤 사용
viewPager2 : viewPager에서는 좌우 스크롤링만 가능, 상하 스콜링기능을 추가함
cardview: 둥근 모서리, 배경과 그림자가 추가된 frameLayout
appbarlayout : LinearLayout 머티리얼 디자인 앱 바 개념의 많은 기능, 즉 스크롤링 제스처를 구현 하는 카테고리 ( ??)
bottom app bar :
.NET Framework를 "cradles" 시키는 모양의 배경을 지원하는 툴바의 확장
navigationview : 애플리케이션의 표준 탐색 메뉴, 메뉴 내용은 메뉴 리소스 파일로 채울 수 있음
Toolbar
응용 프로그램 콘텐츠 내에서 사용하기위한 표준 도구 모음
TabLayout : 탭을 표시하기위한 가로 레이아웃을 제공
TabItem : TabLayout 레이아웃 내에서 탭 항목을 선언 할 수있는 특수한 '보기'
TabLayout에 추가되지 않으며 탭 항목의 텍스트, 아이콘 및 사용자 정의 레이아웃을 설정할 수 있음
ViewStub : 런타임에 레이아웃 리소스를 느리게 확장하는 데 사용할 수 있는 크기가 0 인 보이지 않는 보기
<include> : 레이아웃에 재사용 가능한 구성요소를 추가
<fragment> : FramentActivity 내의 어떤 동작 또는 사용자 인터페이스의 일부, 액티비티의 모듈식 섹션
여러 개의 프래그먼트를 하나의 액티비티에 결합하여 창이 여러 개인 UI를 빌드할 수 있으며, 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있음
자체적인 수명 주기를 가지고, 자체 입력 이벤트를 수신하고, 액티비티 실행 중에 추가 및 삭제가 가능
(다른 액티비티에 재사용할 수 있는 "하위 액티비티"와 같은 개념)
<view>: 다른 View들을 포함하고 있거나 포함할 수 있는 View를 말하며, 일반적으로 ViewGroup을 상속하면서 Layout이 아닌 클래스를 지칭
6. Google
AdView : View배너 광고를 표시API
MapView : Google지도 서비스에서 얻은 데이터와 함께지도를 표시하는 API
7. legacy
: android 8 부터 유용x
https://developer.android.com/jetpack/androidx/releases/legacy?hl=ko
레거시 | Android 개발자 | Android Developers
레거시 이 아티팩트와 아티팩트의 클래스는 지원 중단되었습니다. Android 8부터 백그라운드 확인 제한으로 인해 이 클래스는 더 이상 유용하지 않습니다. 최근 업데이트 현재 안정화 버전 다음
developer.android.com
8. Helpers
Group : 여러 뷰들의 visibility를 그룹으로 묶어 관리하게 편하게 해준다.
Barrier(가상장벽) : 뷰들의 크기가 런타임으로 변할 때, 적합한 제약조건을 생성할 수 있다,
Guidelines : 가상의 뷰로 뷰의 위치를 잡는데 도움이 되는 유틸리티 클래스이다.
https://academy.realm.io/kr/posts/constraintlayout-it-can-do-what-now/