Android #1 - pallete, manifest

yoondengo·2021년 4월 26일
0

ANDROID

목록 보기
1/4
post-thumbnail

pallete 항목 조사 (기본적으로 android: 에 속해있다고 가정)

  • Text
	- TextView : 텍스트만 딸랑 보여주는 태그
		- id : 이름을 지어줄수 있다.
		- wrap content : width, height속성에 지정해주는 값중 하나인데 필요한 길이만큼만 사용할 수 있게 해주는 값이다.
		- match parent : 위와 반대로? 부모 태그의 크기에 무조건 맞추어야 하는 값. 예를들어서 width에 해주면 넓이가 부모태그만큼 늘어남
		- ems : wrap content일때 ems로 지정해준 값만큼 크기를 정할 수 있다.
		- text size,color,style :  text써있는 속성들로 글자에 관련한 여러가지
	- EditText : 밑줄과 함께 텍스트를 보여주는 태그 , 글자의 입력 및 수정을 가능하게 한다. TextView의 파생 태그
		- maxLength : 최대 글길이
		- selectAllOnFocus : 해당 영역을 터치했을때 전체 선택되게 할건지 말건지 (true, false값을 넣어서결정)
		- hint : 입력하기 전에 기본적으로 떠있는 흐린 안내?문자(이메일을 입력해주세요와 같은것), 입력하려고 터치하는순간 사라진다.
		- textColorHint : hint의 색상을 정할수있다.
		- visibility : 해당 위젯을 보이게할거냐 말거냐를 결정 가능
		- scrollbars : 스크롤바 만들기, 수평과 수직 스크롤바 고를수 있음
		- lines: **조금 어려움, 화면에 여기에 적은 숫자만큼의 줄만 “보인다”
		- minLines : 상자의 크기가 이 값으로 정해짐
		- maxLines : lines와 같이쓰면 안되는듯 하다. 따로 썼을때 기능은 동일해 보인다.
		- gravity : top,bottom,left,right - 해당 위젯을 각 방향에 위치시킬 수 있다, start,end - 부모 뷰그룹의 첫, 마지막에 위치시켜준다 , |로 중복 값 적용 가능
		- inputType : 이 속성값에 따라 EditText에 입력받을 형태를 결정할 수 있음
			- textPersonName : 사람이름 입력(플레인 텍스트 했을때)
			- textPassword : 기본 password 입력된 문자들은 전부 * 로 보인다 (Password)
			- numberPassword : 패스워드값으로 숫자만 받음 (Password(numeric))
			- textEmailAddress :  이메일 주소 입력하게 함 (E-mail)
			- phone : 전화번호 입력받게함 (-, 숫자 밖에 입력 못함) (Phone)
			- textPostalAddress : 우편번호를 입력받게 함 (Postal Address)
			- textMultiLine : 여러줄 입력가능(키보드에 개행버튼이 뜸) (Multiline Text)
			- time : 기호: 와 숫자만 입력가능 (Time)
			- date: 기호-와 숫자만 입력가능 (Date)
			- number : 숫자만 입력 가능, 자판도 숫자만 뜸 (Number)
			- numberSigned : 부호가 있는 숫자 입력가능, 말그대로 맨앞에만 -,+를 붙일수없고 수식처럼은 쓸수 없다 (Number(signed))
			- numberDecimal : 소수점이 있는 숫자 입력 가능 (Number(decimal))
	- AutoCompleteTextView : 설정해둔 단어들이 자동완성 추천, 아래방향으로 드롭다운되어서 단어들을 선택할 수 있다
		- completionHint : hint랑 똑같은 역할인듯 (왜인지는 모르겠으나 아무것도 안나옴 ㅠ)
		- completionThreshold : 기본 2단어 이상일때 밑으로 자동완성 단어가 주르륵?나온다 (마찬가지로 작동안되는듯) (ArrayAdapter라는게 있는 모양인데 이걸 코틀린 코드로 해줘야 하는듯)
		- dropDownHeight : 드롭다운 높이
		- dropDownAnchor : 드롭다운 고정?
	- MultiAutoCompleteText : AutoCompleteTextView를 상속받음, 위의 뷰와는 다르게 콤마를 기준으로 한줄에 여러단어를 자동완성 할 수있다
		- 속성이 따로 있는것 같지는 않고 코틀린 코드에서 setTokenizer로 comma tokenizer설정을 해줘야하는 모양이다. 
	- CheckedTextView : TextView + check상자 있는거
		- checkMark : 체크마크가 될 아이콘 결정
		- checked : 처음부터 체크되어있을지 말지
	- com.google.android.material.textfield.TextInputLayout : 글자 입력 창
		- 특별한건 없는데 안에 TextInputEditText라는 태그가 하나 더 있고 여기에 힌트를 적어줄 수 있다
		- 보통은 입력하려고 터치하면 힌트가 사라지지만 여기에선 힌트가 위로 이동하면서 작아지고 그 아래에 글자를 쓸 수 있게 한다.
  • Buttons
	- Button : 말그대로 버튼 위젯이다. MainActivity에서 코드를 짜야 버튼에 액션?이 생긴다.
		- TextView를 상속하였기 때문에 TextView의 속성을 모두 사용할 수 있다.
	- ImageButton : 이미지가 있는 버튼, ImageView를 상속받음
		- srcCompat : 이미지의 경로로 가져와줌 (안드로이드 라이브러리에 있는 이미지들 사용)
		- src : 이미지의 경로로 가져와줌 (사용자가 직접 다운받은 이미지들 사용)
	- com.google.android.material.chip.Chip : 카테고리 혹은 해시태그 선택할때 터치하는 작은 항목들?이라 생각하면 좋을듯
		- checkable : true로 해놓으면 칩을 터치했을때 왼쪽에 체크 표시가 뜬다.
		- (app)closeIconEnabled : true로 해놓으면 칩안의 오른쪽에 x버튼이 생긴다
		- (app)chipBackgroundColor : chip의 배경색상 설정
		- (app)chipIcon : chip왼쪽에 아이콘을 둘 수 있음(@drawable)
	- com.google.android.material.chip.ChipGroup : chip을 하나의 그룹으로 묶을 수 있다. 이 태그안에 chip태그들을 넣는 방식이다, material.io라는 사이트에서 따로 제공하는 모양
		- (app)singleLine : true하면 여러줄에 걸쳐서 있던 chip들이 한줄로 바뀜 -> (HorizontalScrollView로 Scrollbar추가해서 드래그 하는식으로 옆으로 넘길 수 있음)
		- (app)singleSelection : true하면 해당 그룹에서 하나의 칩만 선택할 수 있음
	- CheckBox : 약관동의같은거 나올때 있는 그 체크박스
		- 개발자문서에 따르면 Button을 상속함
		- checked : true해놓으면 액티비티?가 켜질때부터 체크가 되어있다.
	- ToggleButton : On일때와 Off일때로 나뉘는 버튼.
		- textOn : On일때 버튼에 쓰여져있는 내용
		- textOff : Off일때 버튼에 쓰여져 있는 내용
		- disabledAlpha : The alpha to apply to the indicator when disabled.
	- Switch : 보통 알림끄기, 켜기 할때 많이 보이는 버튼
		- thumb : thumb가 스위치의 동그라미 그건데 그것을 동그라미가 아니라 다른거로 바꿔줄 수 있음
		- switchMinWidth : 동그라미가 움직이는 길다란 바(track)의 길이를 정하는 속성
		- switchPadding : 스위치 부분과 텍스트를 띄어주는 속성
		- track : 길다란 바의 모양을 바꿔줄 수 있음
	- com.google.android.material.floatingactionbutton.FloatingActionButton : 배달의 민족에서 메뉴고를때 오른쪽 하단에 있는 그 버튼이다. 메뉴를 스크롤해도 계속  그자리에 떠있다.
		- srcCompat : 원하는 아이콘을 넣을 수 있음
		- (app)fabCustomSize : 숫자로 버튼의 크기를 조절할 수 있다.
		- (app)backgroundTint : 버튼의 배경색 변경
		- (app)rippleColor : 버튼의 아이콘 색상 변경
		- (app)borderWidth : 테두리의 두께 설정
	- radioButton : 흔히 알고있는 그 라디오 버튼이다.
		- check박스와 똑같음
	- radioGroup : 라디오 버튼은 그룹안에서 하나만 선택 가능해야 의미가 있기 때문에 이 그룹에 넣어줘야 함
		- orientation : horizontal로 하면 수평 정렬, vertical하면 수직 정렬
		- 기본적으로 수직방향이 있는 LinearLayout의 서브클래스라고 함. 그래서 디폴트로 vertical하게 되는듯
  • Widgets
	- View 
		- 안드로이드 화면을 구성하는 모든것
		- 눈에 보이는 뷰를 위젯이라고 하고 보이지 않는 뷰를 레이아웃이라고 한다.
		- 뷰는 뷰를 담을 수 있다.
		- 사각형 영역안을 차지하고 있고 그려지는 것과 이벤트 발생에 책임이 있다(개발자 문서 내용인데 무슨말인지 모르겠음)
	- imageView : 이미지 띄우기
		- drawable 폴더안에 원하는 아이콘(사진) 추가해서 쓸 수 있다.
		- tint : 이미지에 색조를 입힐 수 있다.
		- adjustViewBounds : 비율을 맞춰주는 속성
		- baseLineAlignBottom : 텍스트 뷰의 경우 이게 기본적으로 문자열 아래임, 근데 이미지뷰는 그게 없어서 이 값을 true로 하면 문자열과 같이 아래가 기준선이 된다.
		- baseLine : 위랑 비슷한데 이미지의 중간부분에 기준선을 둘 수 있음, 숫자로 정할 수 있다.
		- src : 이미지 불러오기 (tools: 으로 되어있으면 android:으로 바꿔주어야함)
		- scaleType : 이미지를 다양한 속성값으로 크기 변경한다, fixXY값만 이미지 비율을 깨고 나머지는 비율을 지켜줌
		- cropToPadding : 이미지뷰가 레이아웃 보다 크다면 잘라낼 것인지 결정
	- WebView :  카카오톡같은데서 인터넷 링크 들어가면 나오는 그것
		- 외부 네트워크에 요청을 해서 웹 뷰에 띄울 수 있는데 이건 메인 엑티비티에서 하는 것 같다.
	- VideoView : 말그대로 동영상 보여주는 뷰
		- WebView와 비슷하게 외부 네트워크에 요청을해서 띄우는 형식이다.
	- CalenderView : 달력 보여주는 위젯
		- firstDayOfWeek : 달력에서 요일의 시작을 몇번째 칸부터 할건지 정함(1로 하면 일요일부터 시작)
		- maxDate : 달력에 표시할 최대 날짜 설정
		- minDate : 달력에 표시할 최소 날짜 설정
	- ProgressBar : 배터리 잔량 표시될때라던지 하여튼 진행률 나타내는데에 쓰이는 그런 바
		- (android아님)style : 바의 형태를 결정할 수 있다 (막대 모양으로 할건지 원모양으로 할건지)
		- progress : 초기 값 설정
		- max : 최대 범위
		-  indeterminateOnly : 현재 진행형임을 표시 할건지 결정 (true하면 그 진행 메세지 뜰때 보이는 것 처럼 빙글빙글 계속 돌아감)
	- SeekBar : 음량, 밝기 조절 같은거 할때 보이는 그것
		- thumb : 동그란 조절기? 바꿀수 있음
		- max : 최대치일때 얼마만큼의 숫자를 가질것이냐를 정해줌
		- style="@style/Widget.AppCompat.SeekBar.Discrete" : 딱딱 끊어서 조절할 것인지 결정
	- RatingBar : 별점 매길때 있는 그것
		- isIndicator : 별점을 그냥 보여주기만 할건지 사용자가 직접 바꿀 수 있는지 결정(배달의 민족에서 식당별점, 사용자 리뷰 이 차이)
		- numStars : 화면에 표시되는 별의 개수
		- stepSize : 평점 변경 단위
		- rating : 최초 평점
	- SearchView : 검색버튼 누르면 오른쪽으로 검색창 쫙 펼쳐지면서 맨 오른쪽에 x버튼 나오는 그것(카카오톡 상단에 검색 버튼 생각하면 될듯..?)
		- searchIcon : 검색 아이콘 변경
		- closeIcon : 검색창 오른쪽에 x버튼 변경 가능
		- inconifiedByDefault : true로 하면 터치했을때 검색모양 아이콘이 사라지고 그자리에 글자를 입력, false로 하면 그 옆에 글자 입력
		- queryHint : 검색창에 회색 흐린글씨로 떠있는 글씨 , 글씨 입력시에는 사라짐
		- inputType : 검색창에 어떤 타입의 값만 입력받을지 설정
		- imeOption : 키보드 하단에 해당 검색의 목적?을 아이콘으로 보여줌(메세지 전송으로 해놓으면 메세지 전송버튼이 있음)
	- TextureView : 뭔소린지 모르겠음 ㅠ 일단 보류 (연속적인 이미지와 동영상을 출력할때 사용하는 뷰?라고 한다)
	- SurfaceView
		- ImageView나 TextView를 생각하면 되는데, 이 뷰는 Surface holder라는 공간에서 값을 가져온다고 한다..?
		- 하드웨어 가속이 가능해서 그래픽 처리가 빠르다고 한다. 3D 처리를 위해서 사용된다고 함
	- Horizontal, Vertical Divider -> pallete에 있는데 그냥 View를 일직선으로 바꾸어준 것
  • Contianers
	- Spinner : 메인 액티비티 일단 보류했기 때문에 직접 써보지는 못했다 ㅠ
		- 기존에 내가 알고있던 콤보박스와 같은거 인듯. (누르면 선택지 아래로 드롭다운 , 하나 선택)
		- 이 위젯도 메인 액티비티의 ArrayAdapter를 수정해줘야 사용할 수 있는 것 같다.
		- background : drawable폴더에 꾸며주기용 xml파일을 만들어서 이 속성에 적용시켜줄 수 있다
		- theme : style이란 폴더에 꾸며주기용 xml파일을 만들어서 드롭다운된 그것을 꾸며줄 수 있다
		- spinnerMode : 기본적으로 dropdown모드인데 , dialog모드로 하면 아래로 나오는것이 아닌 전체화면 보다 약간 작은 크기의 창이 새로 나와서 선택하는 식?이다
	- androidx.recyclerview.widtget.RecyclerView
		- 많은 수의 데이터 집합을, 제한된 영역 내에서 유연하게(flexible) 표시할 수 있도록 만들어주는 위젯
		- 위의 데이터 집합을 스크롤 가능한 리스트로 표현해준다.
		- 일단....보류..........!!!
	- ScrollView : 이 태그안에 다른 파츠들을 화면이 오버될때까지 넣어주면 스크롤바가 생겨서 드래그 할 수 있다. (위아래로 스크롤)
		- 근데 이 태그안에는 하나의 위젯 만 넣을 수 있다. -> 따라서 Linear Layout을 활용해야함(orientation을 vertical로 해야함)
		- scrollbarFadeDuration : 스크롤바가 페이드아웃되는 시간?
		- scrollbarSize : 스크롤바 사이즈
		- VerticalScrollbarPosition : 스크롤바 위치
		- fillViewport : true로 해놓으면 스크롤바가 채워지지 않았을때 밑으로 떨어진다는데 아무 변화 없음 ㅠ
	- HorizontalScrollView : 수평 스크롤 (LinearLayout에서 orientation horizontal로 해야함)
		- ScrollView와 속성값 동일 Vertical이라고 써있는 속성들만 Horizontal로 바꾸면 됨
	- NestedScrollView : ScrollView와 동일해 보이나 RecyclerView를 포함하는 스크롤 화면을 구현해야 할 경우에 이것을 써야한다
		- 중첩 스크롤이란것을 지원한다고 함
		- 다른 스크롤 가능한 뷰 안에 스크롤 가능한 뷰를 구현하고자 할 때 사용하는 위젯 - 무슨말인지는 잘 모르겠는데 일단 적음
		- descendantFocusability : 뷰 그룹 내에서 포커스를 맞출 때 설정하는데 blocksDescendants라는 옵션으로 해당 뷰 그룹의 하위 뷰가 포커스를 받지 못하게 하는 옵션이 있음
	- android.viewpager2.widget.ViewPager2 : 리사이클러뷰를 기반으로 만들어진 컴포넌트
		-  RecyclerView와 마찬가지로 어댑터를 사용함
		- 스크롤이 있는 형태가 아니고 딱딱 끊어져서 다음 콘텐츠를 딱 보여줌
		- 에어비엔비 홈화면에서 사진 넘기는게 이거인듯
		- 배달의 민족에서 카테고리 들어가서 수평방향으로 넘기는거랑 같은건지는 모르겠음
	- androidx.cardview.widget.CardView : 카드모양 뷰를 만들어준다
		- LinearLayout을 넣고 여기에 이미지뷰와 텍스트뷰를 넣어주는 식으로 구성
		- (app)cardBackgroundColor : 배경색 바꾸기
		- (app)cardCornerRadius : 카드의 모서리 둥글게
		- (app)cardElevation : 그림자 지정
		- (app)contentPadding : 카드 뷰의 패딩 지정
		- (app)cardUseCompatPadding : true로 하면 음영이 표시될 공간을 자동으로 확보 cardElevation이 클수록 공간이 많이 필요함
		- 에브리타임의 채용 정보가 카드뷰로 구현한 모양이다
	- com.google.android.material.appbar.AppBarLayout : 상단에 앱바가 존재하는 형태의 전체 레이아웃을 구성할 수 있다
		- 생성하는 순간 기본적으로 Toolbar부분이 collapse되는거라던지, 탭바를 만들것인지, 플로팅 버튼을 띄울것인지 선택후 생성 가능하다
		- (app)elevation : 앱바 밑부분의 음영 부분인데 작동하지 않는다 해결방법이 있긴 해보인다
		- (app)expanded : 앱바 레이아웃의 확장 여부를 설정한다는데 차이를 모르겠음 ㅠ
		- (app)statusBarForeground : 이것도 잘 모르겠다 상태표시줄이 무엇인지 잘 모르겠음
	- com.google.android.material.bottomappbar.BottomAppBar : 말 그대로 하단에 위치하는 앱바
		- 앱바에 플로팅 버튼도 같이 띄울 수 있는데 앱바랑 겹쳐지게 할건지, 겹쳐진다면 움푹파인 앱바의 모양으로 할건지를 결정 가능
		- fab관련 속성은 CoordinateLayout안에 FAB와 함께 들어가있다는 전제하에 적용가능
		- 플로팅 버튼의 위치도 바꿀 수 있다.
		- (app)navigationIcon : 아이콘 넣으면 앱바 좌측에 아이콘 생김
		- (app)backgroundTint : 앱바 배경화면 바꾸기
		- (app)elevation : 음영
		- minHeight : 앱바의 높이
		- (app)fabAlignmentMode : 플로팅 버튼 정렬
	- com.google.android.material.navigation.NavigationView : 프로필?버튼 같은거 누르면 왼쪽이나 오른쪽에서부터 튀어나와서 화면을 3/4정도만 덮는 그 창
		- 일단 이것도 다른 파일들을 따로 만들어서 적용시켜야하는 그런 구조인듯
		- 그 튀어나오게 해주는게 DrawerLayout이라고 함
		- 그리고 그 내용이 이제 NavigationView인듯
		- 역시 만들어볼수가 없었기 때문에 일단 말그대로 조사만 함
		- background : 배경색상 변경
		- (app)headerLayout : 파일을 따로 만들어서 적용시켜주는 모양이다
		- (app)menu : 이것도 마찬가지인듯
	- com.google.android.material.bottomnavigation.BottomNavigationView : 카카오톡이나 배민 등 여러 어플의 맨아래 그것임. 항목을 누르면 해당 페이지로 바뀜
		- 아이템에 대한 추가는 따로 해줘야 하는듯 파일을 따로 만들어서 app:menu속성에 추가해 주면 되는 것 같다
		- 메인액티비티 코틀린 코드에서 항목 누르면 페이지 바뀌는거 구현
		- (app)itemIconTint : 항목(item)의 아이콘에 대한 색상변경
		- (app)itemTextColor : 항목의 글자에 대한 색상변경
		- 확실한건 아닌데 위의 두 속성값을 주면 선택되었을때만 색이 적용되는 형태인것 같다.(아님 코드를 따로 짜야하는건지?)
		- ViewPager2까지 적용해주면 스르륵 넘기는 효과도 줄 수 있다.
	- androidx.appcompat.widget.Toolbar : 상단에 생기는 앱바라고 보면 될것 같다. 근데 Tool이있는 이전으로 돌아가기라던가 검색버튼 등등이 있는것이라고 생각하면됨
		- 태그안에 위젯을 넣으면 툴바의 위젯이 될 수 있다.
		- styles.xml에서 어플을 키면 기본으로 상단에 있는 ActionBar를 NoActionBar로 만들어줘야함
		- 메인 액티비티 코틀린 코드에서 우리가 쓸 이 툴바를 App Bar로 지정해주는 코드를 넣어야함
	- com.google.android.material.tabs.TabLayout : 배민 카테고리 들어가면 상단에 다른 카테고리 고를 수 있는 그 부분이다.
		- com.google.android.material.tabs.TabItem 태그를 추가해서 항목을 생성할 수 있다 (Icon속성으로 아이콘도 추가 가능)
		-  탭선택 이벤트 처리 역시 코틀린 코드로 짜야하는 듯
		- (app)tabMode : Scrollable모드로 하면 배달의 민족 그거랑 똑같이 옆으로 드래그 가능하다, 이거 안해주면 낑겨서 들어감
		- (app)tabContentStart : 여기 지정해준 숫자만큼 첫번째 항복이 맨 왼쪽과 떨어져있는 상태임(margin이라고 일단 이해함)
		- (app)tabIndicator : 탭 아래에 선택되었을때 생기는 그 밑줄 부분 , 따로 틀을 만든것을 지정해주어야 하는 모양이다
		- (app)tabRippleColor : 탭 눌렀을때 동그랗게 번지는 그거 색상 정하기
	- ViewStub : 런타임에서 늦은 전개(lazy-inflate)를 원할 때 , 사이즈가 없는 보이지 않는 뷰
		- 진짜로 모르겠다.....
		- 자주 사용하지 않은 뷰를 그릴때 지정해 주면 불필요하게 레이아웃을 그릴 필요가 없어서 성능에 도움이 된다고 함
		- 자주 사용하지 않는 부분(뷰나 레이아웃?)을 링크로 갖고 있다
		-  layout 재사용..?? 레이아웃 공부 먼저 해야할듯
	- include : 이것도 레이아웃 재사용을 위한 태그라고 함...
		- 레이아웃을 재사용하면 재사용 가능한 복잡한 레이아웃을 만들 수 있으니 유용하다.
		- xml파일로 원하는 레이아웃 꾸며서 재사용한다 이런말인듯
		- 위에랑 어떤 차이가 있을까
	- requestFocus : 포커스를 맞춰주는 태그...? 개발자 문서에서도 찾을 수가 없다
	- <fragment>
	- NavHostFragment
	- <view>
  • Helpers : 뷰의 배치를 돕는 가상 오브젝트
	- androidx.constraintlayout.widget.Group : 여러뷰를 참조하여 그 뷰들을 쉽게 숨기거나 나타낼 수 있음
		- (app)constraint_referenced_ids : 여기에 콤마로 참조할 위젯여러개를 추가할 수 있음
	- androidx.constraintlayout.widget.Barrier : 장벽을 만들어서 그 이상 뷰들이 넘어 오지 못하도록 만듬
		- (app)barrierDirection : barrier의 방향을 결정 (end라고 해주면 글자의 끝에 수직선으로 맞춰진다.)
		- (app)constraint_referenced_ids : 장벽의 기준점으로 삼을 뷰의 아이디를 여러개 넣을 수 있다.
		- (app)barrierAllowsGoneWidgets : true와 false로 참조하던 뷰가 GONE(visible,invisible,GONE이 있는데 GONE은 아예 공간도 안차지하고 사라지는것)될때의 동작을 지정
		- 위에설명 이어서 하면 false로 하면 참조된 객체중 GONE되면 손절?하고 남아있는 객체로만 배리어를 형성하고 true로 하면 배리어를 없었던걸로?하는 듯(내 느낌)
	- androidx.constraintlayout.widget.Guideline : ConstraintLayout내에서 다른 뷰들의 배치를 돕는 목적으로 쓰임
		- 예를들면 가이드라인 두개를 두고 그 사이에 버튼 위젯을 넣으면 이 가이드라인 사이 만큼 배치가 되는것
		- orientation : 수직 가이드라인으로 할건지 , 수평 가이드라인으로 할건지
		- (app)layout_constraintGuide_begin : 좌측 또는 상단으로 부터 고정된 거리값만큼 띄고 배치
		- (app)layout_constraintGuide_end : 우측 또는 하단으로 부터 고정된 거리값만큼 띄고 배치
		- (app)layout_constraintGuide_percent : 0~1사이의 값을 넣어서 전체 길이의 비례로 배치
		- 가운데에 오는 위젯은 app:layout_constraintLeft_toLeftOf(right, top, bottom도 동일)로 각각 왼쪽 오른쪽 가이드라인 id입력해줘야함
		- 근데 해보니까 안됨...ㅠ
	- 아래태그들은 constraintlayout2.0에 추가된 것들인데 dependencies에 implementation 쓰고 sync in을 꼭 눌러줘야 적용이 된다(이것땜에 삽질함)
	- androidx.constraintlayout.helper.widget.Flow : chain의 간소화, css의 flexbox와 비슷, chain의 방향을 설정 할 수 있다
		- orientation : 방향 설정
		- (app)constraint_referenced_ids : Flow가 참조할 것들
		- (app)flow_horizontalAlign  : start로 하면 왼쪽에 붙음 , end로 하면 오른쪽에 붙음
		- (app)flow_verticalStyle : chain 스타일 지정 (packed - bias로 위치 지정 , spread, spread_inside)
		- (app)flow_verticalBias : packed일 경우의 chain내에서의 위치 지정이라는데 잘 모르겠음
		- (app)flow_verticalGap : 여백 주기
		- (app)flow_wrapMode : chain으로 하면 공간이 부족할때 여러 줄에 걸쳐서 뷰를 배치한다고 함
		- https://decode.agency/flow-and-layer-2-new-cool-views-in-constraint-layout-2-0-2/
	- androidx.constraintlayout.helper.widget.Layer : 여러 뷰에서 가상 계층을 생성하여 애니메이션 구축 , 모든 뷰에 한 번에 적용 가능
		- 애니메이션 코드를 미리 짜놓아야 함
	- androidx.constraintlayout.utils.widget.ImageFilterView :  이미지를 표시, 결합 및 필터링할 수 있는 이미지 뷰 라고 한다.(constraintlayout2.0)
		- (app)altSrc : 이미지 하나를 더 추가하여 크로스 페이딩? 허용한다고 함
		- (app)saturation : grayscale(0) , 원본(1), hyper(2)
		- (app)brightness : 말그대로 밝기. 근데 적용 안됨
		- (app)warmth : 자연스러움(1), 따뜻(2), 차가움(5)
		- (app)contrast : 2 - high constrast
		- (app)crossfade : 0 - src , 1 - altSrc
	- androidx.constraintlayout.utils.widget.ImageFilterButton : 필터 뷰랑 설명이 똑같이 나와있다. 사용해볼 수 없어서 차이를 모르겠다 (constraintlayout2.0)
		- 속성이 ImageFilterView랑 같다 , 근데 왜 버튼으로 따로있는건지는 솔직히 모르겠다
	- androidx.constraintlayout.utils.widget.MockView : 프로토타입 레이아웃을 만드는데 유용한 뷰 라고한다. UI를 구성하는 동안 임시 모의 보기로 유용하다.
		- 하나 생성하면 대문짝만한 x표시가 뷰 크기만큼 그어져 있다
		- 따로 속성은 없는듯
  • Google
	- com.google.android.gms.ads.AdView : 제일 중요..!(돈) 흔히 앱에서 보이는 그 광고 배너, 이렇게 넣는거였구나 이거
		- (ads)adSize : 사용할 광고 크기 설정 "BANNER"라고 넣을 수 있음
		- (ads)adUnitId : 광고 id를 넣는다는 뜻인거 같은데 내 앱의 id도 넣어야한다는건가 싶고 잘 모르겠음
	- com.google.android.gms.maps.MapView : 구글 맵을 내 앱에 띄우기

Manifest : 앱의 전체 구조를 명세

- manifest : AndroidManifest.xml의 루트 요소
	- application을 필수로 포함해야함
- application : 애플리케이션의 선언부분, 각 구성요소를 선언, 모든 구성요소에 영향을 줄 수 있는 하위 요소를 가지고 있다.
	- activity, activity-alias, meta-data, service, receiver, provider, uses-library 를 포함 가능
	- allowBackup : 백업 및 복원을 허용할지 여부
	- icon : 전체 애플리케이션의 기본 아이콘..?
	- roundIcon : User interface의 Adaptive icons와 관련있는 항목으로 적합한 상황에서는 아이콘이 원형으로 출력? 무슨말인지 모르겠다
	- supportsRtl : 어플리케이션이 오른쪽에서 왼쪽 레이아웃을 지원하는지 여부를 선언
	- theme : 어플리케이션의 기본 테마
- activity : Manifest에서 하나의 클래스를 나타낸다.(하나의 코틀린 파일 지정)
	- intent-filter, meta-data, layout 태그를 포함 가능
- intent-filter
	- 안드로이드에서는 이미 다른 프로그램에서 구현되어 있는 기능을 내 것에 쓸 수 있는데 그 프로그램을 쓸 때 '목적'을 알려야 한다. '목적'을 intent라고 한다
	- 반면에 그 프로그램 입장에서는 내 프로그램은 "이러한 목적으로만 쓸 수 있다"라고 써놓은것이 있는데 이것을 intent-filter라고 함
	- 즉, 해당 컴포넌트가 처리하는 기능이 무엇인지 의미하는 것이기도 함
	- action반드시 포함
	- category, data 태그 포함 가능
- action
	- name : 수행할 작업의 이름 정함(MAIN, WEB_SEARCH, ACTION_SEND, ACTION_VIEW 이런식임)
- data : 데이터 사양을 인텐트 필터에 추가
	-  scheme : URI의 스키마 부분(?)
	- host : URI 권한의 호스트 부분
	- port : URI 권한의 포트 부분
- category : 인텐트를 처리하는 액티비티의 특징을 지정할 수 있는 추가적인 방법을 제공한다는데 무슨뜻인지는 잘 모르겠다
- activity-alias : 같은 코틀린 파일에 별칭을 붙여줄 수 있다
	-  targetActivity : 파일 지정
	- name : 별칭 지정
- meta-data : 데이터에 대해 정의한다고 한다
	- name : 아이템 이름 설정
	- resource : 리소스의 래퍼런스?
	- value : 아이템에 할당된 값
	-  정의된 값을 가져와서 사용할 수 있다는데 왜 필요한건지 여전히 모르겠음
- service : 액티비티와 달리 시각적 UI를 가지지 않고, 다양한 통신API구현이나 백그라운드 작업에 사용됨, App이 종료되어도 백그라운드에서 계속 실행됨
	- intent-filter, meta-data를 포함 가능함
- receiver : Broadcast receiver는 원하는 방송만 받을 수 있게 함(?)
	- ex) 문자로 인증번호가 오면 인증번호가 자동으로 입력되는 앱이 있는데 os가 문자 왔다고 broadcast하면 해당 app이 이를 broadcast receiver를 통해 수신
- provider : 앱과 앱 저장소 사이에서 데이터 접근을 쉽게 하도록 관리해줌
	- 앱의 직접적인 코드 변경 없이 데이터 접근 변경할 수 있게 해줌
	- 다른 사용자들이 앱에 접근하고 사용, 수정할 권한을 준다 (안전 보장)
	- manifest에서 권한 부여 해줘야 함
- uses-library : 애플리케이션이 연결되어야 하는 라이브러리 지정, 라이브러리 코드를 포함하도록 시스템에 알려준다
	- 자동으로 연결되는 기본 라이브러리로는 android.app , android.content, android.view, android.widget 같은 것들이 있다
- compatible-screens : 애플리케이션이 호환되는 각 화면 구성을 지정한다, 한개만 넣을 수 있음
	- 하위요소로 screen이 들어가고 이건 여러개 넣을 수 있다.
	- 특정 화면 크기, 밀도를 설정 가능
	- 주의! 일반적으로 이건 웬만하면 사용하면 안되고 특정화면 구성에서 전혀 작동하지 않을 때 최후의 수단으로 이용해야함
- instrumentation : 애플리케이션과 시스템의 상호작용을 모니터링할 수 있다
	- functionalTest : 기능 테스트로 실행해야 할지 정하는 부분
	- targetPackage : 해당 객체가 실행되는 애플리케이션
- permission : 컴포넌트를 사용하기 위한 권한 중에 안드로이드가 제공하는 권한 이외에 다른 권한이 필요할때 정의한다.
- permission-group : permission 태그를 그룹화 하기위해 필요해 보임
	- permission 태그 2개가 있다고 치자 각각의 name은 android.permission.RECEIVE_SMS, android.permission.SEND_SMS이다.
	- 위의 permission 태그에서 permissionGroup속성으로 permission-group의 name인 android.permission-group.MESSAGES를 쓰면 그룹화할 수 있음
- permission-tree : 보안 권한을 이름을 설정하여 해당 이름 예하 트리의 권한을 가짐, 따라서 권한 자체를 설정하진 않음
- supports-gl-texture : 앱에서 지원하는 단일 GL텍스처 압축 형식 선언..?
- supports-screens : 다양한 크기의 화면에 대한 UI최적화 설정
	- resizeable : 크기 바꾸는거 가능한지?
	- smallScreens : 더 작은 화면 폼팩터를 지원하는지
	- anyDensity : 모든 화면 밀도를 처리할 수 있는 리소스가 포함 되어있는지
- uses-configuration : 애플리케이션에 필요한 하드웨어, 소프트웨어 기능
	- reqFiveWayNav : 방향 탐색 컨트롤이 필요한지
	- reqHardKeyboard : 하드웨어 키보드가 필요한지 여부
	- reqKeyboardType : 필요한 키보드 유형
	- reqTouchScreen : 필요한 터치스크린의 유형
- uses-feature : 애플리케이션이 사용하는 하드웨어, 소프트웨어 기능 선언
	- 외부에 애플리케이션이 의존하는 하드웨어, 소프트웨어 기능을 알려주는 것
- uses-permission : 앱설치할때 이거 권한 허용해야되는데 괜찮냐고 물어보는 그 부분
	- name : INTERNET, BLUETOOTH, VIBRATE, ACCESS_WIFI_STATE 등등으로 권한 뭐 필요한지 적을 수 있음
	- 위험 권한 : android.permission.CAMERA이런식으로 써야하고 카메라 뿐만 아니라 CONTACTS(주소록), LOCATION, CALENDER 등등이 있다
- uses-permission-sdk-23 : api레벨 23 이상을 실행하는 기기에서만 해당됨
	- 오직 런타임 권한 모델을 지원하는 플랫폼에서 실행 중인 경우에만 권한을 요청할 수 있음..? 솔직히 무슨말인지 잘 모르겠다
- uses-sdk : 앱 플랫폼 버전, API 레벨 지정. 앱의 요구사항임
- grant-uri-permission : 상위 콘텐츠 제공 으로부터 엑세스 권한이 있는 앱 데이터의 하위 집합 지정
- path-permission : provider태그 안의 데이터의 상세한 부분집합을 위해서 필요한 권한과 경로를 정의 한다
	- 여러개의 경로를 제공하기 위해서 여러번 작성 가능
profile
Software Engineer (전산쟁이)

0개의 댓글