Android--layout的横竖屏处理
横竖屏处理是开发应用是比较基础的一个要点,几乎都会用到。
一、layout-land和layout-prot的区别与使用
默认情况下,创建的Android项目里只有一个layout文件夹,尽管这样也可以横竖屏切换用,但是某些布局横屏过后闲的格外的丑。
横屏过后就显示的不全了,有时候看着比较纠结。所以需要在横屏的使用重新载入新的布局文件
解决办法是:先把layout目录删除了,因为可能跟之后的产生冲突。然后新建两个文件夹,一个layout-land,另一个是layout-prot。
layout-land:存放横屏布局文件,如main.xml。布局名字与layout-prot的一样
layout-prot:存放竖屏布局文件,名字与layout-land的一样
剩下的事情就可以交由手机处理了,手机会自动处理横竖屏时布局之间的切换(前提是你的手机支持横竖屏,并且:设置-显示-自动旋转屏幕)
先看看两个布局文件吧,Activity可以不用管。
layout-land/main.xml
<?xml version="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="horizontal"><LinearLayoutandroid:orientation="vertical"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_gravity="center"android:paddingLeft="20dip"android:paddingRight="20dip"><TextViewandroid:text="cnblogs-花郎"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginBottom="20dip"android:textSize="24.5sp" /><TableLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:stretchColumns="*"><TableRow><Buttonandroid:text="吃饭" /><Buttonandroid:text="睡觉" /></TableRow><TableRow><Buttonandroid:text="旅游" /><Buttonandroid:text="盗墓" /></TableRow></TableLayout></LinearLayout></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#3500ffff"android:padding="30dip"android:orientation="horizontal"><LinearLayoutandroid:orientation="vertical"android:layout_height="wrap_content"android:layout_width="fill_parent"android:layout_gravity="center"><TextViewandroid:text="cnblogs-花郎"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginBottom="25dip"android:textSize="24.5sp" /><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="吃饭" /><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="睡觉" /><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="旅游" /><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="盗墓" /></LinearLayout></LinearLayout>
package com.loulijun.demo07;import android.app.Activity;import android.content.res.Configuration;import android.net.Uri;import android.os.Bundle;import android.view.Window;import android.view.WindowManager;import android.widget.Toast;import android.widget.VideoView;public class Demo07Activity extends Activity { private VideoView video; private String rtspUrl = "rtsp://218.205.231.149:554/mobile/1/2CBE124B67C85A59/48f313651199829e.sdp?id=guest&t=1305313158&en=f2ed024c7963e179f65c65689fdd9887&rs=wap"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); video = (VideoView)findViewById(R.id.play); video.setVideoURI(Uri.parse(rtspUrl)); video.requestFocus(); video.start(); } @Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ) { Toast.makeText(getApplicationContext(), "切换为横屏", Toast.LENGTH_SHORT).show(); }else if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { Toast.makeText(getApplicationContext(), "切换为竖屏", Toast.LENGTH_SHORT).show(); } } }
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <VideoView android:id="@+id/play" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" /></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.loulijun.demo07" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:name=".Demo07Activity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="andorid.permission.CHANGE_CONFIGURATION"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/></manifest>