안드로이드 앱의 UI를 구성하는 기본 단위를 뷰 라고 한다.

View의 서브 클래스
View의 서브 클래스 중 화면에 보이는 것

ViewGroup의 서브
px(pixels), in(inches), mm(millimeters)
절대적인 값, 기기의 해상도에 따라 view의 크기가 다르다.
dp(density-independent pixels)
밀도에 독리적인 단위, 기기의 해상도가 달라도 사이즈가 얼추 비슷하다.
dpi(dotsperinch)
dpi는 1인치에 들어가는 픽셀을 나타내는 단위다.
예를 들어 100dpi는 1인치 당 100개의 픽셀이 들어간다는 의미다.
안드로이드의 주요 dpi는 아래와 같다.
ldpi : 120dpi
mdpi : 160dpi(기본)
hdpi : 240dpi
xhdpi : 320dpi
xxhdpi : 480dpi
xxxhdpi : 640dpi
뷰의 크기를 dp로 설정하면 기기별 해상도(ldpi, mdpi 등등)에 따라 1.5배 2배가 된다.
단, 이미지는 dp로 설정해도 커지지 않는다. 왜냐면 임의로 키우면 깨지기 때문에
고로 각 해상도별 이미지 파일을 설정해줘야한다.
화면에 text를 표시해주는 위젯
속성은 아래와 같다.

색은 #RGB, #ARGB, #RRGGBB, #AARRGGBB 의 포맷으로 지정해 줄 수 있는데 나는 통일성있게 #AARRGGBB포맷만을 주로 사용한다. 제일 앞에 AA는 투명도를 의미하고 나머지 부분은 RGB값을 의미한다. 투명도인 AA는 00이 완전 투명, FF가 불투명이 된다. 예를 들어 android:background="#FFFF0000"로 지정해주면 빨간색으로 배경을 칠하게 된다. 배경그림을 지정해줄 수도 있는데 android:background="@drawable/background_image" 와 같은 형태로 사용가능하다. 배경 그림은 리소스에 들어있는 jpg, png등의 그림을 배경으로 지정할 때 사용한다.
TextView의 서브 클래스이기에 TextView의 모든 속성 사용 가능
힌트 속성이 있다.
android:hint = "내용"
text : 일반적인 텍스트 키보드
phone : 전화번호 입력 키보드
textCapWords : 문장의 시작을 대문자로 변환
textMultiLine : 여러줄을 입력 받을 수 있음
마찬가지로 TextView의 서브클래스로 모든 속성을 사용할 수 있다.(singleLine : 텍스트를 강제로 한 줄에 출력)
버튼 내에 텍스트나 아이콘을 나타낼 수 있다.
(버튼 전체를 이미지로 그리기 위해서는 ImageButton위젯을 사용하면 된다.)
MainActivity파일의 onCreate함수 내에 onClick 속성에 넣을 함수를 작성해준다.
<Button
android:id="@+id/submitBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="doAction"
/>
fun doAction(v: View){
Toast.makeText(getApplicationContext(), "전송 성공! as function",
Toast.LENGTH_SHORT).show();
}
xml파일의 버튼 위젯에 id속성을 추가해주고, MainActivity
에서 findViewById< Button>(R.id.id이름) 로 객체를 만들어주고 객체의 setOnClickListener로 동작 설정
<Button
android:id="@+id/submitBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
val submitBtn = findViewById<Button(R.id.submitBtn)
submitBtn.setOnClickListener {
Toast.makeText(this, "전송 성공! as 리스너",
Toast.LENGTH_SHORT).show()
}
앱 화면에 이미지를 표시해주는 위젯
이미지 파일은 res 안의 drawable폴더 안에 넣어준다.
이미지 파일 형식은 .jpg도 가능하나 투명도 때문에 대부분 .png를 사용한다.
한글과 대문자는 들어갈 수 없다.
소문자와 숫자 그리고 언더바 만 사용 가능하다.
또 숫자와 _가 첫 글자로 사용 불가능하다.
<ImageView
android:id="@+id/androidIcon"
android:layout_width="150dp"
android:layout_height="150dp"
/>
val imageView : ImageView = findViewById(R.id.androidIcon)
imageView.setImageResource(R.drawable.androidicon2)
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:src="@drawable/androidicon2"
/>