文档库 最新最全的文档下载
当前位置:文档库 › Android 中OnClick的五种实现方式

Android 中OnClick的五种实现方式

Android 中OnClick的五种实现方式
Android 中OnClick的五种实现方式

1、控件的OnClick属性,设置点击事件的响应方法名android:onClick=”方法名”

缺点:当类的代码较多,方法和内部类较多时,代码管理不方便

优点:屏蔽所有的内部机制,不需要掌握回调机机制,学习测试阶段用(程序规模很小)Activity_main.xml

xmlns:tools="https://www.wendangku.net/doc/e58465766.html,/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/btn_Framelayout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="用表格布局实现注册"

android:onClick="framelayout"/>

android:id="@+id/btn_Gridlayout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="用网格布局实现注册"

android:onClick="gridlayout"/>

android:id="@+id/btn_Linearlayout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="用线性布局实现注册"

android:onClick="linearlayout"/>

android:id="@+id/btn_Relativelayout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="用绝对布局实现注册"

android:onClick="relativelayout"/>

android:id="@+id/btn_Tablelayout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="用表格布局实现注册"

android:onClick="tablelayout"/>

MainActivity.java

package com.example.day03_03;

import android.os.Bundle;

import android.app.Activity;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.activity_main);

}

public void framelayout(View f) {

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.framelayout);

}

//下面是 onClick值是gridLayout的按钮的点击事件响应的方法

public void gridlayout(View g) {

Log.i("Main", ((Button)g).getText().toString());

//Main是LogCat里已存在的过滤器名

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.gridlayout);

}

public void linearlayout(View l) {

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.linearlayout);

}

public void relativelayout(View r) {

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.relativelayout);

}

public void tablelayout(View t) {

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.tablelayout);

}

}

2、匿名内部类

特点:没有复用性,一次性使用;项目较大时,方便代码的管理(从结构层看,set的方法,都时监听器[ctrl+o,再输入set])

MainActivity.java

package com.example.day05_01;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.activity_main);

setListener();//设置监听器

}

private void setListener() {

// TODO Auto-generated method stub

Button button = (Button) findViewById(R.id.button);

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(MainActivity.this, "button按钮被点击", 3000).show();

}

});

}

}

Activity_main.xml

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/button"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="点我呀!"/>

package com.example.day05_01;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.activity_main);

setListener();

//可以接着set其他的监听器,如setReturnListener();

}

private void setListener() {

setOnClickListener();

//可以继续添加监听,如setReturnListener()

}

private void setOnClickListener() {

Button button = (Button) findViewById(R.id.button);

//new 一个匿名内部类

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(MainActivity.this, "button按钮被点击", 3000).show();

}

});

}

}

3、内部类实现方式:适用于监听器具有复用性(当前类中,好几个地方用到监听器,提取出来,变成一个内部类,用的时候new一个内部类就行)

Activity_main.xml

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/btnLogin"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="登录"

android:onClick="onClick"/>

MainActivity.java

package com.example.day05_04;

import android.os.Bundle;

import android.app.Activity;

import android.speech.RecognizerResultsIntent;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Toast;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.activity_main);

findViewById(R.id.btnLogin).setOnClickListener(new LoginClickListener());

}

class LoginClickListener implements OnClickListener{

@Override

public void onClick(View v) {

if(v.getId() == R.id.btnLogin){

Toast.makeText(MainActivity.this, "点击登录按钮", 2000).show();

}

}

}

}

4、Android类实现OnClickListener接口:用于按钮较多,但是监听处理的代码不多时

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:id="@+id/btnLogin"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="登录"

android:onClick="onClick"/>

android:id="@+id/btnExit"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="退出"

android:onClick="onClick"/>

package com.example.day05_03;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.activity_main);

//将mainActivity.this地址保存在Button.mOnClickListener属性中

findViewById(R.id.btnLogin).setOnClickListener(this);

findViewById(R.id.btnExit).setOnClickListener(this);

}

//对单击事件集中处理

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btnLogin:

Toast.makeText(this, "执行登录操作", 3000).show();

break;

case R.id.btnExit:

finish();

default:

break;

}

}

}

5、外部类实现接口:适用于监听器具有复用性,有利于代码的混淆MainActivity.java

package com.example.day05_05;

import android.os.Bundle;

import android.app.Activity;

import android.speech.RecognizerResultsIntent;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.EditText;

import android.widget.Toast;

/*

* 外部类

*/

public class MainActivity extends Activity {

EditText metId,metPwd;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/e58465766.html,yout.activity_main);

initView();

setListener();

}

private void setListener() {

MyClickListener listener = new MyClickListener(metId, metPwd, this);

findViewById(R.id.btnLogin).setOnClickListener(listener);

findViewById(R.id.btnExit).setOnClickListener(listener);

}

private void initView() {

metId = (EditText) findViewById(R.id.etId);

metPwd = (EditText) findViewById(R.id.etPwd);

}

}

MyClickListener.java

package com.example.day05_05;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.EditText;

import android.widget.Toast;

public class MyClickListener implements OnClickListener {

EditText metId,metPwd;

MainActivity mActivity;

public MyClickListener(EditText metId, EditText metPwd,

MainActivity mActivity) {

super();

this.metId = metId;

this.metPwd = metPwd;

this.mActivity = mActivity;

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btnExit:

mActivity.finish();

break;

case R.id.btnLogin:

String id = metId.getText().toString();

String pwd = metPwd.getText().toString();

Toast.makeText(mActivity,"登录编号:"+id+ "登录密码:"+ pwd, Toast.LENGTH_LONG).show();

break;

default:

break;

}

}

}

xmlns:tools="https://www.wendangku.net/doc/e58465766.html,/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="16sp"

android:text="输入编号"/>

android:id="@+id/etId"

android:layout_width="0dp"

android:layout_weight="1"

android:layout_height="wrap_content"

android:hint="2-10个字符"/>

Activity_main.xml

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="16sp"

android:text="密码"/>

android:id="@+id/etPwd"

android:layout_width="0dp"

android:layout_weight="1"

android:layout_height="wrap_content"

android:password="true"

android:hint="2-10个字符"/>

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:layout_width="0dp"

android:layout_height="30dp"

android:visibility="invisible"

android:layout_weight="1"/>

android:id="@+id/btnLogin"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:drawableLeft="@drawable/login32x32"

android:background="@drawable/btn_bg"

android:text="登陆"/>

android:layout_width="0dp"

android:layout_height="30dp"

android:visibility="invisible"

android:layout_weight="1"/>

android:id="@+id/btnExit"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:drawableLeft="@drawable/exit32x32"

android:background="@drawable/btn_bg"

android:text="退出"/>

android:layout_width="0dp"

android:layout_height="30dp"

android:visibility="invisible"

android:layout_weight="1"/>

Android简单的登陆界面的设计开发

通信实训报告 -Android移动平台开发 学院:信息工程学院 班级: 学号: 姓名:

实训内容: 一.1.Andriod的简介 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread 和Android 3.0 Honeycomb。 Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。 Android早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:魅族(M9),华为、中兴、联想、蓝魔等。 2.Android构架图 二.1软件下载 Android SDK,网址是https://www.wendangku.net/doc/e58465766.html,. JDK的下载地址https://www.wendangku.net/doc/e58465766.html,/javase/downloads/widget/jdk6.jsp。Eclipse的下载网址是https://www.wendangku.net/doc/e58465766.html,/downloads/ 2.Android开发环境搭建

Android布局属性大全

Android布局属性大全 布局: AbsoluteLayout(绝对布局): xmlns:android="https://www.wendangku.net/doc/e58465766.html,/apk/res/android" style="@..." android:clipChildren="true|false" android:clipToPadding="true|false" android:layoutAnimation="@---" android:animationCache="true|false" android:persistentDrawingCache="none|animation|scrolling|all":持续高速缓存绘图 android:alwaysDrawnWithCache="true|false" android:andStatesFromChildre="true|false" android:descendantFocusability="beforeDescendants|afterDescendants|bl ocksDescendants":后裔可聚焦 android:id="@+id/absoluteLayout" android:tag="@---" android:android:scrollX="---" android:android:scrollY="---" android:background="@---" android:padding="----" android:paddingLeft="----" android:paddingTop="----" android:paddingRight="----" android:paddingBotton="---" android:focusable="true|false" android:focusableInTouchMode="true|false" android:visibility="visible|invisible|gone" android:fitsSystemWindows="true|false":适合系统窗口 android:scrollbars="none|horizontal|vertical" android:scrollbarStyle="insideOverlay(内覆盖)|insideInset(内插 图)|outsideOverlay(外覆盖)|outsideInset(外插图)" android:isScrollContainer="true|false":是一个滚动集合 android:fadeScrollbars="true|false":褪色的滚动条 android:scrollbarFadeDuration="---":卷轴淡出 android:scrollDefaultDelayBeforeFade="---":滚动前默认延迟 android:scrollbarSize="---" android:scrollbarThumbHorizontal="@----":拇指水平滚动条 android:scrollbarThumbVertical="@----":拇指垂直滚动条 android:scrollbarTrackVertical="@---":垂直滚动条轨道 android:scrollbarTrackHorizontal="@---":水平滚动条轨道 android:scrollbarAlwaysDrawHorizontalTrack="true|false":水平滚动条总是吸引轨道

Android登录界面(步骤详细)

Android简单登录界面 设计一个登陆界面: 允许用户输入用户名,密码; 用户点击“Login”之后,如果用户名为admin, 密码为123则显示“登陆成功”;如果用户名密码其中之一不正确,红色字体显示“登陆失败!” 首先我们来建立一个新的项目:

图标那一步就随便选吧,下一步: 这一步与上次有点不同,这次我们不要ADT 帮我们创建任何的Activity,我们只需要一个空的项目。 点击Finish后,我们会发现,项目文件视图下,与上次的不一样,src, res/layout 是空的,这次需要我们自己去添加了。 首先来明确一下我们现在的目标: 建立一个包含登录框的界面,并将它显示在我们的手机(模拟器)上。 建立一个界面的主要步骤是什么呢?主要有以下几步: ?在res/layout下创建布局文件; ?在src下创建Activity子类,并将布局文件与这个Activity联系起来。 ?在AndroidManifest.xml程序配置文件中,添加Activity的声明。 我们先来 1. 创建布局文件: 在Eclipse项目文件中选中layout 文件夹,在工具栏里点击下面图标 在弹出的窗口,填上这个xml布局文件的文件名,Root Element 根节点就选择Linearlayout 即可

点击下一步,这一步是选择更多配置属性的,暂且不用理会,直接点击Finish。 我们发现,在res/layout 下面多了一个login.xml文件,同时Android 的Layout 编辑器也把它打开了。 切换到“source”代码视图,今天我们不用“所见即所得”的傻瓜拖拽方式。 我们看到xml代码是这样的: 根节点是LinearLayout,即线性布局,所谓线性布局,有点像J2SE上的流式布局,就是其中的UI元素,会按水平或者垂直方向顺序地铺开。 LinearLayout有个xml属性:android:orientation,它有两个可选值:vertical和horizontal,指明该线性布局中的元素,是以垂直(vertical)还是水平(horizontal)方向排列。

Android界面设计教程

这样的话就比较容易实现了,再看一下整体的Layout布局情况: xml布局文件如下:注意层次的嵌套。先是一个RelativeLayout,它有两个子布局,RelativeLayout和LinearLayout。

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:padding="10.0dip" android:singleLine="true" android:text="设置" android:textColor="@color/white" android:textSize="15dp" />

基于Android系统的App界面设计

基于Android系统的App界面设计 智能手机时代的来临改变了大多数人的生活习惯,时至今日智能手机已经成为了人们工作生活中的一部分,在工作生活中发挥着重要的作用。App作为智能手机应用程序的核心,构建以用户体验为核心的页面设计是智能手机App设计的核心与要点,同时也是满足用户使用需求的重要途径与方式。现今的智能手机App主要分为IOS与Android两大市场,与IOS的封闭不同的是Android系统具有极强的开放性,而这一开放性在为Android系统App带来无限可能的同时也使得基于Android系统所开发的App界面本身缺乏统一的规范,从而造成基于Android系统所开发的App界面具有极大的开放性。新时期为做好基于Android 系统App的设计需要从情感、认知以及感官三个层面入手做好基于Android系统的App界面的开发设计,使之具有良好的用户使用体验。 标签:Android系统;App;界面设计 Abstract:The advent of the smart phone era has changed the habits of most people. Today,smart phone s have become a part of people’s work and life,and play an important role in the work and life. As the core of smart phone applications,App plays an important role in the work and life. The design of page based on user experience is the core and key point of the App design of smart phone,and it is also an important way and way to meet the needs of users. Today’s smartphone App is mainly divided into IOS and Android two major markets,Different from the closure of IOS,Android system has a very strong openness,and this openness not only brings infinite possibility to App of Android system,but also makes the App interface based on Android system lack of unified specification. As a result,the App interface based on Android system is very open. In order to do well the design of App based on Android system in the new period,it is necessary to develop and design the App interface based on Android system from the three aspects of emotion,cognition and sense organ,to make it have a good user experience. Keywords:Android system;App;interface design 前言 Android系统是与IOS系统所并行的应用于智能手机中的两大智能系统,在基于Android系统App界面开发的过程中受多种因素的影响使得一些App的界面具有很大的不协调性,从而影响了广大用户的使用体验。本文在分析影响智能手机App界面设计因素的基础上对如何做好基于Android系统的App界面设计进行分析阐述。 1 影响智能手机App界面设计的因素分析 智能手机App是智能手机的灵魂,用户结合自身需求可以下载安装自身所

Android 开发之旅-view的几种布局方式及实践

Android 开发之旅:view的几种布局方式及实践 https://www.wendangku.net/doc/e58465766.html,/1943397/363552 2010-06-06 14:14:00 标签:布局 View 实践移动开发 Android 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。 https://www.wendangku.net/doc/e58465766.html,/1943397/363552 引言 通过前面两篇: 1.Android 开发之旅:又见Hello World! 2.Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用“Hello World!”程序来实践证明了。在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View的几种布局显示方法,以后就不会在针对布局方面做过多的介绍。View的布局显示方式有下面几种:线性布局(Linear Layout)、相对布局(Relative Layout)、表格布局(Table Layout)、网格视图(Grid View)、标签布局(Tab Layout)、列表视图(List View)、绝对布局(AbsoluteLayout)。本文虽然是介绍View的布局方式,但不仅仅是这样,其中涉及了很多小的知识点,绝对能给你带来Android大餐! 本文的主要内容就是分别介绍以上视图的七种布局显示方式效果及实现,大纲如下: 1.1、View布局概述 2.2、线性布局(Linear Layout) 1. 2.1、Tips:android:layout_weight="1" 3.3、相对布局(Relative Layout) 4.4、表格布局(Table Layout) 5.5、列表视图(List View) 1. 5.1、一个小的改进 2. 5.2、补充说明 6.6、网格视图(Grid View) 7.7 、绝对布局() 8.8、标签布局(Tab Layout) 1、view的布局显示概述 通过前面的学习我们知道:在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。Android中有很多种View和ViewGroup,他们都继承自View类。View对象是Android平台上表示用户界面的基本单元。 View的布局显示方式直接影响用户界面,View的布局方式是指一组View元素如何布局,准确的说是一个ViewGroup中包含的一些View怎么样布局。ViewGroup类是布局(layout)和视图容器(View container)的基类,此类也定义了https://www.wendangku.net/doc/e58465766.html,youtParams类,它作为布局参数的基类,此类告诉父视图其中的子视图想如何显示。例如,XML布局文件中名为layout_something的属性(参加上篇的4.2节)。我们要介绍的View的布局方式的类,都是直接或间接继承自ViewGroup类,如下图所示:

Android七种布局解析

我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用“Hello World!” 程序来实践证明了。在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View 的几种布局显示方法,以后就不会在针对布局方面做过多的介绍。View的布局显示方式有下面几种: 线性布局(Linear Layout)、 相对布局(Relative Layout)、 表格布局(Table Layout)、 网格视图(Grid View)、 标签布局(Tab Layout)、 列表视图(List View)、 绝对布局(AbsoluteLayout)。本文虽然是介绍View的布局方式,但不仅仅是这样,其中涉及了很多小的知识点,绝对能给你带来Android大餐! 本文的主要内容就是分别介绍以上视图的七种布局显示方式效果及实现,大纲如下: ?1、View布局概述 ?2、线性布局(Linear Layout) o 2.1、Tips:android:layout_weight="1" ?3、相对布局(Relative Layout) ?4、表格布局(Table Layout) ?5、列表视图(List View) o 5.1、一个小的改进 o 5.2、补充说明 ?6、网格视图(Grid View) ?7 、绝对布局() ?8、标签布局(Tab Layout) 1、view的布局显示概述 通过前面的学习我们知道:在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。A ndroid中有很多种View和ViewGroup,他们都继承自View类。View对象是Android平台上表示用户界面的基本单元。 View的布局显示方式直接影响用户界面,View的布局方式是指一组View元素如何布局,准确的说是一个ViewGroup中包含的一些View怎么样布局。ViewGroup类是布局(layout)和视图容器(View containe r)的基类,此类也定义了https://www.wendangku.net/doc/e58465766.html,youtParams类,它作为布局参数的基类,此 类告诉父视图其中的子视图想如何显示。例如,XML布局文件中名为layout_so mething的属性(参加上篇的4.2节)。我们要介绍的View的布局方式的类,都是直接或间接继承自ViewGroup类,如下图所示:

基于android的简单用户注册系统课程设计报告

实验报告 课程名称 : Android应用程序设计 实验名称 :简单的用户注册登录系统 学院 : 电子信息工程学院 专业 : 计算机科学与技术 班级 : 姓名 : 学号 : 时间 : 目录 第一章设计背景 1.1引言 (3) 1.2设计目的 (3) 1.3 设计要求 (3) 1.4 开发运行环境 (3) 第二章需求分析 2.1技术可行性 (4) 2.2网络需求分析 (4) 2.3运行环境需求分析 (4) 2.4用户需求分析 (4) 第三章具体方案设计 3.1 注册登录界面系统介绍 (5) 3.2 流程图 (5) (6) 3.3详细界面设计 3.3.1 注册界

面........................................................... . (6) 3.3.2 登录界面............................................................ (7) 3.4 项目目录结构图.......................................................... (8) 3.5 系统界面组件的生成...................................................... (8) 3.6 实现过程及代码 3.6.1 注册界面的生成....................................................... .. (9) 3.6.2 登录界面的生成.................................................... . (10) 3.6.3 用XML实现用户界面优缺点................................................. 12 3.7 程序代码 3.7.1 Zhuce.java (12) 3.7.2 denglu.java (14) 第四章实验结果截图 4.1 填写注册信息................................................................. 16 4.2 注册成功..................................................................... 16 4.3 填写登录信息................................................................. 17 4.4 登录成功..................................................................... 18 4.5 填写密码不一致时............................................................. 19 第五章软件的系统测试 5.1 系统测试的原则.............................................................. 20 5.2 测试环境..................................................................... 20 第六章实验总结 一、设计背景 1.1 引言 用户注册登录程序在网上经常可见。一般都是在Web主页上提供一个用户名及密码文本框,通过收集用户输入的信息,与数据库中的记录进行判断,若正确则进入相关页面;若不正确或没有该记录,则提示出错信息。现在很多的网站的浏览都需要注册成为会员才可以使用更多的功能,所以需要我们自己注册成为网站会员方可使用更多功能。类似微博、百度、人人等。 如果要完成用户登录,则一定要有一个表单页面,此页面可以输入登录用户名和密码。但是在登录之前也必须有过注册方可进行登录,因此也需要有一个注册页面来完成

Android_布局详解【图文】

Android 布局详解【图文】 Android 布局是开发中非常重要的一个知识部分,它的布局分为以下几种: Linear Layout:线性布局 Relative Layout:相对布局 Table Layout:表格布局 FrameLayout AbsoluteLayout Grid View:网格布局 Tab Layout:选项卡布局 List View:列表布局 一、Linear Layout 简单来说,直着排,横着排都可以,还可以嵌套,此布局运用的非常多。下面直接上示例代码及截图:

接下来,看一下布局XML文件: