※ 액티비티란?
- 하나의 화면(뷰와 뷰그룹을 포함시키고 있다) 액티비티가 모여 하나의 어플리케이션이 된다
※ 액티비티 제작 과정
- 엑티비티 레이아웃 제작 ex)ActivityMain
- Activity를 상속받아 엑티비티 파일(.java)제작 ex)MainActiivty
- 매니페이스트에 엑티비티 정보 추가
※ 액티비티 Life Cycle
- onCreate : 액티비티 초기화
- onPause : 앱이 백그라운드로 빠져있는 상태 ex)앱실행중 전화가왔다, 홈키를 눌렀다...등등
앱을 종료 상태(onDestroy) 혹은 onResume 상태로 돌아가 백그라운드에 빠져있던 앱을 다시 사용 할 수도 있다.
onPause 상태는 액티비티 종료 가능 단계로써 만약 어떤 사정에 의해서 앱이 강제 종료 되어도 이 단계는 꼭
거친다. 그렇기 때문에 종료전 저장해야될 데이터나 환경설정 같은 것은 이 단계에서 해줘야 한다.
- onCreate -> onStart -> onResume 상태를 거쳐 어플리케이션이 실행되어 사용자가 사용하는 화면까지 이동한다.
onPause -> onStop -> onDestroy 상태를 거쳐 어플리케이션이 종료된다.
사진출처 : 서울위즈 앱 창업자를 위한 안드로이드 실무 동영상
※ 액티비티 이동
- Intent 객체를 이용하여 이동한다.
MainActivity
public class MainActivity extends Activity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i("MainActivity", "onCreate() 생명주기 test");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.bt_move_activity);
button.setOnClickListener(onclick);
}
OnClickListener onclick = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.bt_move_activity:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
break;
default :
break;
}
}
};
}
SecondActivity
public class SecondActivity extends Activity {
Button btn ;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
btn = (Button) findViewById(R.id.move_main);
btn.setOnClickListener(onclick);
}
OnClickListener onclick = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.move_main :
Intent intent = new Intent(SecondActivity.this, MainActivity.class);
startActivity(intent);
break;
default :
break;
}
}
};
}
Main_activity
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.androidex.MainActivity" >
<Button
android:id="@+id/bt_move_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="액티비티 이동"
/>
</LinearLayout>
Second_activity
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView"
android:layout_width ="match_parent"
android:layout_height="wrap_content"
>
</TextView>
<Button
android:id="@+id/move_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="메인화면 이동">
</Button>
</LinearLayout>
AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androidex"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.androidex.SecondActivity"
android:label="@string/activity_name">
</activity>
</application>
</manifest>
※ 가로화면 세로화면 설정
- 총 2가지의 방법이 있다.
- 레이아웃 자체에서 설정하기 (AndroidManifest .xml 파일에서 해당액티비티에 속성값으로 주기)
AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androidex"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.androidex.SecondActivity"
//가로화면으로 설정하는 부분
android:screenOrientation="landscape"
android:label="@string/activity_name">
</activity>
</application>
</manifest>
- 소스코드에서 설정해주기 (단 setContextView 함수 이전에 가로화면 설정 함수를 사용 해주어야 한다.)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
MainActivity
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);분
//가로화면으로 설정하는 부분
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_second);
}
}
'플밍 is 뭔들 > 안드로이드_인강' 카테고리의 다른 글
08-1. 인텐트 (0) | 2016.11.27 |
---|---|
07-2. 액티비티 생명주기 테스트 및 로그 활용법 (0) | 2016.11.27 |
06-2. 이벤트를 이용한 드로잉 (0) | 2016.11.27 |
06-1. 이벤트 & 리스너 (0) | 2016.11.27 |
05-4. 어댑터 뷰 (0) | 2016.11.27 |