App노자

[Android] Activity 본문

Android/AndroidStudio

[Android] Activity

앱의노예 2022. 5. 31. 17:43

1. Activity란?


class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    }
}

안드로이드 앱의 기본 구조는 컴포넌트를 기반으로 한다

컴포넌트에는 액티비티 서비스 브로드캐스트 리시버 콘텐츠 프로바이더가 존재하며

그중 액티비티는 화면을 출력하는 유일한 컴포넌트이다

액티비티는 앱이 UI를 그리는 창을 제공할 뿐만 아니라 한 앱이 다른 앱을 호출하면 호출 앱은 전체 앱이 아닌 다른 앱의 액티비티를 호출하는 방식으로 액티비티는 사용자와 앱의 상호 작용을 위한 진입점 역할을 한다

액티비티 클래스의 하위 클래스로 구현하며 일반적으로 하나의 활동은 앱에서 하나의 화면을 구현한다

앱에서 액티비티를 사용하려면 해당 액티비티에 대한 정보를 앱의 매니페스트에 등록하고 활동 수명 주기를 적절하게 관리해야 한다

 

https://developer.android.com/guide/components/activities/intro-activities?hl=ko#dif 

 

활동 소개  |  Android 개발자  |  Android Developers

활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페

developer.android.com

2. Activity 작성 방법


<View 
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="@color/black"/>

 

AndroidManifest.xml

 

 

2. View란?


<View 
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="@color/black"/>

안드로이드 화면에서 사용되는 것들은 모두 view라는 클래스의 상속을 받는다

화면구성에 관련한 클래스를 통칭하여 뷰 클래스 또는 위젯이라고 한다

모든 안드로이드의 뷰 클래스 중 최상위 클래스이며 액티비티는 view의 서브 클래스만 화면에 출력한다

아래는 View에 잘 사용되는 여러 가지 속성들이다

 

  • android:text="Hello World!"  
  • android:textColor="@color/white"
  • android:textSize="10dp"
  • android:textStyle="normal"
  • android:autoLink="web"
  • android:maxLines="2"
  • android:ellipsize="end"
  • android:singleLine="true"
  • android:lines ="3"
  • android:inputType=""
  • android:alpha="0.8"

https://developer.android.com/reference/android/view/View

 

View  |  Android Developers

 

developer.android.com

 

2. ViewGroup이란?


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</androidx.constraintlayout.widget.ConstraintLayout>

자체 UI가 없어 화면에 출력해도 아무덕도 나오지 않으므로 다른 뷰를 담아 제어할 목적으로 사용한다

뷰 클래스의 틀 역할을 하는 클래스이며 ViewGroup의 서브클래스인 레이아웃 클래스를 사용해 레이아웃이라고도 한다

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

대표적으로

ConstraintLayout

LinearLayout

뷰의 계층 구조는 레이아웃 객체를 중첩해서 구성할 수 있다

 

 

 

3. Adapter


 

 

 

  • onCreateViewHolder : 뷰홀더를 생성(레이아웃 생성)
  • onBindViewHolder : 뷰홀더가 재활용될 때 실행되는 메서드
  • getItemCount : 아이템 개수를 조회

 

4. ViewHolder


 

 

 

 

5. Main


 

<View 
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="@color/black"/>

 

UIKit도 아직 갈길이 먼 주니어 개발자이지만 앞으로를 위해 계속 미루고 있던 SwiftUI 공부를 조금씩 시작해보려고 한다

SwiftUI란

애플 개발자 사이트에 가보면 SwiftUI는 최소한의 코드만으로 Swift의 성능을 사용하여 모든 Apple 플랫폼에서 사용할 수 있는 멋진 앱을 만들 수 있도록 도와줍니다. SwiftUI로 어떤 Apple 기기에서나 단 하나의 도구 및 API 세트를 사용하여 사용자에게 더 나은 경험을 제공할 수 있습니다.
라고 정리되어 있다
WWDC2019에서 발표한 애플의 프레임워크이며 기존에 있던 Objective-C 기반으로 UIkit를 Swift 언어의 모든 특성을 최대한 활용할 목적으로 구성한 프레임워크이다.
Swift의 장점을 최대한 살리면서 AppKit, UIkit처럼 구분하지 않고 유저 인터페이스 영역까지 SwiftUI로만 사용 가능하다

SwiftUI의 4가지 원칙

선언형 프로그래밍 방식을 활용한다

선언형이란 각 과정을 어떠게 수행해야 할지가 아닌 무엇을 하고 싶은지를 정의하는 방식이며 개발자가 원하는 UI를 프레임워크에 설명해 주면 세부 구현은 프레임워크가 대신 처리해 준다
최종적으로 어떤 모습을 구현하는지 그 결과를 선언하는 방식이다

자동화

많은 기능을 자동으로 수행되게 제공해준다
오토 레이아웃 코드들이 제거되고 (😘너무 감사합니다), 화면 전환과 관련된 기능들도 자동화로 인해 단순하게 구현이 가능하다

조합

큰 뷰를 작은 뷰로 나누거나 뷰를 조합해 원하는 뷰를 만들어 낼 수 있게 지원한다
뷰를 수정하고 재사용하는 일도 쉽게 할 수 있게 되었다

일관성

UI는 데이터와 동기화되어 일관성 있게 보여야 한다는 점이다.
SwiftUI에서는 데이터가 변경되는 즉시 UI도 자동 갱신되며 항상 일관성 있는 결과를 얻을 수 있다

 

https://developer.android.com/reference/android/view/View

 

View  |  Android Developers

 

developer.android.com

 

 

https://developer.android.com/reference/android/view/ViewGroup

 

ViewGroup  |  Android Developers

 

developer.android.com

 

'Android > AndroidStudio' 카테고리의 다른 글

[Android] LinearLayout  (0) 2022.06.16
[Android] EditText  (0) 2022.06.15
[Android] Button, CheckBox, RadioButton  (0) 2022.06.11
[Android] TextView  (0) 2022.06.08
[Android] View 클래스  (0) 2022.06.06