欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

Android界面Rotation,androidrotation

来源: 开发者 投稿于  被查看 22261 次 评论:246

Android界面Rotation,androidrotation


1、这里讨论的主要是当手机界面Rotation(按ctrl+F12,手机模拟器翻转)时,如何处理数据恢复
2、这里还讨论了,如何处理手机里面的联系人

1.main.xml

<?xml version="1.0" encoding="utf-8"?>
<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="Pick" android:enabled="true" />
    <Button Android:id="@+id/view" android:layout_width="fill_parent"
        Android:layout_height="fill_parent" android:layout_weight="1"
        Android:text="View" android:enabled="false" />
</LinearLayout>

2.RotationOneActivity.java

package yyl.rotation;

import Android.app.Activity;
import Android.content.Intent;
import Android.net.Uri;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.Button;

public class RotationOneActivity extends Activity {
    
    //变量定义
    static final int PICK_REQUEST = 1337;    //请求码
    Button viewButton = null;    //按钮
    Uri contact = null;            //Uri

    //当手机界面Rotation(翻转)时,此方法重新加载www.linuxidc.com
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //根据Id得到控件对象
        Button btn = (Button) findViewById(R.id.pick);
        //给按钮绑定单击事件监听器
        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //生成一个Intent对象,这个Intent传入两个参数
                //这两个参数组合的作用是,单击才按钮,显示所有联系人,单击某一联系人,再返回到本Activity,传入选中的联系人的信息
                Intent i = new Intent(Intent.ACTION_PICK, Uri
                        .parse("content://contacts/people"));
                //启动,这里带来一个请求码
                startActivityForResult(i, PICK_REQUEST);
                System.out.println("pickButton onclick");
            }
        });
        
        //根据Id得到控件对象
        viewButton = (Button) findViewById(R.id.view);
        //给按钮绑定单击事件监听器
        viewButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //启动新的Activity
                //传入两个参数,这两个参数组合的作用是,显示contact中的联系人
                startActivity(new Intent(Intent.ACTION_VIEW, contact));
                System.out.println("viewButton onclick");
            }
        });
        
        System.out.println("--> onCreate");
        //判断是否需要做Activity恢复
        restoreMe(savedInstanceState);
        //设定按钮是否可用
        viewButton.setEnabled(contact != null);
    }

    //从其他相关Activity返回到本Activity是,调用该方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        System.out.println("onActivityResult-->" + requestCode);
        //判断请求码
        if (requestCode == PICK_REQUEST) {
            //判断结果码
            if (resultCode == RESULT_OK) {
                //调用Intent data的getData()方法,得到选中的联系人信息
                contact = data.getData();
                //设定按钮可用性
                viewButton.setEnabled(true);
            }
        }
        
    }

    //当离开本Activity时,调用该方法,该方法的作用可以做一个数据保存
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        System.out.println("onSaveInstanceState");
        if (contact != null) {
            outState.putString("contact", contact.toString());
            System.out.println("onSaveInstanceState-->" + contact.toString());
        }
    }

    //恢复Activity:如果没有该方法,当界面Rotation(翻转)时,原本可用的按钮,变成不可以用,因为数据丢失无法恢复
    private void restoreMe(Bundle state) {
        System.out.println("restoreMe");
        contact = null;
        if (state != null) {
            String contactUri = state.getString("contact");
            if (contactUri != null) {
                contact = Uri.parse(contactUri);
            }
        }
    }
}

用户评论