Notice
Recent Posts
Recent Comments
Link
관리 메뉴

설.현.아빠

[Rotation] 화면 가로, 세로 보기 본문

안드로이드/Screen & Resolution

[Rotation] 화면 가로, 세로 보기

설.현.아빠 2011. 2. 11. 09:50



 

 

<?xml version="1.0" encoding="utf-8"?>

 

<!-- /res/layout/main.xml -->


<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>

 

 

<?xml version="1.0" encoding="utf-8"?>

 

<!-- /res/layout-land/main.xml -->


<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>

 

// RotationActivity.java

 

package lee.android.Rotation;

import android.app.Activity;
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;

public class RotationActivity extends Activity {
    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());
     }
    }

    private void restoreMe(Bundle state) {
     // Activity가 다시 실행될때 문자열로 보관했던 Uri값을 가져와 contact변수에 다시 설정한다.
     contact=null;
     if(state!=null) {
      String contactUri = state.getString("contact");
      if(contactUri!=null) {
       contact=Uri.parse(contactUri);
      }
     }
    }
}


Comments