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度不支持)。属性值有。
Acitvity支持的屏幕旋转方向设置

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

阻止Activity销毁和重建(android:configChanges)
android:configChanges属性值为枚举类,无默认值。
默认情况下,配置变化后,Activity会自己通过销毁和重新创建窗口的方式处理这些情况。例如,屏幕旋转和尺寸改变,这一过程会调用Activity.onDestroy方法销毁当前窗口对象。
通过标签的android:configChanges属性值设为某一项或某几项配置,那么当这些配置发生变化后,系统将不再执行默认的动作,而是允许开发人员在Android.configurationChanged方法中处理配置的变化。

android:configChanges属性支持的配置
注意

屏幕旋转方向的配置变化只能检测出横屏和竖屏,并不能详细区分是正向横屏(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。
会对软键盘有影响
属性可以设置的值

activity xml 属性基本上就介绍完了。
还有activity的高级应用以后再写,例如activity的堆栈,别名等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.example.cuiyong_04; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class SignUp extends Activity { // 调用Actvity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sign_up);//关联activity_register.xml // 关联用户名、密码、确认密码、邮箱和注册、返回登录按钮 EditText userName = (EditText) this.findViewById(R.id.UserNameEdit); EditText passWord = (EditText) this.findViewById(R.id.PassWordEdit); EditText passWordAgain = (EditText) this.findViewById(R.id.PassWordAgainEdit); EditText email = (EditText) this.findViewById(R.id.EmailEdit); Button signUpButton = (Button) this.findViewById(R.id.SignUpButton); Button backLoginButton = (Button) this.findViewById(R.id.BackLoginButton); // 注册按钮监听器 signUpButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { String strUserName = userName.getText().toString().trim(); String strPassWord = passWord.getText().toString().trim(); String strPassWordAgain = passWordAgain.getText().toString().trim(); String strPhoneNumber = email.getText().toString().trim(); //注册格式粗检 if (strUserName.length() > 10) { Toast.makeText(SignUp.this, "用户名长度必须小于10!", Toast.LENGTH_SHORT).show(); } else if (strUserName.length() < 4) { Toast.makeText(SignUp.this, "用户名长度必须大于4!", Toast.LENGTH_SHORT).show(); } else if (strPassWord.length() > 16) { Toast.makeText(SignUp.this, "密码长度必须小于16!", Toast.LENGTH_SHORT).show(); } else if (strPassWord.length() < 6) { Toast.makeText(SignUp.this, "密码长度必须大于6!", Toast.LENGTH_SHORT).show(); } else if (!strPassWord.equals(strPassWordAgain)) { Toast.makeText(SignUp.this, "两次密码输入不一致!", Toast.LENGTH_SHORT).show(); } else if (!strPhoneNumber.contains("@")) { Toast.makeText(SignUp.this, "邮箱格式不正确!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(SignUp.this, "注册成功!", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(SignUp.this, MainActivity.class); startActivity(intent); } } } ); // 注册按钮监听器 backLoginButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(SignUp.this, MainActivity.class); startActivity(intent); } } ); } } 添加一个sharedprefence存储输入的东西,并添加接口
最新发布
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值