본문 바로가기
공부/Android

FLO 앱 - 1주차

by 유스베리이 2024. 6. 9.

Chaper 1. Platform & Layout

 

bottom navigation bar

실습 코드

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/homeFragment"
        android:icon="@drawable/ic_bottom_home_no_select"
        app:showAsAction="always"
        android:title="홈"/>
    <item
        android:id="@+id/lookFragment"
        android:icon="@drawable/ic_bottom_look_no_select"
        app:showAsAction="always"
        android:title="둘러보기" />
    <item
        android:id="@+id/searchFragment"
        android:icon="@drawable/ic_bottom_search_no_select"
        app:showAsAction="always"
        android:title="검색" />
    <item
        android:id="@+id/lockerFragment"
        android:icon="@drawable/ic_bottom_locker_no_select"
        app:showAsAction="always"
        android:title="보관함" />

</menu>

 

- showAsAction : 메뉴 항목이 어떻게 표시될지 정의하는 속성

  • 'never' : 액션바에 표시되지 않고 오버플로우 메뉴 (더보기 메뉴)에만 나타남
  • 'ifRoom' : 액션바에 공간이 충분한 경우에만 표시됨. 공간이 부족하면 오버플로우 메뉴에 표시됨
  • 'always' : 항상 액션바에 표시됨. 
  • 'withText' : 아이콘과 함께 텍스트도 표시되도록 함. 
  • 'collapseActionView' : 액션 뷰로 확장될 수 있으며, 확장된 후에는 다른 메뉴 항복들이 오버플로우 메뉴로 이동할 수 있음

- title : 메뉴 항복의 텍스트 레이블을 지정함.

 

클래스 정의

class LockerFragment : Fragment() { 
 
}

 

  • LockerFragment 클래스는 Fragment 클래스를 상속받음. 이는 LockerFragment가 Android 애플리케이션 내에서 UI 구성 요소로 사용될 프래그먼트임을 의미

OnCreate 메서드

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
  • super.onCreate(savedInstanceState)를 호출하여 Fragment 클래스의 onCreate 메서드를 실행합니다.
  • 이 메서드는 현재 특별한 추가 작업 없이 기본 프래그먼트 초기화만 수행합니다.

OnCreateView 메서드

onCreateView 메서드는 프래그먼트가 UI를 생성할 때 호출됩니다. 이 메서드는 프래그먼트의 레이아웃을 인플레이트하여 반환합니다.

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.frgment_locker, container, false)
    }

 

  • 매개변수:
    • inflater: XML 레이아웃 파일을 View 객체로 변환하는 데 사용되는 LayoutInflater 객체.
    • container: 프래그먼트 UI가 추가될 부모 뷰 그룹. 프래그먼트가 이 컨테이너에 인플레이트됨.
    • savedInstanceState: 프래그먼트가 이전에 저장된 상태를 포함하는 번들. 주로 상태 복원에 사용.
  • inflater.inflate(R.layout.frgment_locker, container, false):
    • R.layout.frgment_locker는 인플레이트할 레이아웃 리소스의 ID. 이 레이아웃 파일은 res/layout 디렉토리에 있어야함.
    • container는 인플레이트된 뷰가 부착될 부모 뷰 그룹.
    • false는 인플레이트된 뷰를 즉시 부모에 부착하지 않음을 의미. 이 경우 부모 뷰 그룹에 대한 레이아웃 파라미터가 설정.

XML

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/song_lalac_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <!-- 다른 뷰 요소들 -->
</androidx.constraintlayout.widget.ConstraintLayout>

 

 

<androidx.constraintlayout.widget.ConstraintLayout>:

  • ConstraintLayout은 뷰 그룹으로, 자식 뷰들을 제약 조건을 통해 위치시키고 크기를 조절할 수 있는 강력한 레이아웃입니다. ConstraintLayout을 사용하면 복잡한 레이아웃을 효율적으로 구성할 수 있습니다.
  • android:layout_width="match_parent":
    • 이 속성은 레이아웃의 너비를 부모 뷰의 너비와 같게 설정합니다. match_parent는 레이아웃의 너비가 부모 뷰의 전체 너비를 차지하도록 만듭니다.

 

  • android:layout_height="wrap_content":
    • 이 속성은 레이아웃의 높이를 자식 뷰들이 차지하는 크기만큼 설정합니다. wrap_content는 자식 뷰들이 필요로 하는 만큼의 높이를 지정합니다.

 

 

 

<LinearLayout>:

  • LinearLayout은 자식 뷰들을 수평(horizontal) 또는 수직(vertical)으로 배치하는 뷰 그룹입니다. 이 경우, 자식 뷰들은 정의된 순서대로 일렬로 배치됩니다.
  • android:orientation="vertical":
    • 이 속성은 LinearLayout의 방향을 설정합니다. vertical로 설정하면 자식 뷰들이 수직으로 배치됩니다. 반대로 horizontal로 설정하면 자식 뷰들이 수평으로 배치됩니다.

AndroidManifest.xml

<activity android:name=".SongActivity"
          android:exported="false"/>
<activity
    android:name=".MainActivity"
    android:exported="true">
 

주어진 코드 조각은 Android 애플리케이션의 AndroidManifest.xml 파일에서 액티비티(activity)를 정의하는 부분입니다. 이 파일은 애플리케이션의 구성 요소를 정의하고, 각 구성 요소의 속성을 설정합니다

 

  • android:name=".SongActivity": 이 속성은 액티비티 클래스의 이름을 지정합니다. 여기서 SongActivity는 패키지 이름에 상대적인 경로로 지정된 클래스입니다. 즉, 해당 애플리케이션의 기본 패키지 내에 있는 SongActivity 클래스를 참조합니다.
  • android:exported="false": 이 속성은 해당 액티비티가 다른 애플리케이션의 구성 요소에서 시작될 수 있는지를 지정합니다. false로 설정되어 있으므로, 이 액티비티는 오직 동일한 애플리케이션 내에서만 시작될 수 있습니다. 다른 애플리케이션에서는 이 액티비티를 시작할 수 없습니다.