实验二 android基本控件实验
实验2_Android用户界面程序设计
6学时
实验目的:
1. 2. 3. 4. 5. 6.
掌握Android常用界面控件的使用方法。 掌握控件响应函数的编写方法。 掌握各种界面布局的特点和使用方法。 掌握使用Intent进行组件通信的原理。 掌握使用Intent启动Activity的方法。 掌握Activity间数据传送的方法。
实验内容:
设计个人信息管理系统界面,要求如下。
③
设计程序主界面MainActivity,该界面上有一个 “登录”按钮、一个“注册”按钮、一个“查看” 按钮和一个用于显示登录状态的TextView,点击 “登录”按钮后打开一个普通对话框,该对话框上 面有输入用户名、密码和用户类型(管理员、普通 用户,Spinner) 的控件,在用户关闭这个对话框后, 将用户输入的信息递到MainActivity,如果用户名、 密码及类型正确,则MainActivity上的TextView显 示“某某用户已登录”,否则显示“用户名或密码 错误” 。
实验内容:
设计个人信息管理系统界面,要求如下。
⑤
点击主界面MainActivity上的 “查看”按钮,如果用户未登陆,则提 示用户登陆,否则根据登陆用户的类型分别显示以下内容:
I.
II.
如果是普通用户,则跳转到PersonInfoActivity页面。如果该用户已填写 过个人信息,则将填写的信息显示在相应控件上,用户可以对以上信息 修改,点击“确定”按钮后更新掉原信息;否则用户使用该页添加自己 的信息。 如果是管理员,则跳转到PensonsActivity页面,该页面含有一个自定义 列表控件显示所有用户的信息,其每个列表项包含姓名、性别、出生日 期、教育程度、电话、邮箱(见下图布局)。当点击某个列表项时,跳 转到该用户的PersonInfoActivity页面。但管理员不能修改其它用户的信 息,因此,此时该页面上的输入控件及按钮应为不可用状态。
安卓控件的操作实验报告
一、实验目的通过本次实验,掌握安卓常用控件的基本属性、方法和事件处理,熟悉这些控件在实际应用中的使用方法,提高对安卓界面设计的理解和应用能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Android Studio3.5.33. 手机型号:华为Mate 20三、实验内容本次实验主要涉及以下安卓常用控件:1. TextView2. EditText3. Button4. ImageView5. RadioButton6. CheckBox7. Spinner8. ListView四、实验步骤1. 创建一个新的Android项目,命名为“ControlOperation”。
2. 在布局文件activity_main.xml中添加以下控件:```xml<TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Hello World!"android:layout_marginTop="20dp" /><EditTextandroid:id="@+id/editText1"android:layout_width="match_parent"android:layout_height="wrap_content" android:hint="Enter your name" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Click Me!" /><ImageViewandroid:id="@+id/imageView1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <RadioButtonandroid:id="@+id/radioButton1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Male" /><CheckBoxandroid:id="@+id/checkbox1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Subscribe to newsletter" /><Spinnerandroid:id="@+id/spinner1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:entries="@array/countries" /><ListViewandroid:id="@+id/listView1"android:layout_width="match_parent"android:layout_height="wrap_content" />```3. 在strings.xml文件中添加以下字符串资源:```xml<string name="app_name">Control Operation</string> <string name="enter_name">Enter your name</string> <string name="click_me">Click Me!</string><string-array name="countries"><item>China</item><item>USA</item><item>Japan</item></string-array>```4. 在MainActivity.java文件中添加以下代码:```javaimport android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.ScrollView;import android.widget.TextView;import android.widget.CheckBox;import android.widget.Spinner;import android.widget.ListView;import android.widget.ArrayAdapter;import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private TextView textView1;private EditText editText1;private Button button1;private ImageView imageView1;private RadioButton radioButton1;private CheckBox checkBox1;private Spinner spinner1;private ListView listView1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);textView1 = findViewById(R.id.textView1);editText1 = findViewById(R.id.editText1);button1 = findViewById(R.id.button1);imageView1 = findViewById(R.id.imageView1);radioButton1 = findViewById(R.id.radioButton1);checkBox1 = findViewById(R.id.checkbox1);spinner1 = findViewById(R.id.spinner1);listView1 = findViewById(R.id.listView1);ArrayAdapter<CharSequence> adapter =ArrayAdapter.createFromResource(this,R.array.countries, yout.simple_spinner_item);adapter.setDropDownViewResource(yout.simple_spinner_dropdown _item);spinner1.setAdapter(adapter);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name = editText1.getText().toString();Toast.makeText(MainActivity.this, "Hello " + name, Toast.LENGTH_SHORT).show();}});radioButton1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, "You selected Male", Toast.LENGTH_SHORT).show();}});checkBox1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (checkBox1.isChecked()) {Toast.makeText(MainActivity.this, "You subscribed to the newsletter", Toast.LENGTH_SHORT).show();} else {Toast.makeText(MainActivity.this, "You unsubscribed from the newsletter", Toast.LENGTH_SHORT).show();}}});}}```5. 运行程序,观察效果。
安卓实验报告
安卓实验报告Android是目前全球最为流行的操作系统之一,其强大的应用程序生态系统和广泛的设备兼容性使得安卓成为开发者和用户的首选。
本文将介绍我在安卓实验中进行的一系列任务和实验结果。
实验一:安装开发环境在进行安卓开发之前,我们首先需要安装必要的开发环境。
我使用的是Android Studio,这是谷歌官方提供的开发工具,具有强大的功能和友好的用户界面。
通过安装Android Studio,我成功搭建了安卓开发环境,并进行了一些基本的配置。
实验二:创建第一个安卓应用程序根据老师的指导,我按照步骤成功创建了我的第一个安卓应用程序。
我选择了一个简单的计算器应用程序作为开始,它可以实现基本的加法和减法功能。
通过这个实验,我学会了使用Android Studio的界面设计工具和编写基本的Java代码。
实验三:UI设计和布局在这个实验中,我学习了安卓应用程序的用户界面设计和布局。
我使用了安卓提供的各种布局方式,如线性布局、相对布局和帧布局等,来设计和展示应用程序的不同界面。
通过这个实验,我对安卓界面设计的原则和技巧有了更深入的理解。
实验四:应用程序调试与测试在开发过程中,调试和测试是非常重要的环节。
通过Android Studio提供的调试工具,我能够针对应用程序中的问题进行定位和修复。
我还学会了使用模拟器和真机进行应用程序的测试,以确保应用程序的功能和稳定性。
实验五:数据库操作在这个实验中,我学习了如何在安卓应用程序中使用数据库。
我使用了SQLite数据库来存储和管理应用程序的数据。
通过编写SQL语句,我能够进行数据的插入、查询、更新和删除等操作。
这为我今后的应用程序开发提供了非常有用的技能。
总结:。
《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是免安装版。
实验2 android的界面设计(控件与布局)
实验2 android的界面设计(控件与布局)学时:4学时一、实验目的:1、了解Android编程原理2、掌握界面控件设计3、了解和熟悉常用控件的使用、界面布局等内容。
二、实验内容:1.基本控件的制作:(1)TextView的制作:a)体会Autolink,依次更换属性:web/phone/all/email/b) 制作跑马灯效果android:ellipsize 设置当文字过长时,该控件该如何显示。
有如下值设置:”start”—-省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee”——以跑马灯的方式显示(动画横向移动)android:marqueeRepeatLimit 在ellipsize 指定marquee 的情况下,设置重复滚动的次数,当设置为marquee_forever 时表示无限次。
android:focusableInTouchMode:是否在触摸模式下获得焦点。
android:focusable 控件是否能够获取焦点(2)EditView制作(a) maxLength:最大输入长度属性(b) singleLine:多行文本框(c) inputType:限制输入文本类型(d) hint:设置提示信息2.布局设计(1) LinearLayout布局:(2)Relative Layout:(3)Table Layout3.建立一个如图所示的图形界面:4.用ListView制作如图界面(图片自定) (将该题以你的学号命名,发给你班的学习委员,以班为单位统一发给我,我的邮箱为:****************):5.用expandablelistview制作如下界面:6.对话框制作:(2)部分程序代码:protected void dialog() {AlertDialog.Builder builder = new Builder(Main.this);builder.setMessage("确认退出吗?");builder.setTitle("提示");builder.setPositiveButton("确认", new OnClickListener() { @Overridepublic void onClick(DialogInterface dialog, int which) { dialog.dismiss();Main.this.finish();}});builder.setNegativeButton("取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}//在onKeyDown(int keyCode, KeyEvent event)方法中调用此方法public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {//点后退键的时候,为了防止点得过快,触发两次后退事件dialog();}return false;}(2)界面如下:部分代码:Dialog dialog = new AlertDialog.Builder(this).setIcon(android.R.drawable.btn_star).setTitle("喜好调查").setMessage("你喜欢李连杰的电影吗?").setPositiveButton("很喜欢",new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub Toast.makeText(Main.this, "我很喜欢他的电影。
Android应用开发I实验指导书
Android应⽤开发I实验指导书《Android应⽤开发I》实验指导书计算机科学与技术系⽬录实验⼀:第⼀个应⽤程序 0实验⼆:基本控件 (1)实验三:⾼级控件 (4)实验四:菜单和对话框 (7)实验五:数据存储 (8)实验六:后台处理与获取⽹络数据 (9)实验⼀:第⼀个应⽤程序【实验概述】搭建环境,并运⾏第⼀个应⽤程序。
实验类别:验证类。
学时:1学时。
组织形式:学⽣独⽴完成。
考核⽅式:随堂检查。
【实验⽬的】熟悉Android开发环境使⽤以及程序运⾏过程。
【实验环境】硬件环境:笔记本软件环境:Eclipse+SDK+JDK编程语⾔:Java【相关知识】⽆。
【实验内容】1. 安装环境:安装JDK,解压Eclipse,配置SDK路径。
2. 新建⼀个项⽬HelloWorld。
3.创建⼀个以学号命名的模拟器,然后运⾏该项⽬。
实验⼆:基本控件【实验概述】完成⼀个登录+注册的界⾯。
实验类别:验证类。
学时:4学时。
组织形式:学⽣独⽴完成。
考核⽅式:检查。
【实验⽬的】1.掌握基本控件的使⽤,例如EditText、TextView、Button、CheckBox等控件使⽤。
2. Intent跳转。
【实验环境】硬件环境:笔记本软件环境:Eclipse+SDK+JDK编程语⾔:Java【相关知识】界⾯布局、EditText、TextView、Button、CheckBox等控件使⽤。
【实验内容】实现类似下图的效果:界⾯布局根据⼤家喜好⾃⾏决定。
(下⾯只是参考)(1)新建项⽬。
(2)在项⽬的布局⽂件中,修改为以下内容。
登录布局(3)新建Activity类,并设置布局⽂件为register.xml。
内容如下:注册布局(4)在登录界⾯的【登录】按钮中增加页⾯跳转代码:(5)运⾏效果:实验三:⾼级控件【实验概述】Spinner/ListView/Fragment实验类别:验证类。
学时:4学时。
组织形式:学⽣独⽴完成。
考核⽅式:检查。
实验二 Android项目的开发及调试
实验二Android项目的开发及调试
一、实验目的
1、本实验主要学习和掌握 Android 基本应用开发。
2、熟练掌握用 Eclipse和 Android SDK 创建基本应用。
3、掌握Android开发的LogCat控制台调试方式。
二、实验内容
实验任务:创建一Android应用程序,包含两个Activity,具体的步骤如下:
1.创建一个Android应用(取名:MyMobileBBS_学号)
2、创建两个Activity:MyMobileBBSActivity、MainBordActivity
3、向项目中添加背景图片back_1.jpg。
4、修改main.xml,采用back_1.jpg作为背景图片
5、添加3个textview控件作为主版块标题,向字串资源文件(strings.xml)中添加主版块名称资源字串
6.修改mainfest.xml配置文件,将MainBordActivity作为启动Activity。
三、实验完成情况及总结
(实验报告要求有布局文件、资源文件和Activity的完整Java 代码,还要有运行时得到结果的手机画面截图,采用LogCat排查异常时须有相关控制台输出截图)
小结。
ex_02 实验二——Android程序UI设计
实验二Android程序UI界面设计【目的】Android程序设计基础。
熟悉各种UI控件并且进行UI设计。
【要求】1、了解Android程序设计基础2、掌握各种UI控件的基本功能和用法3、掌握UI设计的方法4、完成【课堂练习】5、完成【课后作业】并且提交实验报告【原理】1、掌握各种控件的基本功能和用法。
常用的控件包括:TextView:Button:ImageView:ImageButton:ProgressBar:RadioButton:2、了解各种布局Layout的基本功能和用法。
多种Layout:AbsoluteLayoutFrameLayoutGridView LinearLayoutListLayoutRadioGroupTableLayout···【参考过程】1、新建一个名为Ex02的Android Project。
2、双击Layout->main.xml文件,即可切换到UI设计界面(默认布局为LinearLayout),增加所需控件,如:Button。
3、将Form Widgets中的Button拖入屏幕中,如图1所示。
图14、从Graphical Layout切换至main.xml,可以看见代码中已新增了Button的xml代码,如图2所示。
图25、修改控件的属性:方法一:单击Button,在窗口下方的properties一栏中修改对应的属性,如:background,text,size等。
(如果没有properties一栏出现,右击Button,打开“Show In”->“Properties”即可。
)图3方法二:直接在main.xml文件中修改。
如修改Button的文本内容,则输入android:text=”Yes, I do!”,如图4所示。
图4再次切换回Graphical Layout预览页面,则看到Button的文本内容已经被修改,如图5所示。
Android实验二-UI界面开发
Android 实验设计实验二:界面设计:控件与布局08计应 08386038 胡巍巍【目的】Android编程基础,UI设计。
【要求】1、了解Android编程原理2、掌握界面控件设计3、掌握控件的事件处理编程【原理】1.熟悉各种控件的基本功能常用控件包括:TextView,EditText,Button,ImageView:ImageButton,ProgressBar,Radio button:2.了解各种布局Layout的应用多种Layout: AbsoluteLayout FrameLayout GridViewLinearLayout ListLayout RadioGroupTableLayout ………【实验过程】新建一个Project,并对其布局文件进行简单修改。
1.New 一个 Android project:Project Name: Practice,Application name:Project,Build Target勾选Android 2.2,Package name:com.eoeAndroid.Practice ,Create Activity:Practice ,Min SDK Version:8. 然后点击Next→Finish。
2.Finish后,Eclipse Platform左边Package Explorer栏中出现了我们刚才新建的project。
根据实验要求在layout main.xml中修改布局文件(我选的是相对布局relative layout),增加所需控件。
分析实验要求后,对要求添加的控件按照从上到下,从左到右的顺序添加。
布局xml实现如下:<?xml version="1.0"encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:orientation="horizontal" //默认控件水平排列android:layout_width="fill_parent" //相对布局的有效范围android:layout_height="fill_parent"android:background="#ffffff"> //背景颜色<TextView android:id="@+id/text1" //第一个文本控件android:layout_width="wrap_content" //控件宽度和高度有文本决定android:layout_height="wrap_content"android:text="@string/hello"/>//文本内容:hello所定义的字符串<TextView android:id="@+id/text2" //第二个文本控件android:layout_width="wrap_content" //同上android:layout_height="wrap_content"android:layout_below="@id/text1"//这里实现text2布局在text1的下方android:text="Hello,It's Huweiwei's Android Project !"//内容android:textStyle="bold"/>//文本字体样式,这里是粗体<EditText android:id="@+id/ET1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/text2"android:hint="Input what you want to say to TA"android:shadowColor="#ff0000"/>//边框阴影眼测<TextView android:id="@+id/text3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/ET1"android:text="Do you miss Miss TA^0^?"android:textStyle="bold"/><RadioGroup android:layout_width="wrap_content"//这里定义了一对单项android:layout_height="wrap_content" //选择,水平排列android:checkedButton="@+id/RB1"android:orientation="horizontal"android:layout_below="@id/text3"android:id="@+id/menu"><RadioButton android:id="@+id/RB1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Yes!^0^)/"android:textStyle="normal"android:textColor="#000000"/><RadioButton android:id="@+id/RB2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#000000"android:text="No~(T_T)"android:textStyle="normal"/></RadioGroup><TextView android:id="@+id/text4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/menu"android:text="Button,Do you want to marry with ImageView?"android:textStyle="bold"/><ImageView android:id="@+id/IM1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/text4"android:src="@drawable/icon"/>//图像来源<Button android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/IM1"//button1安置在IM1的左侧,并且android:layout_alignTop="@id/IM1"//与IM1并排android:text="Yes T do !"android:textColor="#0000ff"/><TextView android:id="@+id/text6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/text4"android:layout_toRightOf="@id/button1"android:visibility="invisible"android:layout_marginTop="10dip" //在文本上方预留10dip的空间android:text="Congratulations!"android:textStyle="bold"/><TextView android:id="@+id/text5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button1"android:visibility="invisible" //设置text5默认情况下不可见android:text="Years later their son was born~,It'sImageButton~"android:textStyle="bold"/><ImageButton android:layout_below="@+id/text5"android:id="@+id/ImageButton01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:visibility="invisible"android:src="@drawable/icon"></ImageButton></RelativeLayout>以上完成了对各个控件的布局,由于是第一次使用xml文件进行布局工作,对控件的各种属性都不了解,因此我并没有采用拖拉的方法编写xml文件,而是一句句的编写,这虽然会花费相当长的时间,但我觉得这是值得的,因为在这个过程中,我知道了控件的每个属性的不同值决定控件怎样的特性,还有不同的控件之间的关系如何用他们的属性表示,这对以后的工作会有很大帮助的。
Android实验报告模板_实验二
package lin.example.helloui;Android中有许多常用控件:文本框:TextView、EditText按钮:Button、RadioButton、CheckBox、ImageButton二,界面布局package lin.example.hellouib;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;import android.widget.Button;public class MainActivity extends Activity { @Override(2)ativity_main.xml:<LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:id="@+id/container"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"tools:context="lin.example.hellouib.MainActivity"tools:ignore="MergeRootFrame"><LinearLayout5、结果分析与实验体会本次试验我们学习Android的视图层与UI设计,再是严重我们熟悉了发中的UI设计,包括了解和熟悉常用控件的使用、界面布局和事件时间处理等内容,在熟悉和掌握了界面控件设计后,使我们更加了解了Android界面布局,控件的时限和属性设置,并且学会了创建和使用定制的控件。
android控件实验
实验二android基本控件实验.【目的】熟悉Android常用控件的基本操作,掌握它们的基本使用方法。
了解控件之间的构成关系,熟悉适配器的使用原理。
【要求】1、了解控件的继承关系;2、掌握适配器的使用;3、掌握信息提示的实现机制;4、实现基本界面。
【原理】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表示控件的标识,通常需要在布局文件中指定这个属性。
实验二 android基本控件实验
实验二android基本控件实验报告【目的】熟悉Android常用控件的基本操作,掌握它们的基本使用方法。
了解控件之间的构成关系,熟悉适配器的使用原理。
【要求】1、了解控件的继承关系;2、掌握适配器的使用;3、掌握信息提示的实现机制;4、实现基本界面。
【过程】1.新建一个Android工程ControlTest;2.编写布局文件,实现布局效果,如图:源代码:3.MainActivity代码:import android.app.Activity;import android.content.ClipData;import android.content.Context;import android.os.Bundle;import android.view.Gravity;import android.view.Menu;import android.view.View;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.Spinner;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MainActivity extends Activity {private Button mButtonAdd;private TextView mTextClass, mTextGrade, mTextId, mTextName;private ListView mListView;private Spinner mSpinnerCourse;private String mCourseList, mAdapter;private ArrayList<Item> mDataList;private ItemAdapter mListAdapter;private Toast toast;private ItemAdapter.ViewHolder mViewHolder;Context mContext;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);this.initView();this.initFunction();}private void initFunction(){}public boolean onCreateOptionMenu(Menu menu){getMenuInflater().inflate(R.menu.menu_main,menu);return true;}public void initView() {mButtonAdd = (Button) findViewById(R.id.but_sure);mTextClass = (TextView) findViewById(R.id.editxt_class);mTextGrade = (TextView) findViewById(R.id.editxt_grade);mTextId = (TextView) findViewById(R.id.editxt_id);mTextName = (TextView) findViewById(R.id.editxt_name);mListView = (ListView) findViewById(R.id.course_listview);mSpinnerCourse = (Spinner) findViewById(R.id.course_spinner);List<String> mCourseList =Arrays.asList(this.getResources().getStringArray(R.array.course_list));ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this, yout.simple_list_item_1, mCourseList);mSpinnerCourse.setAdapter(mAdapter);mDataList = new ArrayList<Item>();mListAdapter = new ItemAdapter(this, mDataList);mListView.setAdapter(mListAdapter);mButtonAdd.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name = mTextName.getText().toString();String id = mTextId.getText().toString();String classes = mSpinnerCourse.getSelectedItem().toString(); String grade = mTextGrade.getText().toString();//将所输入的信息添加到mDataList中mDataList.add(new Item(id, name, grade, classes));//刷新listviewmListAdapter.notifyDataSetChanged();//创建toast提示添加成功toast = Toast.makeText(getApplicationContext(),"添加成功!", Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();}});}public class deleteListener implements View.OnClickListener{int position;public deleteListener(int position1){position=position1;}public void onClick(View v){delItem(position);}};public void delItem(int position){mDataList.remove(position);mListAdapter.notifyDataSetChanged();mListView.postInvalidate();}}4.itemAdapt代码:import android.content.ClipData;import android.content.Context;import android.graphics.Color;import android.view.Gravity;import youtInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;/*** Created by John on 2016/4/25.*/class ItemAdapter extends BaseAdapter{ArrayList<Item> mArrayitem;LayoutInflater mInflater;Context mContext;View.OnClickListener deletelistener;private ItemAdapter.ViewHolder mViewHolder;private Toast toast;public ItemAdapter(Context mContext,ArrayList<Item> item){ mArrayitem=item;mContext=mContext;mInflater=(LayoutInflater)mContext.getSystemService(YOUT_INFLATER_SERVICE);}class ViewHolder{public TextView mTextClass;public TextView mTextName;public TextView mTextId;public TextView mTextCourse;public Button mDelButton;}@Overridepublic int getCount() {return mArrayitem.size() + 1;}@Overridepublic Object getItem(int position) {return position + 1;}@Overridepublic long getItemId(int position) {return position + 1;}@Overridepublic View getView(int position, View convertview, ViewGroup group) { ViewHolder mViewHolder;final int id = position;if (convertview == null) {convertview = mInflater.inflate(yout.content_main, null); mViewHolder = new ViewHolder();mViewHolder.mDelButton = (Button) convertview.findViewById(R.id.item_del);mViewHolder.mTextId = (TextView) convertview.findViewById(R.id.item_num);mViewHolder.mTextCourse = (TextView) convertview.findViewById(R.id.item_course);mViewHolder.mTextName = (TextView) convertview.findViewById(R.id.item_name);mViewHolder.mTextClass = (TextView) convertview.findViewById(R.id.item_class);convertview.setTag(mViewHolder);} else {mViewHolder = (ViewHolder) convertview.getTag();}if (id == 0) {setFirst(mViewHolder);} else {Item item = mArrayitem.get(id - 1);mViewHolder.mTextCourse.setText(item.course);mViewHolder.mTextId.setText(item.id);mViewHolder.mTextClass.setText(item.grade);mViewHolder.mTextName.setText();mViewHolder.mDelButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mArrayitem.remove(id - 1);ItemAdapter.this.notifyDataSetChanged();}});mViewHolder.mDelButton.setTextSize(mViewHolder.mTextId.getTextSize() / 2);}return convertview;}public void setData(ArrayList<Item> item) {mArrayitem = item;}public void setFirst(ViewHolder mHolder) {mHolder.mDelButton.setBackgroundColor(Color.TRANSPARENT);mHolder.mDelButton.setTextSize(mHolder.mTextId.getTextSize() / 2); mHolder.mDelButton.setText("功能");mHolder.mTextCourse.setText("课程");mHolder.mTextId.setText("学号");mHolder.mTextClass.setText("班级");mHolder.mTextName.setText("姓名");}}5.item代码:package com.example.g.controltest;/*** Created by g on 2016/4/26.*/public class Item {public String course;public String id;public String grade;public String name;public Item(String id, String name, String grade,String course) { super();this.id = id; = name;this.grade = grade;this.course = course;}}6.activity_main.xml代码:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"android:background="#ffffff" ><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="ClassShow"android:textSize="30sp"android:textColor="#ffffff"android:background="#000000"/><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal">"<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="10dp"android:paddingLeft="10dp"android:text="姓名"android:textColor="#000000"android:textSize="15sp"/><EditTextandroid:textSize="15sp"android:id="@+id/editxt_name"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginLeft="3dp"/></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="10dp"android:paddingLeft="10dp"android:text="学号"android:textColor="#000000"android:textSize="15sp"/><EditTextandroid:textSize="15sp"android:id="@+id/editxt_id"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginLeft="3dp"/></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="10dp"android:paddingLeft="10dp"android:text="年级"android:textColor="#000000"android:textSize="15sp"/><EditTextandroid:textSize="15sp"android:id="@+id/editxt_class"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginLeft="3dp"/></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="10dp"android:paddingLeft="10dp"android:text="班级"android:textColor="#000000"android:textSize="15sp"/><EditTextandroid:textSize="15sp"android:id="@+id/editxt_grade"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginLeft="3dp"/></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal">"<TextViewandroid:id="@+id/spinner_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="课程"android:textSize="15sp"android:paddingTop="10dp"android:paddingLeft="10dp"android:textColor="#000000"/><Spinnerandroid:id="@+id/course_spinner"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout><Buttonandroid:layout_marginTop="15dp"android:id="@+id/but_sure"android:layout_width="300dp"android:layout_height="30dp"android:text="添加"android:layout_gravity="center"android:textSize="15sp"android:textColor="#ffffff"android:onClick="OnAddClick"android:background="#7b7979"/>"<ListViewandroid:paddingTop="20dp"android:id="@+id/course_listview"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ffffff"/></LinearLayout>7.conten_main代码:5、<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#ffffff"><LinearLayoutandroid:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/item_name"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:textColor="#000000"android:textSize="10sp" /><TextViewandroid:id="@+id/item_num"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:textColor="#000000"android:textSize="10sp" /><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/item_class"android:textSize="10sp"android:textColor="#000000"/><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/item_course"android:textSize="10sp"android:textColor="#000000"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/item_del"android:text="删除"android:textSize="20sp"android:textColor="#000000"/>"</LinearLayout>"</LinearLayout>实验结果:实验心得:代码有点多,改错误改了很久,仍需要多多操作。
安卓组件实验报告
一、实验目的1. 理解并掌握Android中的主要组件,包括Activity、Service、BroadcastReceiver和ContentProvider。
2. 学会使用Intent在不同组件之间进行数据传递和组件启动。
3. 了解组件的生命周期和相互之间的关系。
二、实验环境1. 开发工具:Android Studio2. 操作系统:Windows 103. 硬件环境:个人电脑三、实验内容1. Activity组件实验步骤:(1)创建一个名为“MainActivity”的Activity。
(2)在MainActivity中添加一个按钮和一个文本视图。
(3)编写按钮的点击事件,使当按钮被点击时,在文本视图中显示“Hello, Android!”。
(4)运行程序,观察结果。
2. Service组件实验步骤:(1)创建一个名为“MyService”的Service。
(2)在MyService中编写一个无限循环,用于模拟后台任务。
(3)在MainActivity中启动MyService,并在Service运行时在文本视图中显示“Service is running!”。
(4)运行程序,观察结果。
3. BroadcastReceiver组件实验步骤:(1)创建一个名为“MyReceiver”的BroadcastReceiver。
(2)在MyReceiver中重写onReceive()方法,用于接收自定义广播。
(3)在MainActivity中发送自定义广播,并注册MyReceiver。
(4)运行程序,观察结果。
4. ContentProvider组件实验步骤:(1)创建一个名为“MyContentProvider”的ContentProvider。
(2)在MyContentProvider中定义一个Uri,用于访问数据。
(3)在MainActivity中查询MyContentProvider中的数据,并显示在文本视图中。
android实训报告
android实训报告2018年秋季学期,我作为计算机科学与技术专业的一名本科生,有幸参加了一次Android实训课程。
经过两个月的课程学习和项目实践,我对Android开发技术有了更深入的了解和认识,也收获了不少宝贵的经验和技能。
一、课程内容本次实训的课程内容主要包括Android基础知识,常用控件和布局、网络编程、数据库操作、多媒体开发和应用发布等几个方面。
通过讲解理论知识和实例演示,学生们能够逐步掌握基础的Android开发技能,并在实践中不断提升。
以下是本次实训的具体内容:1. Android基础知识Android系统架构、应用程序开发模型、应用程序组成部分、Android开发工具、开发环境搭建等内容。
2. 常用控件和布局TextView、Button、EditText、ImageView、CheckBox、RadioButton、ToggleButton、Switch等常用控件的使用方法;LinearLayout、RelativeLayout、FrameLayout等布局的使用方法。
3. 网络编程HttpClient和HttpUrlConnection两种常用的HTTP协议库的使用方法;XML和JSON两种数据解析方式的比较和使用方法。
4. 数据库操作SQLite数据库的创建和操作,包括建表、插入、删除、修改、查询等。
5. 多媒体开发音频和视频播放、录音和拍照功能的实现。
6. 应用发布应用程序签名、打包、发布和更新等过程。
二、项目实践在掌握了基础知识和技能之后,我们开始进行项目实践。
项目实践的内容是开发一个简单的通讯录应用程序,包括添加联系人、编辑联系人、删除联系人、查看联系人等功能。
在项目实践过程中,我们遇到了不少问题,但通过不断的思考和实践,最终都得以解决。
1. 添加联系人在实现添加联系人功能时,我们需要使用到EditText、Button和SQLite数据库。
首先,通过EditText获取用户输入的联系人信息,然后通过Button添加到SQLite数据库中,最后显示到ListView中。
实验二 android基本控件实验
实验二 android基本控件实验【目的】熟悉Android常用控件的基本操作,掌握它们的基本使用方法。
了解控件之间的构成关系,熟悉适配器的使用原理。
【要求】1、了解控件的继承关系;2、掌握适配器的使用;3、掌握信息提示的实现机制;4、实现基本界面。
【原理】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表示控件的标识,通常需要在布局文件中指定这个属性。
Android开发基础知识实验报告
三、实验内容及要求
参考教材及课件内容,完成以下实验。
1.新建Android项目,查看新项目中各目录和文件,理解其功能意义。
2.新建AVD并熟悉操作AVD的基本方法。
3.查看并熟悉DDMS的功能和操作方法。
4.新建倒计时项目,完成程序的运行和调试。
5.对Android程序进行签名(命令方式和图形方式)。
课程实验报告
姓名
学号
系别
班级
主讲教师
指导教师
实验日期
专业
课程名称
《移动终端应用开发》
同组实验者
一、实验名称:
Android开发基础知识
二、实验目的:
1.掌握Android开发环境的搭建方法
2.掌握Android模拟器的创建、修改和使用方法
3.理解Android常用工具的功能和使用方法
4.掌握Android项目的创建方法及项目中各文件目录的功能含义
6. ADB工具和AAPT工具中常用命令的使用。
四、实验材料、工具、或软件
硬件设备:主流PC机;软件:JDK、Eclipse、Android SDK
五、实验内容及实验步骤(或记录)
(本项内容不足可另附纸)
6、师评语(或成绩)
教师签字:
年月日
资料:实验2:常用控件(1)
实验2:Intent、Activity、常用控件的初步一、实验目的本次实验的目的是让大家初步掌握控件的使用。
二、练习一1.实验要点EditView、TextView、Button、Manu的使用,界面如下:主要功能:在第一个界面中输入例如2*3点击Calculate在第二个界面中显示结果。
2、具体步骤1.新建工程Test03,新建两个Activity:FirstActivity.java和ResultActivity.java,FirstActivity.java作为启动类;2. 首先在AndroidManifest.xml中注册ResultActivity,(FirstActivity是默认生成的,不需要注册)其中android:label="@string/caculate"是在String.xml中定义的:3.复制first_activity.xml,命名为“result_activity.xml”,将“result_activity.xml”中默认的TextView标签添加id属性,命名为result;4.修改layout目录下的first_activity.xml(注意:该文件是自动生成的,不同的IDE 中命名不一样),修改为线性布局(在可视化界面中右击,“change layout”,选择LinearLayout),在该布局文件中增加控件(可以先在可视化界面中拖拽好,再到xml文件中修改):5.在strings.xml中增加一个值:6.在FirstActivity.java中定义成员变量:在onCreate方法中通过findViewById方法获取四个控件;将operator和caculate赋值:7. 定义一个监听器,并在onClick()方法中获取用户输入的值,将其保存在intent 中供ResultActivity.java调用:8. 在FirstActivity.java中的onCreate方法中按钮绑定第七步定义的监听器(提示使用setOnClickListener方法);9. 在RusltActivity.java中使用result_activity作为布局文件,获取到布局中定义的文本框,通过“Intent intent = getIntent();”获取intent,从intent中获取到FirstActivity传递过来的值并转化为整形,放入文本框中:以上代码均在ResultActivity.java中OnCreate()方法中完成;10. 在FirstActivity.java中增加自定义菜单,需要实现方法:public boolean onCreateOptionsMenu(Menu menu)其中Manu不需要在配置文件中配置manu.add(int groupId, int itemId, int order, int titleRes)groupId: 菜单参数所属的组的名字itemId: 当前菜单的idorder: 当前菜单的排序titleRes: 菜单名称,这里在String.xml中定义的exit和about,不再赘述;11. 单击“退出”按钮退出该应用程序的实现需要再FirstActivity.java中增加如下方法:思考:如果做一个类似与windows自带的计算器如何做?三、练习二1.实验要点CheckBox、RadioButton、toast的应用,界面如下:主要功能介绍:点击单选按钮"男"会弹出提示对话框,点击女和swim会记录在logcat中写入日志。
Android实验指导
Android实验指导实验一:系统安装与HelloWorld【目的】安装智能手机开发相关软件平台。
【要求】1、完成智能手机开发平台安装、以及相关配置2、并实现Hello World3、了解项目的基本文件目录结构【原理】Eclipse安装原理,Android编程方法【过程】1、安装JAVA JDK下载网址:java.sun./javase/downloads/2、安装Eclipse下载网址:/downloads/3、安装Androiddeveloper.android.或androidappdocs.appspot./index.html4、安装ADT(Android Development Tools)developer.android.或androidappdocs.appspot./index.html5、安装手机USB驱动developer.android.或androidappdocs.appspot./index.html如果用模拟器调试,则可暂时不装。
6、建立新项目,实现Hello World。
Open Eclipse.Click the menu File -> New -> Project.Expand the Android folder and select Android Project. Name the project HelloWorld得到的文件结构如下:运行:选运行的设备,可以是模拟器,也可以是真机(如果已经连接好真实手机的话):模拟器真手机模拟器运行:真实手机调试:实验二:界面设计:控件与布局【目的】Android编程基础,UI设计。
【要求】1、了解Android编程原理2、掌握界面控件设计3、掌握控件的事件处理编程【原理】UI设计原理【过程】1、了解各种控件的基本功能各种控件:MenuTextView、EditText、ButtonRadio buttonListProgressBar;2、了解布局Layout的应用多种Layout:AbsoluteLayoutFrameLayoutGridViewLinearLayoutListLayoutRadioGroupTableLayout………3、利用布局安排各种控件,设计良好用户界面<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="schemas.android./apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="+id/label"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Type here:"/><EditTextandroid:id="+id/entry"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="android:drawable/editbox_background"android:layout_below="id/label"/><Buttonandroid:id="+id/ok"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="id/entry"android:layout_alignParentRight="true"android:layout_marginLeft="10dip"android:text="OK"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toLeftOf="id/ok"android:layout_alignTop="id/ok"android:text="Cancel"/></RelativeLayout><?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="schemas.android./apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><AnalogClockandroid:id="+id/aclock"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"/> <DigitalClockandroid:id="+id/dclock"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="id/aclock"android:layout_alignLeft="id/aclock"android:layout_marginLeft="40px"/> <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="当前时间:"android:layout_toLeftOf="id/dclock"android:layout_alignTop="id/aclock"/> </RelativeLayout>实验三:图形绘制与OpenGL【目的】在屏幕绘制各种图形,了解OpenGL【要求】1、了解在屏幕绘图方法2、了解OpenGL【原理】【过程】1、绘制直线、园、曲线等各种图形2、显示字符3、利用OpenGL编程方法mCube.draw(gl, gl.GL_TRIANGLES);//mCube.draw(gl, gl.GL_LINES);}实验四:网络访问与服务【目的】掌握Android网络访问方法【要求】1、了解手机WEB访问编程2、通过网络进行数据访问3、了解数据库使用【原理】利用Android网络访问协议【过程】1、访问WEB,通过HttpResponse类,读入网络数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 android基本控件实验【目的】熟悉Android常用控件的基本操作,掌握它们的基本使用方法。
了解控件之间的构成关系,熟悉适配器的使用原理。
【要求】1、了解控件的继承关系;2、掌握适配器的使用;3、掌握信息提示的实现机制;4、实现基本界面。
【原理】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.编写布局文件,实现布局效果,如图:【源代码】1、主界面布局文件main.xml<?xml version="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"android:background="#ffffff"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal">"<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="10dp"android:paddingLeft="10dp"android:text="姓名:"android:textColor="#000000"android:textSize="15sp"/><EditTextandroid:textSize="15sp"android:background="@drawable/edit_text"android:id="@+id/editxt_name"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginLeft="3dp"/></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="10dp"android:paddingLeft="10dp"android:text="学号:"android:textColor="#000000"android:textSize="15sp"/><EditTextandroid:background="@drawable/edit_text"android:textSize="15sp"android:id="@+id/editxt_id"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginLeft="3dp"/></LinearLayout><LinearLayoutandroid:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="10dp"android:paddingLeft="10dp"android:text="班级:"android:textColor="#000000"android:textSize="15sp"/><EditTextandroid:background="@drawable/edit_text"android:textSize="15sp"android:id="@+id/editxt_class"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginLeft="3dp"/></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="10dp"android:paddingLeft="10dp"android:text="年级:"android:textColor="#000000"android:textSize="15sp"/><EditTextandroid:background="@drawable/edit_text"android:textSize="15sp"android:id="@+id/editxt_grade"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginLeft="3dp"/></LinearLayout><LinearLayoutandroid:layout_height="wrap_content"android:orientation="horizontal">"<TextViewandroid:id="@+id/spinner_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="课程:"android:textSize="15sp"android:paddingTop="10dp"android:paddingLeft="10dp"android:textColor="#000000"/><Spinnerandroid:id="@+id/course_spinner"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/spinner_default_holo_light"/></LinearLayout><Buttonandroid:layout_marginTop="15dp"android:id="@+id/but_sure"android:layout_width="300dp"android:layout_height="30dp"android:text="添加"android:layout_gravity="center"android:textSize="15sp"android:textColor="#ffffff"android:onClick="OnAddClick"android:background="#7b7979"/>"<ListViewandroid:paddingTop="20dp"android:id="@+id/course_listview"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ffffff"/></LinearLayout>2、Listview中的item布局文件:<?xml version="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#ffffff"><LinearLayoutandroid:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/item_name"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:textColor="#000000"android:textSize="10sp"/><TextViewandroid:id="@+id/item_num"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:textColor="#000000"android:textSize="10sp"/><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/item_class"android:textSize="10sp"android:textColor="#000000"/><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/item_course"android:textSize="10sp"android:textColor="#000000"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/item_del"android:textSize="20sp"android:textColor="#000000"/>"</LinearLayout>"</LinearLayout>3、Spinner中的ourse_list.xml<?xml version="1.0"encoding="utf-8"?><resources><string-array name="course_list"><item>语文</item><item>数学</item><item>英语</item><item>物理</item><item>化学</item><item>生物</item></string-array></resources>4、edit_text样式的定义:<?xml version="1.0"encoding="utf-8"?><selector xmlns:android="/apk/res/android"> <item android:state_focused="true"android:drawable="@drawable/textfield_multiline_activated_holo_dark"/ ><itemandroid:drawable="@drawable/textfield_multiline_default_holo_light"/> </selector>5、spinner样式的定义:<?xml version="1.0"encoding="utf-8"?><selector xmlns:android="/apk/res/android"> <item android:state_focused="true"android:drawable="@drawable/spinner_default_holo_light"/> <item android:drawable="@drawable/spinner_disabled_holo_light"/> </selector>6、添加按钮的事件定义:public void OnAddClick(View v)//添加按钮事件{//将所输入的信息转换为字符串String name=mTextName.getText().toString();String id=mTextId.getText().toString();String classes=mSpinnerCourse.getSelectedItem().toString();String grade=mTextGrade.getText().toString();//将所输入的信息添加到mDataList中mDataList.add(new Item(id,name,grade,classes));//刷新listviewmListAdapter.notifyDataSetChanged();//创建toast提示添加成功toast=Toast.makeText(getApplicationContext(),"添加成功!", Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();}7、删除按钮的事件定义:mViewHolder.mDelButton//删除按钮事件.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mArrayitem.remove(id - 1);ItemAdapter.this.notifyDataSetChanged();//创建toast提示删除成功toast=Toast.makeText(mContext,"删除成功!", Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();}});8、Item类的定义:package com.example.classview;public class Item {public String course;public String id;public String grade;public String name;public Item(String id, String name, String grade,String course) { super();this.id = id; = name;this.grade = grade;this.course = course;}}五、实验结果及分析输入相应的信息后,点击添加按钮,界面如下图:单击删除按钮后界面显示为:六、实验心得本次实验目的是熟悉Android常用控件的基本操作,掌握它们的基本使用方法。