在项目开发中,

关于android手机横竖屏切换时显示不同的界面,在这里我定义了两个xml布局文件

landscape_screen.xml,portrait_screen.xml

根据屏幕的旋转切换不同的布局文件

重写onConfigurationChanged方法,对其进行监听并判断当前的屏幕状态,根据其状态显示对应的布局文件

当然在manifest.xml中对应的activity中要加上

android:configChanges="keyboardHidden|orientation|screenSize">

 

贴上代码说话

 

public classScreenActivity extends Activity implements OnClickListener{

 

private Button btn;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

 

//默认为竖屏

setupViewInPortraitLayout();

}

 

//竖屏界面

private voidsetupViewInPortraitLayout(){

setContentView(R.layout.portrait_screen);

 

btn = (Button)findViewById(R.id.button1_portrait);

btn.setOnClickListener(this);

}

 

//横屏界面

private voidsetupViewInLandscapeLayout(){

setContentView(R.layout.landscape_screen);

 

btn = (Button)findViewById(R.id.button1_landscape);

btn.setOnClickListener(this);

}

 

@Override

public voidonConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

 

Toast.makeText(ScreenActivity.this,"onConfigurationChanged", Toast.LENGTH_LONG).show();

Configuration cfg =getResources().getConfiguration();

 

if (cfg.orientation ==Configuration.ORIENTATION_LANDSCAPE) {

 

setupViewInLandscapeLayout();

 

} else if(cfg.orientation == Configuration.ORIENTATION_PORTRAIT) {

 

setupViewInPortraitLayout();

}

}

 

@Override

public void onClick(Viewarg0) {

// TODO Auto-generatedmethod stub

if(arg0.equals(btn)){

Toast.makeText(ScreenActivity.this,"Click", Toast.LENGTH_LONG).show();

}

}

}

 

//landscape_screen.xml

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

 

    <Button

        android:id="@+id/button1_landscape"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="LandScape"/>

 

    <TextView

        android:id="@+id/textView1"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:gravity="center"

        android:text="横屏界面"

        android:textAppearance="?android:attr/textAppearanceLarge"/>

 

</LinearLayout>

 

//portrait_screen.xml

<RelativeLayoutxmlns: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"

    tools:context=".ScreenActivity">

 

    <Button

        android:id="@+id/button1_portrait"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"

        android:layout_alignParentRight="true"

        android:layout_centerVertical="true"

        android:text="Portrait"/>

 

    <TextView

        android:id="@+id/textView1"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"

        android:layout_below="@+id/button1_portrait"

        android:gravity="center"

        android:text="竖屏界面"

        android:textAppearance="?android:attr/textAppearanceLarge"/>

 

</RelativeLayout>

 

//manifest.xml

<?xmlversion="1.0"encoding="utf-8"?>

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.testscreen"

    android:versionCode="1"

    android:versionName="1.0">

 

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="18"/>

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme"

        >

        <activity

            android:name="com.example.testscreen.ScreenActivity"

            android:label="@string/app_name"

          

            android:configChanges="keyboardHidden|orientation|screenSize"><!-- 这句话不能忘记,起初少了这一个|screenSize参数,一直出现错误  -->

            <intent-filter>

                <actionandroid:name="android.intent.action.MAIN"/>

 

                <categoryandroid:name="android.intent.category.LAUNCHER"/>

            </intent-filter>

        </activity>

    </application>

</manifest>