프로젝트 폴더 구성
AndroidManifest.xml<application> : 앱 전체를 대상으로 하는 설정
icon속성 : 이곳에 지정한 이미지가 앱을 설치한 사용자의 폰에 보이는 실행 아이콘(XML 속성값이 @로 시작하면 리소스를 의미)
label속성 : 앱의 이름을 등록
theme설정: 앱에 적용해야 하는 테마를 설정
- 안드로이드 컴포넌트는 시스템에서 생명주기를 관리한다. 그리고 시스템은 매니페스트 파일에 있는 대로 앱을 실행한다. 결국 컴포넌트는 매니페스트 파일에 등록해야 시스템이 인지한다.
activity, service receiver, provider 태그를 통해 등록한다. 컴포넌트 하나당 태그 하나로 등록하며 만약 액티비티가 10개라면 <activity>를 10개 선언해야 한다.
res폴더 하위에 파일을 만들게 되면 R.java에 자동으로 올라가고 식별자가 부여된다. 따라서 규칙이 몇 개 생긴다
주요하게 짚고 넘어가야 할점들
화면을 출력하는 컴포넌트는 액티비티뿐이다. 결국 앱에서 화면을 출력하고 싶다면 액티비티를 만들어야 하고 이렇게 만든 액티비티에서 출력한 내용이 기기의 화면에 보인다.
화면에 내용을 표시하려면 뷰(View) 클래스를 이용해 구성해야 한다.
TextView 클래스
, ImageView 클래스
등을 이용한다.
화면 구성법
1. 액티비티 코드로 작성하는 방법
2. 레이아웃 XML 파일로 작성하는 방법(보통 XML에 씀)
뷰 객체의 계층 구조
레이아웃 XML의 뷰를 코드에서 사용하기다음과 같이 XML 속성값이 @로 시작하면 R.java파일을 의미하는데 text1이라는 아이디를 추가해주라는 뜻이다. 그렇게 되면 R.java파일의 상수 변수로 객체를 얻을 수 잇다. 이때
findViewById()
함수를 이용한다.
뷰의 크기를 지정하는 방법
margin : 뷰와 뷰 사이의 간격
padding: 뷰의 콘텐츠와 테두리 사이의 간격
visibility : 뷰가 화면에 출력
invisible: 뷰가 화면에 보이지 않지만 자리는 차지한다
gone: 뷰가 화면에 안보이고 자리도 차지하지 않는다.
android:text
속성
TextView에 출력할 문자열을 지정한다. android:text="helloworld"처럼 문자열을 대입해도 되고 android:text="@string/hello"처럼 문자열 리소스를 지정해도 된다.
android:textColor
속성
문자열의 색상을 지정한다. android:textColor="#FF0000"처럼 값은 16진수 RGB 형식을 사용한다.
android:textSize
속성
문자열의 크기를 지정한다. android:textSize="20sp"처럼 값은 숫자를 사용하며 단위는 생략할 수 없다. 이때 단위는 px, dp, sp등을 사용한다.
android:textStyle
속성
문자열의 스타일을 지정한다. android:textStyle="bold"처럼 이용하며 값은 bold, italic, normal 중에서 선택한다.
android:autoLink
속성
autoLink속성은 TextView에 출력할 문자열을 분석해 특정 형태의 문자열에 자동 링크를 추가해 준다. 만약 android:autoLink="web"으로 설정하면 문자열에 웹 주소가 포함됐을 때 해당 문자열을 링크 모양으로 표시한다. 그리고 사용자가 그 링크를 클릭했을 때 웹 브라우저를 실행한다.
autoLink 속성값으로는 web, phone, email 등을 사용할 수 있으며 여러 개를 함께 설정하려면 |기호로 연결한다.
android:maxLines
속성
TextView에 문자열을 출력할 때 긴 문자열은 자동으로 줄바꿈을 한다. 그런데 때로는 문자열이 특정 줄까지만 나오도록 해야할 때가 있다. android:maxLines="3"으로 설정하면 문자열이 3행까지만 출력된다.
android:ellipsize
속성
maxLines 속석을 이용할 때 출력되지 않은 문자열이 더 있다는 것을 표시하려면 줄임표(...)를 넣는다. 이때 ellipsize속성을 지정한다. ellipsize 속성값으로는 end, middle, start등을 설정한다.
android:src
속성
ImageView에 출력할 이미지를 설정한다. 리소스 이미지, 파일 이미지, 네트워크 이미지 등을 출력할 수 잇다. 리소스 이미지는 src 속성으로 android:src="@drawable/image3"처럼 설정한다.
android:maxWidth, android:maxHeight, android:adjustViewBounds
속성
출력하는 이미지의 최대 크기를 지정. 뷰의 크기는 layout_width, layout_height 속성으로 설정하지만 이 속성은 크기가 고정되어 있어서 뷰에 넣을 이미지 크기가 다양하다면 이미지와 뷰의 크기가 맞지 않는 상황이 발생할 수 있다.
위의 세 속성을 같이 사용하면 이미지가 잘리지 않고, 이미지가 작을때도 크기에 맞게 자동조정되서 나온다.
Button : 사용자 이벤트 처리
CheckBox : 다중 선택
RadioGroup > RadioButton : 단일 선택을 제공하는 뷰
EditText
는 사용자가 글을 입력할 수 있는 뷰이다.
android:lines, android:maxLines
속성
EditText는 한 줄 입력 크기로 출력되었다가 사용자가 키보드에서 엔터를 누르면 아래로 늘어나서 여러 줄 입력 크기가 된다. 그런데 처음부터 여러 줄 입력 크기로 나오게 하는 속성이 android:lines이다.(처음부터 크게) maxLines는 엔터를 누르면 크기가 늘어나서 고정된다.
android:inputType
속성
EditText에 글을 입력할 때 올라오는 키보드를 지정하는 속성. 키보드로 한줄 입력, 전화번호 입력 모드 지정 등 강제할 수 있다.
뷰 바인딩은 레이아웃 XML 파일에 선언하는 뷰 객체를 코드에서 쉽게 이용하는 방법이다. findViewById()함수로 하나하나 가져오는게 힘들다. "액티비티에서 findViewById() 함수를 이용하지 않고 레이아웃 XML 파일에 등록된 뷰 객체를 쉽게 사용할 수는 없을까?" -> 뷰바인딩
그래들 파일에 뷰 바인딩 설정
android { (...생략...) viewBinding { enabled = true } }
build.gradle 파일에 buildFeatures를 위와 같이 선언한다. 그러면 레이아웃 XML파일에 등록된 뷰 객체를 포함하는 클래스가 자동으로 만들어진다.
자동으로 만들어진 클래스의 inflate()함수를 호출하면 바인딩 객체를 얻을 수 있다. 위와 같이 사용하면 된다. 필요없는 레이아웃 XML 파일은 XML 파일의 루트 태그에 tools:viewBindingIgnore="true"
라는 속성을 추가한다.