설.현.아빠
[Rotation] 화면 가로, 세로 보기 본문
<?xml version="1.0" encoding="utf-8"?> <!-- /res/layout/main.xml --> <?xml version="1.0" encoding="utf-8"?> <!-- /res/layout-land/main.xml --> // RotationActivity.java package lee.android.Rotation; import android.app.Activity; public class RotationActivity extends Activity { private void restoreMe(Bundle state) {
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/pick"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="선택"
android:enabled="true"
/>
<Button android:id="@+id/view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="보기"
android:enabled="false"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/pick"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="선택"
android:enabled="true"
/>
<Button android:id="@+id/view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="보기"
android:enabled="true"
/>
</LinearLayout>
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.view.View;
import android.widget.Button;
static final int PICK_REQUEST = 1337;
Button viewButton=null;
Uri contact=null; // ACTION_PICK Intent로 하위 Activity를 실행한 결과로 채운다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.pick);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
startActivityForResult(i, PICK_REQUEST);
// void android.app.Activity.startActivityForResult(Intent intent, int requestCode)
}
});
viewButton = (Button)findViewById(R.id.view);
viewButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// void android.app.Activity.startActivity(Intent intent)
startActivity(new Intent(Intent.ACTION_VIEW, contact));
}
});
restoreMe(savedInstanceState);
viewButton.setEnabled(contact!=null);
}
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
if(requestCode==PICK_REQUEST) {
if(resultCode==RESULT_OK) {
// pick Button을 통해 정상적으로 값을 가져왔으면 contact에 data를 저장하고 view Button을 enable시킨다.
contact=data.getData();
viewButton.setEnabled(true);
}
}
}
protected void onSaveInstanceState (Bundle outState) {
// 화면이 회전돼 실행 중이던 Activity가 종료되면 onSaveInstanceState()메소드에서 실행 상태를 Bundle에 넣어둔다.
// 그리고 다시 Activity가 실행될때 onCreate() method나 onRestoreInstanceState() method에서
// Bundle에 넣어둔 데이터를 꺼내 내부 데이터를 다시 채우고 화면도 업데이트한다.
super.onSaveInstanceState(outState);
if(contact!=null) {
outState.putString("contact", contact.toString());
}
}
// Activity가 다시 실행될때 문자열로 보관했던 Uri값을 가져와 contact변수에 다시 설정한다.
contact=null;
if(state!=null) {
String contactUri = state.getString("contact");
if(contactUri!=null) {
contact=Uri.parse(contactUri);
}
}
}
}
'안드로이드 > Screen & Resolution' 카테고리의 다른 글
Android Resolution... (0) | 2011.02.11 |
---|---|
Title Bar 출력하지 않기. (0) | 2011.02.11 |
화면 회전시 onSaveInstanceState, onRestoreInstanceState 사용하기. (2) | 2011.02.11 |
화면의 가로보기 & 세로보기 XML 파일 작성하기. (3) | 2011.02.11 |
화면 고정(가로 또는 세로로만 화면 표시되도록 설정) (3) | 2011.02.11 |