기본

  • 안드로이드를 프로젝트를 세팅했을 때
  • 프로젝트 이름으로 titleBar가 생성되는 것을 볼 수 있다.
  • 하지만 커스텀하게 titleBar을 만들수가 없어 titleBar가 없는 App이 많다

TitleBar 없애는 법

  • 처음 세팅시 생기는 /res/values/styles.xml

    • 해당파일은 프로젝트 스타일 세팅 파일
        <resources>

        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
          <!-- Customize your theme here. -->
          <item name="colorPrimary">@color/colorPrimary</item>
          <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
          <item name="colorAccent">@color/colorAccent</item>
        </style>
  • title Bar을 없애고 싶은 경우 아래 코드를 추가 해주면 된다

    <resources>
    
      <!-- Base application theme. -->
      <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
          <!-- Customize your theme here. -->
          <item name="colorPrimary">@color/colorPrimary</item>
          <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
          <item name="colorAccent">@color/colorAccent</item>
      <!--        no titleBar    -->
          <item name="windowActionBar">false</item>
          <item name="windowNoTitle">true</item>
      </style>
    

```

Text

  • TextView
    • dp 보다는 sp를 권장(디바이스의 기본 텍스트 사이즈에 따라 바뀌어야 하기 때문)
  • Plain text
    • 단순 text
  • Password
  • Password (Numeric)
    • 숫자만 입력 가능
  • E-mail
  • Phone
  • Postal Address
  • Multiline Text
  • Time
  • Date
  • Number
  • Number (Signed)
    • 부호 있는 수
  • Number (Decimal)
    • 십진법
  • AutoComplete TextView
    • 자동 완성 검색
  • MultiAutoCompleteTextView
    • 두개 이상의 문자열 자동 완성 검색
  • CheckedTextView
  • TextInputLayout
    • html 의 textarea 와 비슷

Buttons

  • Button
  • ImageButton
  • ChipGroup
  • Chip
  • CheckBox
    • 여러개 선택 가능
  • RadioGroup
    • radiogroup 내 radiobutton 이 있어야지 선택 가능
  • RadioButton
    • 딱 하나만 선택
    • radiogroup에 포함안되어 있으면 라디오 버튼의 의미가 없어짐
  • ToggleButton
  • Switch
  • FloatingActionButton
    • 화면에 둥둥 떠있는 버튼
    • 고정되어 있는 버튼

Widgets

  • View
    • div와 약간 비슷?
  • ImageView
  • WebVIew
  • VideoView
  • CalenderVIew
  • ProgressBar
  • ProgressBar (Horizontal)
  • SeekBar
  • SeekBar (Discrete)
    • 어디 위치인지 보여줌
  • RatingBar
  • SearchView
  • TextureView
  • SurfaceView
  • Horizontal Divider
  • Vertical Divider

Containers

Google

  • AdView
    • 앱에 광고 달기
  • MapView
    • 구글 맵

Legacy

  • GridLayout
  • ListView
  • TabHost
  • RelativeLayout
    • 상대에 따라 위치가 달라지는 레이아웃
  • GridView

'Study(Language) > Android' 카테고리의 다른 글

[안드로이드] titleBar 없애는법  (0) 2020.06.17
[안드로이드] 6대 레이아웃  (0) 2020.06.05
[안드로이드] 4대 컴포넌트  (0) 2020.06.03
[안드로이드] 매니페스트  (0) 2020.06.02

레이아웃 정의

  • 사용자 인터페이스를 위한 구조

종류

  • relative layout

  • linear layout

  • frame layout

  • table layout

  • listVIew 와 GridView

Linear Layout

  • 가로 또는 세로 정렬 레이아웃
  • 중첩 X, 지정 방향으로만 쌓임
  • width 는 %, px가 아닌 비율

Relative Layout

  • 자식 View와의 상대적인 위치
  • toRightOf : 오른쪽 배치
  • below : 아래 배치
  • alignParentLeft : 왼쪽 정렬
  • centerInParent : 중앙 정렬
  • 다중 Linear layout로 구성되어 있는것을 relative layout게 강력하지만 만들기 다소 어려움

Frame Layout

  • 모달같이 여러화면을 중첩으로 구현할때 사용
  • 가장 최근에 추가된 뷰만 보임
  • Fragement 동일한 위치에서 다양한 뷰를 교체로 표현하고 싶을 떄

Table Layout

  • html table 과 비슷 하지만 행과 열을 합칠수 없고 td역할 하는게 없음

ListView and GridView

  • 동일한 뷰를 안에 컨텐츠만 다르게 반복해야하는 경우
  • List : 상하로 펼쳐지는 것
  • Grid : 차곡히 좌에서 우로 펼쳐지는 것 레아이웃 넘으면 아랫줄로
  • for문 사용한 것과 같은 뷰 반복 효과

ConstraintLayout

  • linear 와 relative 로 레이아웃을 구현하기 다소 복잡한 면이 있어 constraintLayout을 많이씀

  • 중첩 가능

    <Button android:id="@+id/button1" ...
           app:layout_constraintRight_toRightOf="parent" />
  • 의미

    • layout 을 constraint로 할건데 parent의 오른쪽으로 배치할것임
  • 두개의 뷰를 연결하고 싶으면 chain사용

  • 배치 방법

    • 형태 - layout_constraint[기준1]_to [기준2]of=[viewId / parent]
    • 예시
      • layout_constraintLeft_toLeftOf
      • layout_constraintLeft_toRightOf
      • layout_constraintRight_toRightOf
      • layout_constraintRIght_toLeftOf
      • layout_constraintTop_toTopOf
      • layout_constraintTop_toBottomOf
      • layout_constraintBottom_toTopOf
      • layout_constraintBottom_toBottomOf
      • layout_constraintStart_toStartOf
      • layout_constraintStart_toEndOf
      • layout_constraintEnd_toStartOf
      • layout_constraitnEnd_toEndOf
  • 한쪽으로 치우치게 (bias)

    • 0~1값
    • default = 0.5
    • layout_constraintHorizontal_bias
    • layout_constraintVertical_bias
  • 레이아웃을 빠져나간 경우

    • default = false
    • layout_constraintedWidth = [true / false ]
    • layout_constraintedHeight = [true / false ]

주의사항

  • top/bottom/right/left 를 다 사용해야하지는 않지만 필수는 아니지만 레이아웃이 깨질수도 있어 확실하게 하기위해서는 네개다 명시하는 것을 지양해야함

  • MATCH_CONSTRAINT

    • 부모 뷰에 꽉맞추고 싶을 때

      <Button anroid:layout_width="wrap_content"
            // wrap_content 와 같은 기능
            app:layout_constraintWidth_min 
            app:layout_constraintHegith_min
            app:layout_constraintWidth_max
            app:layout_constraintHeight_max
            // 0 1사이 값을 입력해서 비율로 길이 결정 ex- 0.2
            app:layout_constraintWidth_percent
            app:layout_constraintHeight_percent
      >
  • CHAIN

    • 뷰끼리 연결시 간격을 정하고 싶은 경우 사용
    • 뷰끼리 연결할 떄
    • 수평 가장 왼쪽에 있는 값이 기준 (HEAD)
    • 요소
      • layout_constraintHorizontal_chianStyle
      • layout_constraintVertical_chainStyle
    • 스타일
      • CHAIN_SPREAD - 모든 여백을 같게함
      • CHAIN_SPREAD_INSIDE - CHAIN_SPREAD와 같지만 양끝은 부모에 붙임
      • CHAIN_PACKED - 묶어버리고 부모 여백을 같게함

cf
layout은 기본적으로 chain으로 연결되어있다 그래서 위아래로 연결하고 싶은경우
layout_constraintTop_toButtomOf 로 연결하면 위아래로 연결된다
내가 한 실수
layout_constraintBottom_toTopOf 까지 연결하면 위에 값이랑 아래값이 연결된다는 소리를 아니다

4대 컴포넌트란?

  • activity
  • service
  • receiver
  • provider

activity

  • 사용자에게 보이는 UI화면
  • activity 역할을 위해서는 자바의 Activity 클래스를 상속 받아야함
  • 액티비티의 생명주기 메소드를 재정의하여 원하는 기능 구현
  • 가장 많이 사용
  • 특징
    • 안드로이드 어플리케이션은 하나 이상의 액티비티를 가져야함
    • 두가지 액티비티 동시 display불가
    • 분할 가능, 타 액티비티 호출 가능

service

  • 백그라운드에서 실행되는 것
  • 화면에 보이지는 않지만 manifest에 등록해야함
  • 특징
    • 따로 화면이 없음
    • 한번 시작된 서비스는 백그라운드에서 종료되어도 실행
    • 모든 service클래스 상속 받아 사용
    • 네트워크를 통해 데이터 가져옴

content provider

  • 데이터 관리 및 다른 어플리케이션에 데이터 제공
  • 디비 관련 데이터 전달시
  • 특징
    • 파일 입출력, sql등으로 데이터 관리
    • provider을 통해 다른 어플리케이션에 데이터 전달 가능

broadcast receiver

  • 안드로이드의 이벤트와 반응관련 정보 받아 반응
    cf ) 브로드 캐스팅
  • 하나의 메시지를 받아 여러곳에 공유
  • push 알림

intent

  • 통신 수단 역할
  • 4가지의 구성요소(컴포넌트)간의 작업수행을 위한 정보전달 역할

안드로이드 프로그램에 대한 전반적은 세팅 파일

  • xml 형색(yml 과 비슷)
  • 역할
    • 사용자 권한 식별(인터넷 엑세스, 사용자 연락처 읽기 액세스.. etc)
    • 앱이 요구하는 최소 api
      cf) 최소 api - 안드로이드 플렛폼 버전에서 제공하는 프레임워크 api 수정 버전
    • 앱에서 요구하는 hw, sw기능(카메라, 음성인식 ... etc)
    • 앱에 링크되어야 하는 api라이브러리 선언

기본 프로젝트 세팅

<manifest xmlns:android="<http://schemas.android.com/apk/res/android>"
    package="com.example.manifastproject">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

항목 설명

  • application

    • 애플리케이션 모든 요소에 영향을 주는 것 선언
  • intent-filter

    • 활동, 서비스, receiver가 응답할 수 있는 intent유형 지정
    • 전달되는 유형의 수신 intent를 필요 유무에 따라 사용
      • 대부분 action, catagory, data 아래 포함
      • 요소
        • 포함 요소 - activity, activity-alias, service, recevier
        • 필수 포함 요소 - action
        • 포함 가능 요소 - catagory, data
    • 속성
      • android:icon - 따로 지정하지 않으면 에 정의된 아이콘 들어감 (사용자가 보이는 아이콘)
      • android:label - 사용자에게 보이는 글자
      • android:priority - 필터에 설정된 intent처리와 관련해 상위 구성요소에 부여하는 우선수위 cf) setPriorty, getPriorty
      • android:order - 필터가 일치할 때 필터 처리되는 순서
        cf ) priority= 앱전체, order=단일앱에서 일치하는 filter의 순서
  • action

    • 안에 있어야함

    • intent-filter에 작업을 추가시킴 (특정 액션)

    • intent-filter 에 action이 있어야지 intent객체 허용

    • 속성

      • android:name - 작업이름(변수명), Intent 클래스의 상수로 정의

      • activity

      • 애플리케이션에서 사용자에게 시각적으로 느끼게 하는 것

      • 요소

      • 포함가능 항목 - intent-filter, meta-data, layout

      • 특성

      • android:allowEmbedded - 액티비티가 다른 액티비티의 포함된 하위항목으로 시작할수 있음

      • android:alwaysRetainTaskState - 시간이 지난후 시스템이 했던 작업 초기화

      • android:exported - 다른 애플리케이션의 구성요소로 액티비티 실행 가능 여부

            <activity android:allowEmbedded=["true" | "false"]
              android:allowTaskReparenting=["true" | "false"]
              android:alwaysRetainTaskState=["true" | "false"]
              android:autoRemoveFromRecents=["true" | "false"]
              android:banner="drawable resource"
              android:clearTaskOnLaunch=["true" | "false"]
              android:colorMode=[ "hdr" | "wideColorGamut"]
              android:configChanges=["mcc", "mnc", "locale",
                                     "touchscreen", "keyboard", "keyboardHidden",
                                     "navigation", "screenLayout", "fontScale",
                                     "uiMode", "orientation", "density",
                                     "screenSize", "smallestScreenSize"]
              android:directBootAware=["true" | "false"]
              android:documentLaunchMode=["intoExisting" | "always" |
                                      "none" | "never"]
              android:enabled=["true" | "false"]
              android:excludeFromRecents=["true" | "false"]
              android:exported=["true" | "false"]
              android:finishOnTaskLaunch=["true" | "false"]
              android:hardwareAccelerated=["true" | "false"]
              android:icon="drawable resource"
              android:immersive=["true" | "false"]
              android:label="string resource"
              android:launchMode=["standard" | "singleTop" |
                                  "singleTask" | "singleInstance"]
              android:lockTaskMode=["normal" | "never" |
                                  "if_whitelisted" | "always"]
              android:maxRecents="integer"
              android:maxAspectRatio="float"
              android:multiprocess=["true" | "false"]
              android:name="string"
              android:noHistory=["true" | "false"]  
              android:parentActivityName="string" 
              android:persistableMode=["persistRootOnly" | 
                                       "persistAcrossReboots" | "persistNever"]
              android:permission="string"
              android:process="string"
              android:relinquishTaskIdentity=["true" | "false"]
              android:resizeableActivity=["true" | "false"]
              android:screenOrientation=["unspecified" | "behind" |
                                         "landscape" | "portrait" |
                                         "reverseLandscape" | "reversePortrait" |
                                         "sensorLandscape" | "sensorPortrait" |
                                         "userLandscape" | "userPortrait" |
                                         "sensor" | "fullSensor" | "nosensor" |
                                         "user" | "fullUser" | "locked"]
              android:showForAllUsers=["true" | "false"]
              android:stateNotNeeded=["true" | "false"]
              android:supportsPictureInPicture=["true" | "false"]
              android:taskAffinity="string"
              android:theme="resource or theme"
              android:uiOptions=["none" | "splitActionBarWhenNarrow"]
              android:windowSoftInputMode=["stateUnspecified",
                                           "stateUnchanged", "stateHidden",
                                           "stateAlwaysHidden", "stateVisible",
                                           "stateAlwaysVisible", "adjustUnspecified",
                                           "adjustResize", "adjustPan"] >   
            . . .
            </activity>
        

        (https://developer.android.com/guide/topics/manifest/activity-element)

  • activity-alias

    • targetActivity 속성에 이름이 지정되어 있어야함

    • 타켓은 별칭과 동일한 application이 있어야하며 menifest보다 먼저 선언됨

    • 타켓 활동에 독립적 항목 (고유 인텐트 필터 소유 가능)

    • 하위집합에 있는 속성인 경우 타켓에 설정된 어떤 값도 적용 X

    • But, 하위집합이 없다면 타켓 활동에 별칭이 적용

    • 와 의 enabled속성이 둘다 true여야지 사용 가능

    • 요소

      • 포함된 요소 : application

      • 포함 가능 요소 : intent-filter, meta-data

          <activity-alias android:enabled=["true" | "false"]
                        android:exported=["true" | "false"]
                        android:icon="drawable resource"
                        android:label="string resource"
                        android:name="string"
                        android:permission="string"
                        android:targetActivity="string">
            . . .
          </activity-alias>
        

        (https://developer.android.com/guide/topics/manifest/activity-alias-element)

  • category

    • 인텐트를 처리해야하는 구성요소의 종류 및 추가 정보를 담은 문자열
    • intent안에 있어도되지만 없어도됨
    • ex) CATEGORY_BROWSABLE (대상 액티비티가 웹브라우저를 통해 시작하도록 허용, 미디어 링크 참조된 데이터 허용)
    • ex) CATEGORY_LAUNCHER (작업 최조 액티비티, 시스템 애플리케이션 시작 관리자에 목록)
    • 요소
      • 포함된 요소- intent-filter
  • data

    • intent 에 포함할 데이터 사양
    • 요소
      • 포함된 요소 - intent-filter
    • scheme://host:port[path |pathPrefix|pathPattern]
  • provider

    • 콘텐츠 제공자 구성요소 선언
    • 애플리케이션에서 관리되는 데이터에 관해 정해진 엑세스 제공
    • 애플리케이션에서 사용되는 provider는 다른 애플리케이션에서 선언하면 안됨
    • 요소
      • 포함된 요소 - application
      • 포함 가능한 요소 - meta-data, grant-uri-permission, path-permission
  • reseiver

    • 애플리케이션의 구성요소중 하나
    • 애플리케이션의 다른 구성요소가 실행되고 있지 않아도 시스템이나 다른 애플리케이션에서 브로드캐스팅하는 인스턴트를 애플리케이션에서 수행가능
  • service

    • 애플리케이션의 구성요소중 하나
    • activity와 달리 사용자에게 시각적으로 영향을 주는게 없음
    • 백그라운드 작업, api작업 구현시 사용
    • 모든 서비스는 manifest에 service 등록해야 실행 가능
  • uses-configuration

    • application에 필요한 sw, hw 기능
    • 대부분의 앱에서는 사용 안함
      • 언제 사용? 시각장애인 지원 터치패드 ...etc
  • uses-feature

    • 외부 에플리케이션이 의존하는 hw, sw기능 집합
  • uses-permission

    • 예를 들어 '카메라'기능이 필요한경우 google play는 애플리케이션 실행시 카메라 기능이 필요하다고 생각하고 이를 제공하지 않는 기기에서 애플리케이션을 필터링 해야함
    • 이때 필터링을 하기위해 uses-permission 요소에 카메라 기능을 검색하는데 googleplay에 의존하지 않고 uses-feature요소에 하드웨어 기능을 명시적으로 선언한후, 특정 기능을 비활성화 하고 싶은 경우 android:required="false" 특성을 에 추가

권한

// 설정 방법
<manifest>
    <users-permission android:name="android.permission.SEND_SMS"/>
</manifest>

앱 구성 요소

  • activity
    • 사용자가 보는 하나의 화면
    • ex) mail app -> 메일 작성, 메일 리스트, 새메일알림...
  • service
    • activity 에서 동작 하는 함수
  • broadcast reviewer
    • 정기적인 이벤트 밖에서 구성되는 이벤트들
    • ex) 알림기능
  • content provider

안드로이드는 activity, service, broadcast reviewer는 " 비동기 메세지(인텐트)" 로 활성화

cf ) intent 란?

  • 구성 요소가 어느 앱에 속하든 관계없이 다른 구성 요소로부터 작업을 요청하는 역할
  • 특정 구성요소를 활성화 할지 아니면 구성요소의 암시적 특정 유형을 활성화할지 나타내는 메시지를 정의
  • activity끼리 통신하기 위한 통신 장치

주의 사항

  • android: ~로 시작
  • , 는 필수 요소
  • 같은 라인에 있는 것들은 순서가 중요하지 않다
    • 예외 : 는 다음에 와야함
    • 예외 : 은 의 마지막에 와야함

매니페스트란 ?

  • xml 형색(yml 과 비슷)
  • 안드로이드 프로그램에 대한 전반적인 세팅 파일
  • 역할
    • 사용자 권한 식별(인터넷 엑세스, 사용자 연락처 읽기 액세스.. etc)
    • 앱이 요구하는 최소 api
      cf) 최소 api - 안드로이드 플렛폼 버전에서 제공하는 프레임워크 api 수정 버전
    • 앱에서 요구하는 hw, sw기능(카메라, 음성인식 ... etc)
    • 앱에 링크되어야 하는 api라이브러리 선언

기본 프로젝트 세팅

<manifest xmlns:android="<http://schemas.android.com/apk/res/android>"
    package="com.example.manifastproject">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

항목 설명

  • application
    • 애플리케이션 모든 요소에 영향을 주는 것 선언
  • intent-filter
    • 활동, 서비스, receiver가 응답할 수 있는 intent유형 지정
    • 전달되는 유형의 수신 intent를 필요 유무에 따라 사용
      • 대부분 action, catagory, data 아래 포함
      • 요소
        • 포함 요소 - activity, activity-alias, service, recevier
        • 필수 포함 요소 - action
        • 포함 가능 요소 - catagory, data
    • 속성
      • android:icon - 따로 지정하지 않으면 에 정의된 아이콘 들어감 (사용자가 보이는 아이콘)
      • android:label - 사용자에게 보이는 글자
      • android:priority - 필터에 설정된 intent처리와 관련해 상위 구성요소에 부여하는 우선수위 cf) setPriorty, getPriorty
      • android:order - 필터가 일치할 때 필터 처리되는 순서
        cf ) priority= 앱전체, order=단일앱에서 일치하는 filter의 순서
  • action
    • 안에 있어야함
    • intent-filter에 작업을 추가시킴 (특정 액션)
    • intent-filter 에 action이 있어야지 intent객체 허용
    • 속성
      • android:name - 작업이름(변수명), Intent 클래스의 상수로 정의
      • activity
      • 애플리케이션에서 사용자에게 시각적으로 느끼게 하는 것
      • 요소
      • 포함가능 항목 - intent-filter, meta-data, layout
      • 특성
      • android:allowEmbedded - 액티비티가 다른 액티비티의 포함된 하위항목으로 시작할수 있음
      • android:alwaysRetainTaskState - 시간이 지난후 시스템이 했던 작업 초기화
      • android:exported - 다른 애플리케이션의 구성요소로 액티비티 실행 가능 여부
    <activity android:allowEmbedded=["true" | "false"]
      android:allowTaskReparenting=["true" | "false"]
      android:alwaysRetainTaskState=["true" | "false"]
      android:autoRemoveFromRecents=["true" | "false"]
      android:banner="drawable resource"
      android:clearTaskOnLaunch=["true" | "false"]
      android:colorMode=[ "hdr" | "wideColorGamut"]
      android:configChanges=["mcc", "mnc", "locale",
                             "touchscreen", "keyboard", "keyboardHidden",
                             "navigation", "screenLayout", "fontScale",
                             "uiMode", "orientation", "density",
                             "screenSize", "smallestScreenSize"]
      android:directBootAware=["true" | "false"]
      android:documentLaunchMode=["intoExisting" | "always" |
                              "none" | "never"]
      android:enabled=["true" | "false"]
      android:excludeFromRecents=["true" | "false"]
      android:exported=["true" | "false"]
      android:finishOnTaskLaunch=["true" | "false"]
      android:hardwareAccelerated=["true" | "false"]
      android:icon="drawable resource"
      android:immersive=["true" | "false"]
      android:label="string resource"
      android:launchMode=["standard" | "singleTop" |
                          "singleTask" | "singleInstance"]
      android:lockTaskMode=["normal" | "never" |
                          "if_whitelisted" | "always"]
      android:maxRecents="integer"
      android:maxAspectRatio="float"
      android:multiprocess=["true" | "false"]
      android:name="string"
      android:noHistory=["true" | "false"]  
      android:parentActivityName="string" 
      android:persistableMode=["persistRootOnly" | 
                               "persistAcrossReboots" | "persistNever"]
      android:permission="string"
      android:process="string"
      android:relinquishTaskIdentity=["true" | "false"]
      android:resizeableActivity=["true" | "false"]
      android:screenOrientation=["unspecified" | "behind" |
                                 "landscape" | "portrait" |
                                 "reverseLandscape" | "reversePortrait" |
                                 "sensorLandscape" | "sensorPortrait" |
                                 "userLandscape" | "userPortrait" |
                                 "sensor" | "fullSensor" | "nosensor" |
                                 "user" | "fullUser" | "locked"]
      android:showForAllUsers=["true" | "false"]
      android:stateNotNeeded=["true" | "false"]
      android:supportsPictureInPicture=["true" | "false"]
      android:taskAffinity="string"
      android:theme="resource or theme"
      android:uiOptions=["none" | "splitActionBarWhenNarrow"]
      android:windowSoftInputMode=["stateUnspecified",
                                   "stateUnchanged", "stateHidden",
                                   "stateAlwaysHidden", "stateVisible",
                                   "stateAlwaysVisible", "adjustUnspecified",
                                   "adjustResize", "adjustPan"] >   
    . . .
    </activity>

https://developer.android.com/guide/topics/manifest/activity-element

  • activity-alias
    • targetActivity 속성에 이름이 지정되어 있어야함
    • 타켓은 별칭과 동일한 application이 있어야하며 menifest보다 먼저 선언됨
    • 타켓 활동에 독립적 항목 (고유 인텐트 필터 소유 가능)
    • 하위집합에 있는 속성인 경우 타켓에 설정된 어떤 값도 적용 X
    • But, 하위집합이 없다면 타켓 활동에 별칭이 적용
    • 와 의 enabled속성이 둘다 true여야지 사용 가능
    • 요소
      • 포함된 요소 : application
      • 포함 가능 요소 : intent-filter, meta-data
  <activity-alias android:enabled=["true" | "false"]
                android:exported=["true" | "false"]
                android:icon="drawable resource"
                android:label="string resource"
                android:name="string"
                android:permission="string"
                android:targetActivity="string" >
    . . .
  </activity-alias>

(https://developer.android.com/guide/topics/manifest/activity-alias-element)

  • category
    • 인텐트를 처리해야하는 구성요소의 종류 및 추가 정보를 담은 문자열
    • intent안에 있어도되지만 없어도됨
    • ex) CATEGORY_BROWSABLE (대상 액티비티가 웹브라우저를 통해 시작하도록 허용, 미디어 링크 참조된 데이터 허용)
    • ex) CATEGORY_LAUNCHER (작업 최조 액티비티, 시스템 애플리케이션 시작 관리자에 목록)
    • 요소
      • 포함된 요소- intent-filter
  • data
    • intent 에 포함할 데이터 사양
    • 요소
      • 포함된 요소 - intent-filter
    • scheme://host:port[path |pathPrefix|pathPattern]
  • provider
    • 콘텐츠 제공자 구성요소 선언
    • 애플리케이션에서 관리되는 데이터에 관해 정해진 엑세스 제공
    • 애플리케이션에서 사용되는 provider는 다른 애플리케이션에서 선언하면 안됨
    • 요소
      • 포함된 요소 - application
      • 포함 가능한 요소 - meta-data, grant-uri-permission, path-permission
  • reseiver
    • 애플리케이션의 구성요소중 하나
    • 애플리케이션의 다른 구성요소가 실행되고 있지 않아도 시스템이나 다른 애플리케이션에서 브로드캐스팅하는 인스턴트를 애플리케이션에서 수행가능
  • service
    • 애플리케이션의 구성요소중 하나
    • activity와 달리 사용자에게 시각적으로 영향을 주는게 없음
    • 백그라운드 작업, api작업 구현시 사용
    • 모든 서비스는 manifest에 service 등록해야 실행 가능
  • uses-configuration
    • application에 필요한 sw, hw 기능
    • 대부분의 앱에서는 사용 안함
      • 언제 사용? 시각장애인 지원 터치패드 ...etc
  • uses-feature
    • 외부 에플리케이션이 의존하는 hw, sw기능 집합
  • uses-permission
    • 예를 들어 '카메라'기능이 필요한경우 google play는 애플리케이션 실행시 카메라 기능이 필요하다고 생각하고 이를 제공하지 않는 기기에서 애플리케이션을 필터링 해야함
    • 이때 필터링을 하기위해 uses-permission 요소에 카메라 기능을 검색하는데 googleplay에 의존하지 않고 uses-feature요소에 하드웨어 기능을 명시적으로 선언한후, 특정 기능을 비활성화 하고 싶은 경우 android:required="false" 특성을 에 추가

권한

// 설정 방법
<manifest>
    <users-permission android:name="android.permission.SEND_SMS"/>
</manifest>

앱 구성 요소

  • activity
    • 사용자가 보는 하나의 화면
    • ex) mail app -> 메일 작성, 메일 리스트, 새메일알림...
  • service
    • activity 에서 동작 하는 함수
  • broadcast reviewer
    • 정기적인 이벤트 밖에서 구성되는 이벤트들
    • ex) 알림기능
  • content provider

안드로이드는 activity, service, broadcast reviewer는 " 비동기 메세지(인텐트)" 로 활성화

cf ) intent 란?

  • 구성 요소가 어느 앱에 속하든 관계없이 다른 구성 요소로부터 작업을 요청하는 역할
  • 특정 구성요소를 활성화 할지 아니면 구성요소의 암시적 특정 유형을 활성화할지 나타내는 메시지를 정의
  • activity끼리 통신하기 위한 통신 장치

주의 사항

  • android: ~로 시작
  • , 는 필수 요소
  • 같은 라인에 있는 것들은 순서가 중요하지 않다
    • 예외 : 는 다음에 와야함
    • 예외 : 은 의 마지막에 와야함

+ Recent posts