내마음대로 개발일지

안드로이드 프로젝트 이해

록's 2023. 2. 4. 16:46
728x90
반응형

안드로이드 앱 개발 특징

 

안드로이드의 특징

  • 안드로이드는 공개 운영체제인 리눅스 기반이다.
  • 안드로이드 앱 개발은 자바(JAVA) 및 코틀린(Kotlin)을 이용해 개발한다
  • 안드로이드 플랫폼 기반의 스마트폰을 여러 제조업체에서 만들 수 있다.
  • 개발자가 만든 앱은 구글 Play스토어 뿐만 아니라 다양한 방법으로 사용자에게  베포할 수 있다.

 

컴포넌트 기반 개발

 

컴포넌트란?

안드로이드 앱의 아키텍처에서 가장 큰 특징은 컴포넌트 기반이라는 것이다.

 

  • 컴포넌트는 앱의 구성 단위이며, 컴포넌트 여러 개를 조합하여 하나의 앱을만든다.
  • 컴포넌트는 앱 내에서 독립적인 실행 단위이다.
  • main 함수 같은 앱의 진입 지점이 따로 없다.
  • 애플리케이션 라이브러리 개념이 있다.

 

안드로이드 컴포넌트 종류

  • 액티비티(Activity) : UI를 구성하기 위한 컴포넌트
  • 서비스(Service) : UI 없이 백그라운드에서 장시간 수행되는 컴포넌트
  • 콘텐츠 프로바이다(ContentProvider) : 애플리케이션 간 데이터를 공유하기 위한 컴포넌트
  • 브로드캐스트 리시버(BroadcastReceiver) : 이벤트 모델로 수행되는 컴포넌트

 

UI의 기본 구조

  • 액티비티 - 뷰 구조
    • 기능 제공하는 함수 setContent View()이다
    • public void setContentView(view view), public void setContentView(int layoutResID)

 

UI 프로그램 작성 방법 : 자바 코드 VS 레이아웃 XML

  • 액티비티의 자바 코드로 작성하는 방법
    • 레이아웃 XML 파일 자체를 만들지 않고 자바 코드로 모든 뷰를 직접 생성
    • 메서드를 이용하여 뷰 설정을 일일이 지정하는 방법
      • 준비한 뷰를 setContentView() 함수의 매개변수로 넘겨서 화면 출력
  • 자바 코드를 이용하지 않고 레이아웃 XML에서 작성하는 방법
    • 레이아웃 XML 파일을 만들고 별도로 작성해서 실행

 

 

 

뷰의 기초 속성

  • id 속성 : 뷰의 식별자 속성
  • layout_width와 layout_height 속성 : 뷰의 크기를 지정 하기 위한 속성
  • margin과 padding 속성 : margin은 뷰와 뷰 사이의 간격을 지정하는 속성, padding은 뷰 내부에서 내용과 뷰의 테두리간의 간격을 지정하는 속성
  • clickable 속성 
  • visibility 속성

 

 

뷰의 계층구조

뷰의 기본 구조는 뷰 객체 간의 계층으로 이루어져있다. 

  • view : 안드로이드 뷰 클래스의 최상위 클래스이다
  • viewGroup : UI 출력이 아니라 다른 뷰 여러 개를 뷰그룹에 포함하여 한꺼번에 제어하기 위한 목적, 일반적으로 컨테이너 기능을 담당한다.
  • TextView : 특정 UI를 출력할 목적으로 제공되는 클래스 중 대표적으로 TextView가 있다. TextView에 지정한 문자열을 출력하는 뷰이다.

 

 

기초 뷰 활용

 

TextView

TextView는 앱을 개발할 때 가장 많이 사용하는 뷰로, TextView에 대입된 문자열을 화면에 출력

 

  • text
    • 화면에 출력할 문자열을 지정하는 속성, 레이아웃 XML 파일에 직접 문자열을 명시할 수도 있고, 문자열 리소스를 이용할 수 도있다.
  • textStyle
    • 화면에 출력할 문자열 효과로 normal(default), bold, italic 중 하나를 입력하여 문자열을 굵은 글씨로 표현하거나 기울어진 이탤릭 형태로 표현 할 수 있다.
  • textColor
    • 화면에 출력할 문자열 색상을 #FF0000처럼 16진수 RGB 포맷으로 지정할 때 사용한다.
  • textSize
    • 화면에 출력할 문자열의 폰트 크기를 지정할 때 사용한다.
  • autoLink
    • TextView의 문자열을 분석해 문자열 내에 autoLink 값에 해당하는 URL 문자열이 포함되어있으면, URL 문자열 부분을 자동 링크 형태로 출력해준다.
  • maxLines
    • TextView에 긴 문자열을 대입하면 자동 개행하여 여러 줄로 출력, 만약 특정 줄만큼만 출력하려면 maxLines 속성으로 지정한다.
  • ellipsize
    • maxLines로 지정한 줄 만큼만 출력할 수 있는데, 이때 줄임(...)를 하고 싶을 때가 있는데, 이 문자열 줄임 표시를 자동화하는 속성이다.

 

ImageView

ImageView는 안드로이드에서 화면에 이미지를 출력하고자 할 때 사용하는 뷰이다,

 

  • scr
    • 화면에 출력할 이미지를 지정하는 속성이다.
  • maxWidth와 maxHeight
    • 화면에 출력할 이미지의 최대 크기를 지정하는 속성이다.
  • adjustViewBounds
    • 이미지의 크기를 변경할 때 가로세로 비율을 유지할지를 boolean 값(true, false)으로 지정하는 속성이다,

 

EditText

EditText는 사용자에게 데이터를 입력받을 때 사용하는 뷰이다.

 

  • lines
    • 처음 화면에 보일 때부터 특정 줄만큼 보이게 할 때 사용하는 속성이다.
  • maxLines
    • lines 속성과 차이가 있는데 maxLines="3"으로 지정하더라도 처음 화면에 보일 때는 한 줄 입력 크기로 보인다.
    • lines와 동일하게 EditText 내에서 스크롤 되어 여러 줄 입력은 가능하다.
  • inputType
    • 아주 중요하고 자주 이용하는 속성이다, inputType 속성은 두 가지 목적으로 이용한다.
      • EditText에 글을 입력하기 위해 올라오는 키보드의 모드를 제어하는데 있다.
      • 사용자에게 한 줄 혹은 여러 줄 입력을 강제하는데 있다.
  • gravity
    • EditText에 입력할 글의 위치를 지정할 수 있다. 기본값은 left top이며 이를 center 혹은 right등 을 지정하여 위치를 조정한다.

 

Button

Button은 화면에서 사용자의 이벤트를 처리하기 위한 가장 기본이 되는 뷰이다.

안드로이드에서는 사용자 클릭 이벤트 등이 Button에서만 발생하는게 아니라서 모든 뷰에서 클릭 이벤트를 처리할 수는 잇지만, 가장 대표적인 뷰가 Button이다. Button도 문자열을 출력한다는 의미에서 TextView의 서브 클래스로 만들어졌으며, TextView에서 설정했던 대부분의 속성을 그대로 사용할 수 있다.

 

 

Checkbox와 RadioButton

 

Checkbox

  • Checkbox는 선택과 선택되지 않은 두 가지 상태를 표현하기 위한 뷰이다.
    • TextView의 서브 클래스이므로 TextView에 설정하는 textColor, textSize 등의 문자열 속성을 그대로 적용할 수 있다.

 

Checkbox 함수

  • isChecked() : 해당 Checkbox가 체크된 상태인지를 반환합니다. true가 반환되면 체크된 상태이고 false가 반환되면 체크가 안 된 상태이다.
  • setChecked() : Checkbox의 체크 상태를 바꾸기 위한 함수로 매개변수 값을 true로 지정하면 체크 상태로 바뀌고, false로 지정하면 체크가 안 된 상태로 바뀐다.
  • toggle() : 이 함수를 이용하면 현재 checkbox의 상태와 상관없이 반대로 바뀐다,  체크된 상태면 체크가 안 된 상태로, 체크가 안 된 상태면 체크된 상태로 바뀐다.

 

RadioButton

RadioButton은 Checkbox처럼 체크 상태를 표현하기 위한 뷰이다 Checkbox와 다른 점은 여러개 중 단일 선택을 표현한다는 점이다. 이를 위해 제공되는 클래스가 RadioGroup이며, 같은 RadioGroup으로 묶인 RadioButton 중 하나만 체크할 수 있다.

 

 

RadioGroup에서 제공하는 함수

  • check() : 매개변수로 체크하고자 하는 RadioButton의 id 값을 주면 해당 RadioButton이 체크된다.
  • clearCheck() : RadioGrroup의 RadioButton의 체크 상태를 해제한다.
  • getCheckedRadioButtonId() : 체크된 RadioButton의 id 값을 획득한다.

 

 

 

 

 

 

728x90
반응형