安卓实验2

合集下载

安卓实验报告

安卓实验报告

安卓实验报告一、实验目的。

本实验旨在通过对安卓系统的深入了解和实际操作,掌握安卓系统的基本原理、特点和应用,进一步提高对安卓系统的认识和应用能力。

二、实验内容。

1. 安卓系统的基本原理。

2. 安卓系统的特点。

3. 安卓系统的应用实例。

三、实验步骤。

1. 了解安卓系统的基本原理。

安卓系统是一种基于Linux内核的开放源代码操作系统,主要应用于移动设备,如智能手机和平板电脑。

其核心特点包括开放性、多任务处理、多点触控、丰富的应用程序和自由的定制等。

通过学习安卓系统的基本原理,可以更好地理解其工作机制和特点。

2. 掌握安卓系统的特点。

安卓系统具有开放性,用户可以根据个人需求自由定制系统;多任务处理能力强,可以同时运行多个应用程序;支持多点触控,提供更加灵活的操作方式;拥有丰富的应用程序资源,用户可以根据自己的需求随时下载安装各种应用程序。

通过实际操作和体验,可以更好地了解安卓系统的特点和优势。

3. 应用实例。

通过实际操作安卓系统,可以体验其丰富的应用场景,如社交娱乐、办公学习、生活购物等方面的应用。

同时,也可以通过安卓系统的开发工具,自行开发应用程序,体验安卓系统的灵活性和开放性。

四、实验结果。

通过本次实验,我深入了解了安卓系统的基本原理和特点,掌握了安卓系统的应用实例。

在实际操作中,我发现安卓系统的开放性和灵活性为用户带来了更加丰富的应用体验,同时也为开发者提供了更多的创新空间。

五、实验总结。

本次实验使我对安卓系统有了更深入的认识,不仅提高了我对安卓系统的应用能力,也增强了我对移动操作系统的理解。

通过实际操作和体验,我对安卓系统的特点和优势有了更加清晰的认识,相信这对我今后的学习和工作都会有所帮助。

六、参考文献。

1. 《安卓系统原理与应用》,XXX,XXX出版社,2019。

2. 《安卓系统开发指南》,XXX,XXX出版社,2018。

七、致谢。

感谢指导老师对本次实验的指导和帮助,也感谢实验室的工作人员在实验过程中的支持和配合。

《Android应用程序设计》实验报告 (2)

《Android应用程序设计》实验报告 (2)

实验1 搭建开发环境与第1个Android程序【实验目的】1.熟悉Android开发环境的搭建2.掌握用Eclipse开发Android程序的流程【实验内容】一、搭建Android开发环境按照下面的步骤,完成Android环境的搭建。

1.1 JDK的安装及配置1.根据电脑的系统位数安装软件包里的JDK,安装目录设置为d:\jdk1.x。

(d为你的安装盘,可以设为任意盘;x为你安装的jdk版本)2. WIN7系统环境变量设置(1)环境变量设置一(2)环境变量设置二(3)环境变量设置三(4)环境变量设置四1)创建新的环境变量。

名:JA V A_HOME,值:x:\jdk1.72)修改系统变量Path,在path变量值前添加这段:%JA V A_HOME%\bin;3)修改系统变量classpath,值为:.;%JA V A_HOME%\lib\dt.jar;%JA V A_HOME%\lib\tools.jar;(5)环境变量设置五1)测试开发环境。

在开始->搜索程序和文件里输入cmd.exe,打开cmd。

输入cd c:\ 命令进入c盘根目录。

2)在c盘根目录下使用记事本编写源文件,并存为java文件。

public class MyApp {public static void main (String[] args) {System.out.println(“我能学好Java语言!”);} }3)使用javac命令编译程序,在cmd命令行输入:javac MyApp.java生成class类型文件。

4)使用java命令运行程序,在cmd命令行输入:java MyApp如果在命令行显示结果“我能学好Java语言!”,则JDK环境配置成功。

1.2 Android SDK的安装及配置1. 解压adt-bundle-windows-x86_64-20131030.zip文件,里面的SDK是免安装版。

实验二实验报告

实验二实验报告

实验二实验报告1. 引言实验二旨在探究某一特定现象或者现象之间的关系,并且通过实验数据和分析来验证或者推论相关理论。

本实验主要目的是研究X现象,并且分析X现象与Y之间的关系。

通过实验结果的观察和数据的统计分析,我们可以深入了解该现象的特点和规律。

2. 实验设计2.1 实验装置本次实验采用了XXXX装置来模拟实验环境,并利用XX测量设备来获取相关数据。

2.2 实验步骤1) 步骤一:准备实验装置,按照实验要求设置相关参数。

2) 步骤二:开启实验装置,记录初始数据。

3) 步骤三:对实验环境进行一定的处理或者改变,观察现象,记录数据。

4) 步骤四:重复步骤三,采集足够的数据。

5) 步骤五:整理数据并进行分析。

3. 实验结果与数据分析通过实验数据的统计和分析,我们得出以下结论:在实验过程中,我们观察到X现象的特征是......通过记录的数据我们可以发现......3.2 结果二对于不同的实验环境参数,我们发现X现象与Y之间存在一定的关联性......通过数据分析,我们可以得出......3.3 结果三进一步的实验数据表明......这与我们之前的推测相符,同时也与X 理论一致......4. 讨论与分析通过实验结果与数据分析,我们可以得出以下结论:4.1 讨论一实验结果验证了X理论,并且揭示了X现象的某些特征......这对于进一步研究和应用X现象具有重要的意义......4.2 讨论二实验中发现的X与Y之间的关联性,给我们提供了一定的启示和思考......进一步探究X与Y之间的机制可以推动相关领域的发展......5. 结论通过实验二的设计与结果分析,我们得出以下结论:实验结果表明X现象在特定条件下具有一定规律性和可重复性,验证了X理论的正确性。

5.2 结论二实验进一步揭示了X与Y之间的关联性,为相关领域的研究和应用提供了参考。

6. 总结本次实验通过设计与实施,详细研究了X现象,并探究了X与Y 之间的关系。

软件测试-实验2-白盒测试案例分析

软件测试-实验2-白盒测试案例分析

实验 2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。

这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。

1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。

无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。

2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。

判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。

3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。

条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。

4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。

线性地增加了测试用例的数量。

5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。

Android课程实验报告

Android课程实验报告

Android课程实验报告实验题目:实现一个简单的Android计算器应用实验目的:通过实现一个简单的Android计算器应用,掌握Android 应用的开发流程和常用控件的使用方法。

一、实验要求1. 实现一个包含加减乘除四则运算功能的Android计算器应用。

2.应用界面至少包含一个显示结果的文本框和15个按钮(包括数字按钮0-9、小数点按钮“.”、加减乘除按钮和等号按钮“=”)。

3. 按钮点击事件的处理采用Lambda表达式实现。

二、实验过程1. 创建一个新的Android项目,并在activity_main.xml文件中添加一个显示结果的文本框(TextView)和15个按钮(Button)。

2. 在MainActivity.java文件中,通过findViewById(方法获取文本框和按钮的实例。

3. 使用Lambda表达式为按钮注册点击事件的处理程序,在处理程序中根据按钮的ID执行相应的操作。

4. 使用StringBuilder类来拼接用户输入的数字和运算符,并将结果显示在文本框中。

三、实验代码1. activity_main.xml```xmlandroid:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"><TextViewandroid:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="10dp" android:textSize="20sp"android:textStyle="bold"android:textAlignment="center" /><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content" android:layout_weight="1"android:text="0" /><!--其他按钮的布局与此类似,省略--> <Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="." /><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="=" /></RelativeLayout>```2. MainActivity.java```javaprivate TextView resultTextView;private StringBuilder expression;protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(yout.activity_main); resultTextView = findViewById(R.id.resultTextView);Button btn0 = findViewById(R.id.btn0);Button btn1 = findViewById(R.id.btn1);//其他按钮的初始化与此类似,省略Button btnDot = findViewById(R.id.btnDot);Button btnEq = findViewById(R.id.btnEq);expression = new StringBuilder(;btn0.setOnClickListener(v -> expression.append("0"));btn1.setOnClickListener(v -> expression.append("1"));//其他按钮的点击事件注册与此类似,省略btnDot.setOnClickListener(v -> expression.append(".")); btnEq.setOnClickListener(v ->double result = evaluateExpression(expression.toString(); resultTextView.setText(String.valueOf(result));});}private double evaluateExpression(String exp)//解析并计算表达式的值//省略}```四、实验结果和分析通过运行实验代码,可以在模拟器或真机上打开一个包含加减乘除四则运算功能的Android计算器应用。

android应用开发实验报告

android应用开发实验报告

android应用开发实验报告Android应用开发实验报告引言:随着智能手机的普及,移动应用的需求也越来越大。

作为目前最主流的移动操作系统之一,Android平台的应用开发变得越来越重要。

本实验报告将介绍我在Android应用开发实验中所学到的知识和经验,以及我开发的一个简单应用的过程和成果。

一、实验背景移动应用开发已经成为互联网行业的热门方向之一。

Android平台作为全球最大的移动操作系统之一,具有广泛的用户基础和开放的生态系统,因此学习和掌握Android应用开发技术对于未来的职业发展非常有帮助。

二、实验目的通过本次实验,我希望能够掌握Android应用开发的基本流程和技术,包括应用的界面设计、交互逻辑的实现以及与后台服务的通信等。

同时,我也希望能够培养自己的创新思维和解决问题的能力。

三、实验过程1. 环境搭建在开始实验之前,我首先需要搭建好Android开发环境。

我下载并安装了Android Studio,这是官方推荐的Android开发工具,提供了丰富的开发工具和模拟器来辅助开发。

2. 学习基础知识在进入实际开发之前,我花了一些时间学习Android应用开发的基础知识,包括Java编程语言、XML布局文件的编写以及Android应用的生命周期等。

这些基础知识为我后续的实际开发打下了坚实的基础。

3. 设计应用界面在设计应用界面时,我首先考虑了用户的使用习惯和界面的美观度。

我使用Android Studio提供的可视化界面编辑器,通过拖拽和调整组件的位置和属性,设计出了一个简洁而实用的界面。

4. 实现交互逻辑应用的交互逻辑是实现应用功能的核心部分。

我使用Java语言编写了一些代码,实现了用户与应用之间的交互逻辑。

例如,当用户点击一个按钮时,应用会执行相应的操作,并显示结果给用户。

5. 与后台服务通信现在的应用很少能够独立完成所有功能,往往需要与后台服务进行通信。

我使用了Android提供的网络通信库,编写了一些代码,实现了与后台服务的数据交互。

南昌航空大学android第二次试验报告

南昌航空大学android第二次试验报告

实验2:Android组件和组件通信1.1实验目的了解使用Intent进行组件通信的原理,掌握使用Intent启动Activity的方法;掌握获取Activity返回值的方法;了解Intent过滤器的原理与匹配机制;1.2实验工具Eclipse(MyEclipse)+ADT22+Android2.2SDK(Android4.0.3);1.3实验题目1.编程实现⑴功能描述:主界面上有一个“登录”按钮,点击“登录”按钮后打开一个新的Activity;新的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主界面中。

⑵编程要点:①主界面的Activity命名为MainActivity;启动新的Activity命名为UserLoginActivity;/*父传子*/②分别使用显示启动和隐式启动的方式,启动新的Activity;③用户名中不能出现“@”符号,同时长度不超过12个字符;只能为数字;④返回的用户名和密码加入到bundle对象中,要以Toast的方式显示出来;⑤MainActivity和UserLoginActivity中各个生命周期的回调函数中要以Log.i方式显示日志信息。

//看课件2.编程实现⑴功能描述:编程建立一个碎片应用。

应用程序中有一个MainActivity,它包含两个Fragment,分别为LeftFragment和RightFragment。

应用要求显示一个主从式的界面,其中,LeftFragment中包含2个Button,RightFragment包含一个TextView,点击左边按钮,右边显示相应详细内容。

⑵编程要点:1.4实验步骤实验1编程要点1M ai nA ct i vi t y.j ava U serLo g i nA ct i vi t y.j ava编程要点2显示启动button1.setOnClickListener(new View.OnClickListener(){public void onClick(View v){Intent intent=newIntent(MainActivity.this,UserLoginActivity.class);Toast.makeText(getApplicationContext(),"显示启动",Toast.LENGTH_SHORT).show();startActivityForResult(intent,request_Code);}});隐式启动button2.setOnClickListener(new View.OnClickListener(){public void onClick(View v){Intent intent=new Intent("net.learn2develop.SecondActivity");Toast.makeText(getApplicationContext(),"隐式启动",Toast.LENGTH_SHORT).show();startActivityForResult(intent,request_Code);}});编程要点3在EditText中添加两个属性android:numeric="integer"android:maxLength="12"编程要点4用户名和密码加入到bundle对象中public void onClick(View view){Intent i=newIntent("android.intent.action.MAIN");EditText txt_username=(EditText)findViewById(R.id.txt_username);EditText txt_usersecret=(EditText)findViewById(R.id.txt_usersecret);Bundle extras=new Bundle();extras.putString("str2",txt_username.getText().toString());extras.putString("age2",txt_usersecret.getText().toString());i.putExtras(extras);setResult(RESULT_OK,i);finish();}Toast的方式显示出来public void onActivityResult(int requestCode,int resultCode,Intent data){switch(resultCode){case RESULT_OK:{Bundle b=data.getExtras();Toast.makeText(this,b.getString("str2"),Toast.LENGTH_SHORT).show();Toast.makeText(this,b.getString("age2"),Toast.LENGTH_SHORT).show();}break;default:break;}}编程要点5MainActivity和UserLoginActivity中各个生命周期的回调函数中要以Log.i方式显示日志信息。

Android 实验二

Android 实验二

Android 实验二一.实验目的使用线性布局、相对布局模拟微信界面(消息界面、设置界面)二.使用的设备和仪器计算机+Windows 10+Android studio三.实验内容及要求使用线性布局、相对布局模拟微信界面(消息界面、设置界面)四.实验步骤消息界面:1.程序代码:<RelativeLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><ImageViewandroid:layout_width="match_parent"android:layout_height="50dp"android:src="@drawable/top"></ImageView></RelativeLayout><ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><RelativeLayoutandroid:layout_marginTop="50dp"android:id="@+id/top1"android:layout_width="match_parent"android:layout_height="50dp"><ImageViewandroid:layout_marginLeft="5dp"android:layout_centerVertical="true"android:layout_width="40dp"android:layout_height="40dp"android:src="@drawable/touxiang"></ImageView><TextViewandroid:layout_marginLeft="50dp"android:layout_marginTop="8dp"android:text="张三"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView> <TextViewandroid:layout_marginLeft="50dp"android:layout_marginTop="30dp"android:textSize="10dp"android:text="你好"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView> </RelativeLayout><RelativeLayoutandroid:id="@+id/top2"android:layout_below="@id/top1"android:layout_width="match_parent"android:layout_height="50dp"><ImageViewandroid:layout_marginLeft="5dp"android:layout_centerVertical="true"android:layout_width="40dp"android:layout_height="40dp"android:src="@drawable/touxiang"></ImageView><TextViewandroid:layout_marginLeft="50dp"android:layout_marginTop="8dp"android:text="张三"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView> <TextViewandroid:layout_marginLeft="50dp"android:layout_marginTop="30dp"android:textSize="10dp"android:text="你好"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView></RelativeLayout></RelativeLayout></ScrollView><RelativeLayoutandroid:layout_alignParentBottom="true"android:layout_width="match_parent"android:layout_height="wrap_content"><ImageViewandroid:layout_width="match_parent"android:layout_height="60dp"android:src="@drawable/bottom"></ImageView></RelativeLayout></RelativeLayout>2.运行结果:设置界面:1.程序代码:<ScrollView xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><RelativeLayoutandroid:background="#EDEAEA"android:id="@+id/top"android:layout_width="match_parent"android:layout_height="wrap_content"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/yi"></ImageView><ImageViewandroid:layout_centerHorizontal="true"android:src="@drawable/er"android:layout_width="wrap_content"android:layout_height="wrap_content"></ImageView> <ImageViewandroid:layout_alignParentRight="true"android:src="@drawable/san"android:layout_width="wrap_content"android:layout_height="wrap_content"></ImageView> </RelativeLayout><RelativeLayoutandroid:background="#4CAF50"android:layout_below="@id/top"android:id="@+id/top2"android:layout_width="match_parent"android:layout_height="100dp"><ImageViewandroid:layout_marginTop="17dp"android:layout_marginLeft="100dp"android:id="@+id/si"android:src="@drawable/si"android:layout_width="wrap_content"android:layout_height="wrap_content"></ImageView> <TextViewandroid:layout_marginLeft="107dp"android:layout_below="@id/si"android:text="收付款"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView><ImageViewandroid:id="@+id/wu"android:layout_marginTop="17dp"android:layout_toRightOf="@id/si"android:layout_marginLeft="100dp"android:src="@drawable/wu"android:layout_width="wrap_content"android:layout_height="wrap_content"></ImageView> <TextViewandroid:layout_marginLeft="273dp"android:layout_below="@id/wu"android:text="钱包"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView></RelativeLayout><RelativeLayoutandroid:id="@+id/top3"android:layout_below="@id/top2"android:layout_width="match_parent"android:layout_height="120dp"><TextViewandroid:text="金融理财"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView> <ImageViewandroid:layout_marginLeft="15dp"android:layout_marginTop="25dp"android:id="@+id/liu"android:src="@drawable/liu"android:layout_width="50dp"android:layout_height="50dp"></ImageView><TextViewandroid:layout_marginLeft="5dp"android:layout_below="@id/liu"android:text="信用卡还款"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView> <ImageViewandroid:layout_toRightOf="@id/liu"android:id="@+id/qi"android:layout_width="50dp"android:layout_height="50dp"android:layout_marginLeft="50dp"android:layout_marginTop="25dp"android:src="@drawable/qi"></ImageView><TextViewandroid:layout_marginLeft="120dp"android:layout_below="@id/qi"android:text="理财通"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView> </RelativeLayout><RelativeLayoutandroid:id="@+id/top4"android:layout_below="@id/top3"android:layout_width="match_parent"android:layout_height="220dp"><TextViewandroid:text="生活服务"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView> <ImageViewandroid:layout_marginLeft="15dp"android:layout_marginTop="25dp"android:id="@+id/ba"android:src="@drawable/ba"android:layout_width="50dp"android:layout_height="50dp"></ImageView><TextViewandroid:layout_marginLeft="10dp"android:layout_below="@id/ba"android:text="手机充值"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView> <ImageViewandroid:layout_toRightOf="@id/ba"android:id="@+id/jiu"android:layout_width="50dp"android:layout_height="50dp"android:layout_marginLeft="50dp"android:layout_marginTop="25dp"android:src="@drawable/jiu"></ImageView><TextViewandroid:layout_marginLeft="110dp"android:layout_below="@id/jiu"android:text="生活缴费"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView></RelativeLayout></RelativeLayout></ScrollView>2.运行结果:五.实验总结通过这次实验,了解了线性布局和相对布局的区别,并学会了使用线性布局和相对布局做一些简单界面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二android基本控件实验一、实验目的1、熟悉Android常用控件的基本操作,掌握它们的基本使用方法。

2、了解控件之间的构成关系.3、熟悉适配器的使用原理。

4、了解控件的继承关系;5、掌握适配器的使用;6、掌握信息提示的实现机制;7、实现基本界面。

二、实验仪器Eclipse三、实验原理1.控件类之间的关系android.view.View类(视图类)呈现了最基本的UI构造块。

View类是Android中的一个超类,几乎包含了所有的屏幕类型,主要负责绘制和事件处理。

Android中控件类的扩展结构如图所示。

View有众多的扩展者,它们大部分是在android.widget包中,这些继承者实际上就是Android 系统中的“控件”。

View实际上就是各个控件的基类,创建交互式的图形用户界面的基础。

View的直接继承者包括文本视图(TextView)、图像视图(ImageView)、进度条(ProgressBar)等。

它们各自又有众多的继承者。

每个控件除了继承父类功能之外,一般还具有自己的公有方法、保护方法、XML属性等。

在Android中使用各种控件的一般情况是在布局文件中可以实现UI的外观,然后在Java文件中实现对各种控件的控制动作。

控件类的名称也是它们在布局文件XML中使用的标签名称。

2.控件通用行为和属性View是Android中所有控件类的基类,因此View中一些内容是所有控件类都具有的通用行为和属性。

提示:由于Java语言不支持多重继承,因此Android控件不可能以基本功能的“排列组合”的方式实现。

在这种情况下,为了实现功能的复用,基类的功能往往做得较强,作为控件的祖先类,View所实现的功能也是最多的。

控件类经常在布局文件中使用,因此其可以使用XML属性(XMLAttributes),和Java代码经常具有对应关系。

View作为各种控件的基类,其XML属性所有控件通用,XML属性及其对应的方法如表1所示。

表1 View中的XML属性及其对应的方法其中,android:id表示控件的标识,通常需要在布局文件中指定这个属性。

View中与控件标识相关的几个方法如下所示:public int getId() // 获得控件的id(int类型)public void setId(int id) // 设置控件的id(int类型)public Object getTag() // 获得控件的tag(Object类型)public void setTag(Object tag) // 设置控件的tag(Object类型)对于一个控件,也就是View的继承者,整数类型id是其主要的标识。

其中,getId()可以获得控件的id,而setId()可以将一个整数设置为控件的id,但是这个方法并不常用。

View的id通常可以在布局文件中获得。

Object类型的标识tag是控件的一个扩展标识,由于使用了Object类型,它可以接受大部分的Java类型。

在一个View中根据id或者tag查找其孩子的方法如下所示:public final View findViewById(int id)public final View findViewWithTag(Object tag)findViewById()和findViewWithTag()的目的是返回这个View树中id和tag为某个数值的View 的句柄。

View树的含义是View及其所有的孩子。

值得注意的是,id不是控件的唯一标识,例如布局文件中id是可以重复的,在这种重复的情况下,findViewById()的结果不能确保找到唯一的控件。

提示:作为控件的标识的id和tag可以配合使用:当id有重复的时候,可以通过给控件设置不同的tag,对其进行区分。

可见性的问题,android:visibility在布局文件中有三个数值:visible(可见,默认),invisible (不可见),gone(去除)。

在Java代码中,setVisibility()能使用的枚举值与其对应,它们是:View.VISIBLE(0x0),View.INVISIBLE(0x4),View.GONE(0x8)。

3.数据适配器工作原理Adapter是视图与数据之间的桥梁,Adapter用来帮助填充视图中的数据,提供视图对数据的访问方式,通过它将数据填充到控件中,为在数据集里的每个数据项生成一个View。

常用Adapter包括ArrayAdapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter。

各个AdapterView之间的继承关系如图:基类BaseAdapter有一个重要的方法:public abstract View getView (int position,View convertView,ViewGroup parent)参数Int position :该视图在适配器数据集中的位置View convertView :旧视图,也就已经滚出可视区的视图ViewGroup parent :当前视图最终会被附加到的父级视图这个方法被setAdapter(adapter)间接地调用。

getView 方法的作用是得到一个View,这个view显示数据项里指定位置的数据,可以手动创建一个view或者从一个XML layout 中解析获取。

当这个view被inflated,它的父view(如GridView,ListView等)将要使用默认的layout参数,除非你用inflate(int,android.view.ViewGroup,boolean)方法来指定一个根view 并防止附着在根上。

在Adapter中,所有数据项的视图是可以重用的,只是对可见视图将产生视图,对已经滚动出可见界面的视图,将重复使用,以减少资源损耗。

三、实验过程1、新建一个Android工程ControlTest;2、编写布局文件实现布局效果。

相关代码:Activity_demo.xml中的代码:<?xml version="1.0" encoding="utf-8"?><AbsoluteLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/lla"android:gravity="top">android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="21dp"android:layout_y="36dp"android:text="姓名" /><EditTextandroid:id="@+id/EditText01"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="46dp"android:layout_y="22dp"android:ems="10" /><TextViewandroid:id="@+id/TextView02"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="21dp"android:layout_y="76dp"android:text="学号" /><EditTextandroid:id="@+id/EditText02"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="46dp"android:layout_y="62dp"android:ems="10" /><TextViewandroid:id="@+id/TextView03"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="21dp"android:layout_y="116dp"android:text="年级" /><EditTextandroid:id="@+id/EditText03"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="46dp"android:layout_y="102dp"android:ems="10" /><TextViewandroid:id="@+id/TextView04"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="21dp"android:layout_y="156dp"android:text="班级" /><EditTextandroid:id="@+id/EditText04"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="46dp"android:layout_y="142dp"android:ems="10"/>android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="21dp"android:layout_y="206dp"android:text="课程" /><TextViewandroid:id="@+id/tvName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="27dp"android:layout_y="300dp"android:text="姓名" /><TextViewandroid:id="@+id/tvNum"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="77dp"android:layout_y="300dp"android:text="学号" /><TextViewandroid:id="@+id/tvGrade"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="127dp"android:layout_y="300dp"android:text="年级" /><TextViewandroid:id="@+id/tvClass"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="177dp"android:layout_y="300dp"android:text="班级" /><TextViewandroid:id="@+id/tvCouse"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="227dp"android:layout_y="300dp"android:text="课程" /><EditTextandroid:id="@+id/EditText05"android:layout_width="310dp"android:layout_height="488dp"android:layout_x="4dp"android:layout_y="344dp"android:ems="10"android:gravity="top|center_vertical" /> <Spinnerandroid:id="@+id/spinner"android:layout_width="146dp"android:layout_height="47dp"android:layout_x="57dp"android:layout_y="188dp" /><Buttonandroid:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_x="0dp"android:layout_y="244dp"android:text="添加" /></AbsoluteLayout>Item.xml中的代码:<?xml version="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:weightSum="1.25"><TextViewandroid:id="@+id/item_name"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="0.25"android:gravity="bottom"android:text="TextView"/><TextViewandroid:id="@+id/item_num"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="0.25"android:gravity="bottom"android:text="TextView"/><TextViewandroid:id="@+id/item_class"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="0.25"android:gravity="bottom"android:text="TextView"/><TextViewandroid:id="@+id/item_course"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="0.25"android:gravity="bottom"android:text="TextView"/><Buttonandroid:id="@+id/item_del"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="0.25"android:gravity="bottom"android:text="删除"/></LinearLayout>3、在*.java文件中实现控件功能的实现。

相关文档
最新文档