728x90
반응형

안드로이드 4대 컴포넌트

 

 

액티비티(Activity)

  • 화면을 구성하는 가장 기본적인 컴포넌트

서비스(Service)

  • 액티비티와 상관없이 백그라운드에서 동작하는 컴포넌트
  • 서비스 생성 -> 서비스 시작 -> 서비스 종료

브로드캐스트 리시버(Boradcast Receivewr)

  • 문자 메시지 도착, 배터리 방전, SD 카드 탈부착, 네트워크 환경 변화 등이 발생하면 전체 응용 프로그램이 들을 수 있도록 방송 신호 보낸다.

콘텐트 프로바이더(Content Provider)

  • 응용프로그램 사이에 데이터를 상호 공유하기 위한 컴포넌트
  • 콘텐트 프로바이더의 정보를 제공하는 방법으로는 URI(Uniform Resource Identifier)가 있다.

 

[그림1] 콘텐트 프로바이더와 URI의 개념

 

액티비티 추가

  • 일반적으로 액티비티 하나당 XML 파일 하나를 만들어서 사용한다.
  • MainActivity.java 코드는 Activity 클래스를 상속받으므로 MainActivity.java를 액티비티라고 부른다.

 

 

인텐트

  • 안드로이드 4대 컴포넌트가 상호 간에 데이터를 주고 받기 위한 메시지 객체
  • 명시적 인텐트와 암시적 인텐트로 구분한다.

 

명시적 인텐트

  • 다른 액티비티의 이름을 명확히 지정할 때 사용하는 방법
  • 메인 액티비티에서 인텐트에 데이터를 실어서 넘긴 후, 세컨드 액티비티에서 받은 데이터를 처리

[그림2] 한쪽 방향으로 데이터를 전달하는 방법

 

 

레이팅바 예제

 

xml 코드

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <RatingBar
        android:id="@+id/rBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <RatingBar
        android:id="@+id/rBar2"
        style="?android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:numStars="10"
        android:scrollbarSize="4dp"
        android:stepSize="1" />

    <RatingBar
        android:id="@+id/rBar3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        style="?android:attr/ratingBarStyleIndicator"
        android:stepSize="1.5" />

    <Button
        android:id="@+id/btnInc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="증가" />

    <Button
        android:id="@+id/btnDec"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="감소" />
</LinearLayout>

 

java 코드

package com.example.a2c_1026_2;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RatingBar;

public class MainActivity extends AppCompatActivity {
    RatingBar rBar1, rBar2, rBar3;
    Button btnInc, btnDec;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rBar1 = findViewById(R.id.rBar1);
        rBar2 = findViewById(R.id.rBar2);
        rBar3 = findViewById(R.id.rBar3);
        btnInc = findViewById(R.id.btnInc);
        btnDec = findViewById(R.id.btnDec);

        btnInc.setOnClickListener(new View.OnClickListener(){
            public void onClick(View view)
            {
                rBar1.setRating(rBar1.getRating() + rBar1.getStepSize());
                rBar2.setRating(rBar2.getRating() + rBar2.getStepSize());
                rBar3.setRating(rBar3.getRating() + rBar3.getStepSize());

            }
        });

        btnDec.setOnClickListener(new View.OnClickListener(){
            public void onClick(View view)
            {
                rBar1.setRating(rBar1.getRating() - rBar1.getStepSize());
                rBar2.setRating(rBar2.getRating() - rBar2.getStepSize());
                rBar3.setRating(rBar3.getRating() - rBar3.getStepSize());

            }
        });

    }
}

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기