天天看点

Android学习笔记之actvity xml属性

Android应用程序中的每一个Activity都必须在AndroidManifest.xml文件中通过标签声明才能使用。

设置Activity的基本信息

android:name是<activity>标签中唯一必须设置的属性,该属性表示窗口类的名称。
 通常设置的是相对的类名(相对于<manidest>标签的package属性值),但也可以使用
 绝对的类名,或是包含一部分包名的类名。也就是package属性值放前面,<activity>标签的android:name属性值放在后面。
 android:label和android:icon属性分别用于设置窗口标题的文本和图像。如果表示主窗口,这俩个属性
 也分别表示应用程序列表中的图像和下方的文本。
           

示例。

<application>
 <activity
    android:name="com.android.MainActivity"
    android:icon="@drawable/icon"
    android:label="@string/appName"
    <!-- 通过下面代码将当前窗口设置成主窗口 -->
    <intent-filter>
       <action android:name="android.intent.action.MAIN"/>
       <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
           
正常情况下系统会自动生成上面的代码。
           

屏幕方向切换(android:screenOrientation)

android:screenOrientation属于值为枚举类型,默认值是unspecified。

默认情况下,Activity会利用Android手机的传感器实现横竖屏的切换,也就是当手机在不同方向旋转后,系统会根据当前方向重新将窗口设为横屏或竖屏。

对于一个完全支持横竖屏切换的系统来说,可以支持4个屏幕方向。也就是说从手机的正常方向开始,按逆时针或顺时针每旋转90度是一个方向,直到旋转360度后回到正常手机方向,但对于标准的Android来说(就是说不包括类似小米这样第三方ROM)默认的就只有3个方向(180度不支持)。属性值有。

Android学习笔记之actvity xml属性
Android学习笔记之actvity xml属性
如果要在声明窗口指定屏幕旋转方向,需要使用<activity>标签的android:screenOrientation属性,如果用java代码设置窗口的屏幕旋转方向,需要调
用Activity.setRequestedOrientation方法。
           

阻止Activity销毁和重建(android:configChanges)

android:configChanges属性值为枚举类,无默认值。

默认情况下,配置变化后,Activity会自己通过销毁和重新创建窗口的方式处理这些情况。例如,屏幕旋转和尺寸改变,这一过程会调用Activity.onDestroy方法销毁当前窗口对象。

通过标签的android:configChanges属性值设为某一项或某几项配置,那么当这些配置发生变化后,系统将不再执行默认的动作,而是允许开发人员在Android.configurationChanged方法中处理配置的变化。

Android学习笔记之actvity xml属性

注意

屏幕旋转方向的配置变化只能检测出横屏和竖屏,并不能详细区分是正向横屏(landscape),正向竖屏(portrait),反
向横屏(reverseLandscape)和方向竖屏(reversePortrait)。所以landscape和reverseLandscape获得的屏幕旋转方向都是
Configuration.ORIENTATION_LANDSCAPE,同理
获得是Configyrtion.ORIENTATION_PORTRAIT.
           

允许Activity被实例化(android:enabled)

android:enabled属性值为布尔类型,默认为true。

在最近应用列表中显示(android:excludeFromRecents)

android:excludeFromRecents属性值为布尔类型,默认值是false。

允许其他程序访问当前窗口(android:exported)

android:exported属性值为布尔类型,默认值是true。

硬件加速(android:hardwareAccelerated)

android:hardwareAccelerated属性值为布尔类型,默认为false。

从Android 3.0开始,支持基于OpenGL的硬件加速技术,如果设为true,表示当前窗口在Canvas,Paint,Xfermode,ColorFilter,Shader和Camera上的大多数操作将被加速。加速的结果就是使动画和滚动更加平滑,并且拥有更快的响应速度。要注意的是,这里的OpenGL硬件加速并不需要显示的调用OpenGL API,系统会处理。

当然也有代价的,代价就是占用更多的内存和CPU的计算时间,因此,在任何情况下使用不是一个好主意。

在多进程中创建窗口实例(android:multiprocess)

android:multiprocess属性值为布尔类型,默认值是false。

无法返回的Activity(android:noHistroy)

android:noHistroy属性值为布尔类型,默认值是false。

指定要返回的窗口(android:parentActivityName)

android:parentActivityName属性值为字符串类型,无默认值。

使窗口受到权限的保护(android:permission)

android:permission属性值为枚举类型,无默认值。该属性值可输入的内容为Android支持的权限。

改变窗口所在的进程(amdroid:process)

amdroid:process属性值为字符串类型,无默认值。

默认情况下,一个Android应用程序(apk文件)只建立一个进程(进程名为当前应用程序的包名),该程序中所有组件(Activity,Service等)都运行在这个进程中。但为了满足某些特殊需求,Android系统允许为程序的某个组件单独建立一个进程(为了使组件之间保持相对独立性),也允许不同应用程序中的多个组件共享一个进程(为了节省内存空间和共享数据)。

amdroid:process属性的值有俩种类型的值。

以冒号(:)开头,如android:process=”:new_process”。系统会为当前组件在当前应用程序中创建一个私有的进程。

以小字母开头。系统会使当前组件运行在amdroid:process属性指定的全局进程中,但要注意,这个全局进程要存在,否则无法安装。

不保存窗口状态(android:stateNoNeeded)

android:stateNoNeeded属性值为布尔类型,默认值是false。

窗口的主题(android:theme)

android:theme属性值为字符串类型,无默认值。

可以引用风格(style)资源,也可以使用系统指定的主题

扩展窗口UI(android:uiOptions)

android:uiOptions属性值为枚举类型,默认值是none。

只能设置俩个。

none:不需要扩展

splitActiobBarWhenNarrow:为了使用屏幕的不同状态,会自动调整ActionBar,导航条,菜单项等界面元素。

设置输入法显示模式(android:windowSoftlnputMode)

android:windowSoftlnputMode属性值诶枚举类型,默认值是stateUnspecified adjustUnspecified。

会对软键盘有影响

Android学习笔记之actvity xml属性

activity xml 属性基本上就介绍完了。

还有activity的高级应用以后再写,例如activity的堆栈,别名等。

继续阅读