第四章:了解Android用户界面

一.      适配显示方向

1.      安卓支持两种屏幕方向:垂直方向、水平方向

2.      当修改Android设备的显示方向时,当前的Activity会自动在新的方向上绘制它的内容(原因:当显示方向发生变化时,ActivityonCreate()被触发)

è当改变Android设备的方向时,当前的Activity实际上被销毁并且被重建了

3.      两种技术来处理屏幕方向的变化:

(1)             锚定

(2)             改变大小和重新定位

锚定视图

<RelativeLayout

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  xmlns:android="http://schemas.android.cpm/apk/res/android">

  <Button

       android:id="@+id/button1"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="Top Left"

       android:layout_alignParentStart="true"

       android:layout_alignParentTop="true"/>

  <Button

       android:id="@+id/button2"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="Top RIGHT"

       android:layout_alignParentTop="true"

       android:layout_alignParentEnd="true"/>

  <Button

       android:id="@+id/button3"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="Bottom Left"

       android:layout_alignParentStart="true"

       android:layout_alignParentBottom="true"/>

  <Button

       android:id="@+id/button4"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="Bottom RIGHT"

       android:layout_alignParentEnd="true"

       android:layout_alignParentBottom="true"/>

  <Button

       android:id="@+id/button5"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:text="Middle"

       android:layout_centerVertical="true"

       android:layout_centerHorizontal="true"/>

</RelativeLayout>


二.      管理屏幕的方向变化

——探索设备改变方向时Activity发生的变化

1.      对任何Activity来说,每次方向发生变化时,他的OnPause()方法都会被调用,所以在该方法中保存任何需要的状态

2.      当一个Activity被销毁时,此Activity中只有被命名的视图的状体能被保存

3.      在配置发生变化时保存状态信息

当一个Activity被销毁时,下边的2个方***调用一个或都调用

onPause()  onSaveInstanceState()

è当屏幕方向变化时,这种变化属于配置变化,这会使得当前Activity被销毁

4.      检测方向发生变化

1) 使用getResource()方法得到设备在运行时屏幕当前的方向

2)如何通过编程的方法检测当前Activity的方向:

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

if(getResource().getConfiguration().orientation==

      Configuration.ORIENTATION_LANDSCAPE){

            Log.d("StateInfo","Landscape");

      }else if(getResource().getConfiguration().orientation==

      Configuration.PORTRAIT){

            Log.d("StateInfo","Portrait");

      }

}

5.      控制Activity的方向

需求:希望应用能够只在某一个方向模式下显示

解决方法:

(1)             通过编程调用Activity类的SetRequestOrientation()方法强制改变方向

(2)             在AndroidManifest.xml文件中的<activity>元素上使用android:screenOrientation属性强制Activity处于某个方向


#Android#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务