이용금액 : 비정기적 외부이용아동의 경우 시간제 보육료 - 휴일어린이집으로 지정된 경우 일 보육료X100% 지원
이용 방법은 사전예약(온라인, 서울시 보육포털서비스(https://iseoul.seoul.go.kr/portal/reservation/holi_info.do)) 또는 해당어린이집 전화접수로, 이용신청서와 주민등록등본을 제출해야 하며, 서울시에 77개 정도가 지정되어 있어 근처에 가까운 곳을 이용하면 됩니다. 부부가 같이 지방에 경조사로 잠깐 내려와야 하거나, 일과 육아에 지쳐 휴식이 필요한 부모에게 정말 필요한 서비스입니다.
[MainActivity]
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.hello_text);
textView.setText("안녕하세요");
findViewById(R.id.button).setOnClickListener( new View.OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent(this, SubActivity.class); // 이동할 액티비티를 입력변수로 사용
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra("EXTRA_MESSAGE", message); // Key-Value 형태로 데이터 저장하기
startActivity(intent); // 액티비티 이동
}
});
[SubActivity]
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent(); // 데이터 수신
// 변수 저장하기(From intent)
String message = intent.getExtras.getString("EXTRA_MESSAGE"); // 문자열
// intent.getExtras().getInt("EXTRA_MESSAGE"); // 숫자형
// intent.getExtras().getInt("EXTRA_MESSAGE"); // 숫자형
// intent.getExtras().getStringArray("EXTRA_MESSAGE"); // 배열형
// intent.getSerializableExtra("EXTRA_MESSAGE"); // 클래스형
});
버튼을 클릭하면 다른 화면이 표시되게 하고 싶을 때는 인텐트(Intent)객체를 사용해야 한다. 안드로이드를 구성하는 4대컴포넌트간(액티비티, 리시버, 프로바이더, 서비스)에 각종 의사전달에 사용되는 객체가 인텐트이다.
이번에는 액티비티간의 자료를 전달하는 것을 설명하고, 바로 A→B→A 이렇게 액티비티의 결과를 받은 경우에 사용되는 메소드에 대해서 알아보자.
우선 간단한 액티비티 전환(화면 변경)의 예제 소스이다. 전달한 값을 intent에 putExtra() 함수로 저장한 후, startActivity(intent) 호출하고, 호출되는 액티비티에서는 getIntent()로 intent를 받아 getExtras()로 자료를 추출한다.
- 화면을 구성하다보면, 액티비티간 이동을 A→B→A 이렇게 할 때가 있다. 위의 startActivity()을 할 경우, 사용자가 '뒤로가기' 버튼을 누르는 거나, 앱을 내렸다가 다시 화면을 띄우는 과정에서 예상치 못한 상황으로 결과를 잘못 받을 경우가 있어, startActivity() 대신 startActivityForResult()메소드 이용하고, B는 setResult()로 결과 전송하고, A는 onActivityResult() 콜백 메소드가 호출되어, 전달받은 데이터를 받도록 처리해야 한다.
Margin(마진) : 테두리를 기준으로 바깥부분에 차지하는 영역 Padding(패딩): 테두리를 기준으로 안쪽에 차지하는 영역
Margin과 Padding은 보통 테이블을 작성할 때, View 객체들이 테이블 표테두리에 바짝 붙지 않고, 약간의 공백을 두기 위한 것으로, layout 을 정의할 때 layout_marginTop, layout_marginBottom등 특정면에만 공백을 줄 수 있고, layout_margin, layout_padding 으로 전체4면을 한꺼번에 줄 수도 있다.
안드로이드의 margin의 최소(기본)값은 8dp이며, 구글은 8의 배수(16, 24, ..)로 주는 것을 권고한다.
6. gravity : 자식뷰의 중력을 결정(Layout 에서 설정).. 중력이란 화면의 어느쪽에 정렬할 것인가? start, end, top, bottom, center, centerHorizontal, CenterVertical 등, |(파이프란인) 으로 여러 속성을 동시 설정가능
layout_gravity : 자식 뷰 각각의 중력을 결정... 자식 뷰(View에서 설정)에서 정의한다.
7. VIEW
8. 특정 View 간의 위치 배치 - 특정 뷰를 같이 배치하고자 할때, res/layout/activity_main.xml(해당 레이아웃 XML파일)의 뷰(EditView, Button, ImageView 등)에 아래와 같이 속성을 정의 한다.
9. ConstraintLayout : 마지막에 나온 Layout으로, 제한(규칙)을 붙일 수 있는 레이아웃이다. 아래에 보면, 뷰들간에 속성을 정의할 수 있도록 되어 있다. 또한 이미지뷰를 상단에 꽉 채우려면, 여백을 0으로 설정하고, layout_width에 match_constraints 속성을 준다. match_constraints 속성은 LinearLayout의 가중치(weight) 속성과 비슷. layout_width를 0dp로 주고, 좌우를 꽉 채울 때 사용.
--app:layout_constraintStart_toStartOf="[parent|다른뷰의 id]" : 현재 뷰의 왼쪽과 부모나 다른뷰의 왼쪽을 붙임
--app:layout_constraintEnd_toEndOf="[parent|다른뷰의 id]" : 현재 뷰의 오른쪽과 부모나 다른뷰의 오른쪽을 붙임
--app:layout_constraintTop_toTopOf="[parent|다른뷰의 id]" : 현재 뷰의 위쪽과 부모나 다른뷰의 위쪽을 붙임