项目功能需求:
1> 点击登录按钮,登录成功与否必须有对应的响应事件。
2> 点击取消按钮,可以退出程序。
3> 用户名文本框和密码框可以接收由键盘输入的数据,且分别有提示信息。(密码框显示输入的内容不显示)
4> 要有背景图片
效果图
一、安卓结构布局分析,外层布局一共有四层为垂直布局,第二三四层内嵌布局为水平布局。
二、线性布局概述
线性布局(LinearLayout)是一种比较常用且简单的布局方式。在这种布局中,所有的子元素都是按照垂直或水平的顺序排列在界面上。如果是垂直排列,每个子元素占一行,如果是水平排列,则每个子元素占一列。线性布局可以支持布局样式嵌套实现复杂的布局样式。
layout文件夹下面的activity_main.xml为布局文件
LinearLayout标签的常用属性有:
(1)layout_width:布局宽度(match_parent(适应屏幕宽度)、wrap_content(包裹宽度))
(2)layout_height:布局高度(match_parent(适应屏幕高度)、wrap_content(包裹高度))
(3)orietation:方向(vertical(垂直),horizontal(水平))
(4)gravity:对齐方式(left, right, center……)
(5)background:背景(颜色、图片)
三、导入背景图片
TextView为文本标签,其常用属性有:
(1)text(文本)【建议文本内容在values下的string.xml中自行定义,例:android:text="@string/login" ;其中login是string.xml文件中的name属性】
(2)textSize(字体大小)【字体大小单位一般用sp,例:android:textSize=“25sp”】
(3)textColor(字体颜色)【例:android:textColor="#ff00ff"】
EditText为可编辑文本框,其常用属性有:
(1)hint(提示信息)【例:android:hint="@string/et_username"】
(2)singleLine(单行显示)【属性:(true、false)例:android:singleLine=“true”】
(3)inputType(输入类型)【属性:(textPassword、datetime、text)例:android:inputType=“textPassword”】
Button为按钮标签
提示:为了方便添加事件,每个标签可以增加 ID 属性,格式为:android:id="@+id/bt_log"
三、按照布局分析将各个标签进行排版布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/b2"
android:gravity="center"
android:orientation="vertical"
tools:context="com.example.admin.register.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/login"
android:textSize="25sp"
android:textColor="#ff00ff"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal">
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_username"
android:textSize="20sp"
android:textColor="#000000"/>
<EditText
android:id="@+id/et_username"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:hint="@string/et_username"
android:singleLine="true"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal">
<TextView
android:id="@+id/tv_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_password"
android:textSize="20sp"
android:textColor="#000000"/>
<EditText
android:id="@+id/et_password"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:hint="@string/et_password"
android:inputType="textPassword"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal">
<Button
android:id="@+id/bt_log"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/bt_log"/>
<Button
android:id="@+id/bt_bos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/bt_bos"/>
</LinearLayout>
</LinearLayout>
四、打开values文件下面的string.xml文件,在文件中定义layout文件夹下面的activity_main.xml中所需文本。
<resources>
<string name="app_name">Register</string>
<string name="login">用户登录</string>
<string name="tv_username">用户:</string>
<string name="tv_password">密码:</string>
<string name="bt_log">登录</string>
<string name="bt_bos">取消</string>
<string name="et_username">输入用户名</string>
<string name="et_password">输入密码</string>
</resources>
五、打开JAVA文件夹下MainActivity文件添加事件响应。
为用户名文本框、密码框、登录按钮、取消按钮定义变量。
通过资源标识获得控件实例,因为类型不同所以要进行强制转换。
给登录按钮注册监听器,实现监听器接口,编写事件(注:使用匿名内部类)
Toast是Android系统提供的一种提醒方式,不会占用任何的屏幕空间,所以可以将一些简短的信息通过toast的方式通知给用户,这些信息过一段时间会自动消失
第一个参数:MainActivity.this,当前的上下文环境
第二个参数:要显示的字符串,就是你想在屏幕上显示的内容
第三个参数:显示的时间长短,就是这个字符串在屏幕上显示的时长。Toast默认的有两个LENGTH_LONG(长)和LENGTH_SHORT(短)。
show(); 显示给取消按钮注册监听器,实现监听器接口,编写事件
finish(); 终止
package com.example.admin.register;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText et_username;
private EditText et_password;
private Button bt_log;
private Button bt_bos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//利用布局资源文件设置用户界面
setContentView(R.layout.activity_main);
//通过资源标识获得控件实例
et_username = (EditText) findViewById(R.id.et_username);
et_password = (EditText) findViewById(R.id.et_password);
bt_log = (Button) findViewById(R.id.bt_log);
bt_bos = (Button) findViewById(R.id.bt_bos);
//给登录按钮注册监听器,实现监听器接口,编写事件
bt_log.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取用户输入的数据
String strUsername = et_username.getText().toString();
String strPassword = et_password.getText().toString();
//判断用户名和密码是否正确(为可以进行测试,将用户名和密码都定义为admin)
if(strUsername.equals("admin") && strPassword.equals("admin")){
Toast.makeText(MainActivity.this,"用户名和密码正确!",Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this,"用户名或密码错误!",Toast.LENGTH_SHORT).show();
}
}
});
//给取消按钮注册监听器,实现监听器接口,编写事件
bt_bos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
以上就是安卓开发登录界面的的过程