任何编程学习起步均是HelloWorld,作为稍有>net编程经验的我们来说就跳过这步吧,咱们且从简单登录界面开始。先看看效果:
一、准备知识:
1. 安卓环境:安装好JDK,直接去官网下载ADT-bundle集成包后更新即可使用。
二、页面布局:
还是一幅图说明一切
那么这个界面的布局如何呢?
<LinearLayout >最外边的DIV,用的是线性布局,方向是垂直 <TextView/>就是上图“初始用户名。。。”这几个字所在Lable <LinearLayout >里面的DIV,水平布局 <TextView/>用户名Lable <EditText/>用户名TextBox </LinearLayout> <LinearLayout>里面的DIV,水平布局 <TextView/>密码Lable <EditText/>密码TextBox </LinearLayout> <Button/>登录按钮 </LinearLayout>
上图一看,就会一半,下来一个一个看:
1. 最外层DIV:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_margin="5dip" >
定义宽高的停靠方式,有
fill_parent、match_parent:是一样的,为了兼容低版本,建议使用fill_parent
设置布局/控件为fill_parent将强制性让它布满整个屏幕或填满父控件的空白
wrap_content:被内容撑大,刚好能显示下内容为止
Orientation:排列方式,vertical垂直,默认是HORIZONTAL水平
2. 文本框:
<TextView android:id="@+id/lbl_LoginPass" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lbl_LoginPass_Text" android:textSize="15.0sp" />
这里出现了两个未知属性:
@+id/lbl_LoginPass和@string/lbl_LoginPass_Text
其实完全可以直接写:
android:text="用户名"
系统会提示这是硬编码,建议改写(汗,写了这么多年硬编码),他意思是这里仅仅引用字典中一个变量的名称,具体的值在字典中去维护,那么字典在哪里呢?
Res/Values/String.xml中维护了这个字典:
<resources> <string name="app_name">登录DEMO</string> <string name="action_settings">Settings</string> <string name="lbl_LoginName">用户名:</string> <string name="lbl_LoginPass_Text">密 码:</string> <string name="btn_login">开始登陆</string> </resources>
这里编码规范得注意一下了:假如控件ID为lbl_LoginPass,则他的字典名应该为lbl_LoginPass_Text为了防止多个页面的字典名重复建议最好加上页面前缀,如Login_lbl_LoginPass_Text
完整代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_margin="5dip" > <TextView android:id="@+id/form_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="初始用户名和密码都是123" /> <LinearLayout android:id="@+id/layout_login_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="5.0dip" android:layout_marginTop="10.0dip" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lbl_LoginName" /> <EditText android:id="@+id/txt_login_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="15.0sp" /> </LinearLayout> <LinearLayout android:id="@+id/login_pwd_layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/layout_login_name" android:layout_centerHorizontal="true" android:layout_margin="5.0dip" android:orientation="horizontal" > <TextView android:id="@+id/login_pass_edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lbl_LoginPass" android:textSize="15.0sp" /> <EditText android:id="@+id/txt_login_pwd" android:layout_width="fill_parent" android:layout_height="wrap_content" android:password="true" android:textSize="15.0sp" /> </LinearLayout> <Button android:id="@+id/btn_login" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:onClick="btn_click" android:text="登陆" /> </LinearLayout>
3. 页面后台
打开页面对应的后台代码:MainActivity.java
手动实现按钮的点击事件:
public void btn_click(View v) { TextView lblInfo=(TextView)findViewById(R.id.form_title); EditText txt_login_name=(EditText)findViewById(R.id.txt_login_name); EditText txt_login_pass=(EditText)findViewById(R.id.txt_login_pwd); String loginName=txt_login_name.getText().toString().trim(); String loginPass=txt_login_pass.getText().toString().trim(); if(loginPass.equals("123")&&loginName.equals("123")) { lblInfo.setText("登录成功!"); } else { lblInfo.setText("登录失败!"); } }
其实这些倒没啥说的一看名字就知道啥意思。