Android/기본스킬 | Posted by 덩치 2014. 1. 27. 15:28

기본적인 뷰 조작

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO


Study_exam_01.zip


예제파일 import해서 실행시켜보시기 바랍니다.

해석은 주석에 다 달려 있으니, 응용하여 연습하시면 더 좋으리라 생각됩니다.




package com.example.study_exam_01;


import com.example.study_1st.R;


import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.util.TypedValue;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener {

private Button text_edit_bt;

private Button color_edit_bt;

private Button size_edit_bt;

private TextView tv1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main); //이 액티비티는 activity_main.xml 파일의 뷰를 가집니다.

tv1 = (TextView) findViewById(R.id.tv1); //xml파일에서 설정한 뷰를 소스코드에서 사용하기 위해 ID로 연결하는 과정입니다.

text_edit_bt = (Button) findViewById(R.id.text_edit_bt);

color_edit_bt = (Button) findViewById(R.id.color_edit_bt);

size_edit_bt = (Button) findViewById(R.id.size_edit_bt);

text_edit_bt.setOnClickListener(this);

color_edit_bt.setOnClickListener(this);

size_edit_bt.setOnClickListener(this);

// text_edit_bt.setOnClickListener(new View.OnClickListener() {  //이렇게 각각의 리스너를 등록해서 사용 할 수도 있습니다.

// @Override

// public void onClick(View v) {

// tv1.setText(tv1.getText() + "+");

// }

// });

}


//온클릭을 오버라이드 하기 위해서는 클래스에 OnClickListener를 implements해야합니다. 11번째줄 참조.

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.text_edit_bt :

tv1.setText(tv1.getText() + "+");  //기존 텍스트를 얻어와서(tv1.getText()) 뒤에 +를 추가합니다.

// tv1.setText("원하는 텍스트");

break;

case R.id.color_edit_bt :

tv1.setTextColor(Color.BLUE);  //Color 클래스에 들어있는 BLUE 색상으로 변환합니다.

// tv1.setTextColor(Color.parseColor("#FF0000")); //직접 색상코드를 입력하여 원하는 색으로도 설정 가능합니다.

break;

case R.id.size_edit_bt :

tv1.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv1.getTextSize() + 1); //기존 텍스트사이즈를 얻어와서 + 1만큼 사이즈를 키웁니다.

// tv1.setTextSize(16); //원하는 고정수치(px)로도 텍스트 크기를 변경 가능합니다.

break;

}

}

}








<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button
        android:id="@+id/text_edit_bt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="글 변경" />
    
    <Button
        android:id="@+id/color_edit_bt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="글씨 색 변경" />
    
    <Button
        android:id="@+id/size_edit_bt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="글씨 크기 변경" />
    
</LinearLayout>


Android/기본스킬 | Posted by 덩치 2014. 1. 27. 14:46

안드로이드 생명주기

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO


안드로이드도 다른 프로세스와 마찬가지로 태어나고 죽기까지의 생명주기(life cycle)가 존재합니다.

위 다이어그램은 액티비티가 생성되고 죽기까지의 과정을 순서적으로 나타낸것입니다.


우선 액티비티에 대해 설명하자면, 액티비티는 단말 화면상으로 보이는 뷰(View) 즉 화면을 뜻합니다.

액티비티 위에는 다른 뷰들이 올라가게 되고, 그런 뷰들로 화면이 구성됩니다. 즉 액티비티는 도화지, 뷰(버튼,텍스트 등)는

그림이라고 생각하시면 이해하기 편합니다.


위 그림을 해석해 보면


onCreate - 액티비티가 시작되면 제일 먼저 onCreate()가 호출됩니다.

이 영역에서 어플이 켜짐과 동시에 실행되어야 하는 작업들을 실행하게 됩니다.

어플 최초 실행시의 로딩화면 등을 예로 들 수 있겠습니다.


onStart() - onCreate가 호출 된 후 바로 실행됩니다. 

(onCreate에 의해 실행되는것은 아닙니다. 모든 생명주기는 독립적입니다.)


onPause() - 다른 액티비티가 기존 액티비티 위에 생성되어 포커스를 잃은상태. 

반투명 또는 일부영역만 차지하는 액티비티가 호출 된 상태로, 액티비티의 일부가 화면상에 노출되고있는 상태입니다.


onReasure() - Pause상태에서 다시 액티비티가 활성화되면 호출됩니다.


onStop() - 액티비티가 가려지거나 숨겨졌을 때 호출됩니다. 

일반적으로 홈키를 눌렀을때 어플의 상태를 생각하시면 됩니다.


onRestart() - stop상태에서 다시 액티비티가 실행되면 호출됩니다.


onDeastroy() - 메모리상에서 액티비티의 자원이 완전 해제될 때 호출됩니다.

즉 어플을 종료할 때 사용됩니다. 어플 종료시 자원의 해제와 같은 기능을 여기에서 주로 실행하게 됩니다.

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO

가능한 안드로이드 위주로 포스팅되었으면 좋겠다 하는 기능을 써주세요.


예를들어 Wifi 컨트롤에 관련하여 써주세요 또는 SQLite 사용법에 대해 써주세요 등


댓글을 남겨주시면 모르는부분은 공부해서라도 쓰도록 노력하겠습니다.