课程名称 移动应用软件开发技术 实验题目 Android开发环境搭建
一、实验目的
搭建Android开发环境,学习使用Eclipse开发工具进行Android 应用开发的整个流程,为后续实验做好基本准备工作。
二、实验要求
1、掌握Android SDK的安装、配置、使用。
2、掌握Eclipse集成开发环境的使用。
3、实现第一个Android应用程序。
三、实验环境
Windows系统平台
四、实验原理及实验步骤
实验原理:
实验的运行建立在环境搭建成功的基础上
实验步骤:
1、下载安装JDK(包括jdk和jre两个文件,保证eclipse的成功运行)
2、下载安装Eclipse(Eclipse为Java应用程序及Android开发的IDE(集成开发环境),不需要安装,直接解压就行)
3、下载安装Android SDK(Android SDK提供了开发Android应用程序所需的API库和构建、测试和调试Android应用程序所需的开发工具。国内有墙,可能会安装失败,需要使用Android SDK在线更新镜像服务器来安装。)
4、为Eclipse安装ADT插件(使Eclipse和Android SDK进行关联)
5、配置Android虚拟设备(AVD)(在Eclipse中,运行“Window->AVD Manager”,在出现的AVD Manager对话框中显示了已经创建的模拟器;选择已经创建的模拟器,点击“Start”按钮,可以启动该模拟器。)
6、创建并运行第一个Android应用程序(启动Eclipse,选择File->New->Project…,选择Android 下的Android Application Project,单击Next按钮。
在创建新的Android应用项目对话框中,填写应用程序名,项目名,包名;选择新建项目的SDK版本等信息;然后一路点击next按钮,完成新建项目。
在Eclipse中启动模拟器(见步骤五)。
在项目中选择res–>values–>string.xml,将布局中调用的hello_world所代表的字符串改成Hello Android!
在Package Explore中选择新建的项目工程,选择Run->Run As>Android Appliction。)
五、实验核心代码
MainActivity.java:
package com.example.activity_demo;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;}
return super.onOptionsItemSelected(item);}}
String.xml:

<?xml version="1.0" encoding="utf-8"?> Demo Hello android! Settings 六、实验结果及分析 实验结果: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190924090846542.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NDExNzU0,size_16,color_FFFFFF,t_70)

实验分析:
通过这次实验的运行,出来的结果是hello,world!在安装过程中也出现了一些错误,通过解决后,在打开虚拟机的基础下运行得到结果。

课程名称 移动应用软件开发技术 实验题目 Android 基本控件的使用
一、实验目的
熟悉Android开发中的UI界面设计,主要包括了解和熟悉界面布局类型,以及常用控件的使用。
二、实验要求
1、了解View类及ViewGroup类。
2、掌握FrameLayout、LinearLayout、TableLayout、RelativeLayout、AbsoluteLayout五种界面布局类型。
3、掌握TextView、EditText、Button等常用控件的使用。
三、实验环境
Windows系统平台 eclipse软件
四、实验原理及实验步骤
实验原理:
完成一个注册界面,界面中至少要包含账号(EditText)、密码(EditText)、性别(RadioButton)、爱好(CheckBox)、出生日期(DatePicker)以及提交按钮(Button/ImageButton)等信息。界面要有适当的提示(TextView),布局要合理,背景及字体等设置要美观。
实验步骤:
1、创建一个新的项目名字为zhucejiemian。
2、其次设计注册界面的的草图,订好大体的布局。
3、从草图中得出以下的设计方案。
(1)一个外层的linearlayout。
设置linearlayput背景图,back.JPG
为纵向排列布局
一个textview控件显示应用标题,七个linearlayout嵌套。
(2)应用标题textView控件。
设置宽度full_parent,高度为wrap_content
一个textview控件显示应用标题,七个linearlayout嵌套。
(3)密码信息linearlayout
(4)性别信息linearlayout
(5)兴趣爱好textView控件
(6)兴趣爱好2个linearlayout
(7)出生日期textView
(8)出生信息linearlayout
(9)按钮linearlayout
五、实验核心代码
Login1Activity.java:
package com.example.zswb;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class Login1Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login1);}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.login1, menu);
return true;}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;}
return super.onOptionsItemSelected(item);}}
2. res文件中drawable-hdpi拷入照片,如下所示:

3.Layout文件中activity_login1.xml:

Values文件中string.xml:

<?xml version="1.0" encoding="utf-8"?> Hello world!ZCWB 微博 微博注册 账号: 密码: 确认密码: 手机号: 篮球 羽毛球 排球 网球 性别: 日期: 特长: 男 女 注册 返回 六、实验结果及分析 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190924090825865.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190924090831401.png) 六、实验分析 通过这次实验在注册界面学会了如何布局,如何设置页面,设置了账号,密码,确认密码,手机号,性别,特长,日期等文本框,还有设置了编辑框,日期用的是DatePicker,还有注册和返回按钮用的是Button,通过设置按钮进行跳转到另一个页面,最后实现出整个程序。

课程名称 移动应用软件开发技术 实验题目 Activity、Intent组件的使用
一、实验目的
熟悉Activity和Intent组件的使用。Activity是Android中最常用的组件,实现应用程序的用户界面显示,一个Activity展现一个可视化的用户界面。Intent是各组件的桥梁,实现各组件之间的交互与通信。
二、实验要求
1、了解Activity的生命周期。
2、了解Intent的6个组成部分。
3、使用Inent实现Activity之间的跳转和信息传递。
三、实验环境
Windows系统平台 eclipse软件
四、实验原理
实验原理:
完成一个问答系统:有两个Activity分别为MainActivity和AnswerActivity。MainActivity为应用首页,里面包含一个EditText、一个TextView和一个Button,EditText可以输入问题,TextView为空,单击Button可以跳转到AnswerActivity上。AnswerActivity也包含一个EditText,一个TextView和一个Button,TextView显示从MainActivity传递来的问题,EditText可以输入答案,单击Button可以跳回到MainActivity,并把从AnswerActivity传回的答案显示在TextView里。如此循环往复。
五.实验核心代码
AnswerActivity.java:
package com.fan.problem;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.view.View.OnClickListener;
public class AnswerActivity extends Activity {
Button button;
String str=null;
EditText et;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.answer_main);
button=(Button)findViewById(R.id.BT2);
button.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
et=(EditText)findViewById(R.id.ET2);
Intent intent2=new Intent();
Bundle bundle1=new Bundle();
str=et.getText().toString();
bundle1.putString(“answer”, str);
intent2.putExtras(bundle1);
setResult(RESULT_OK, intent2);
finish();}});
String data=null;
Bundle extras=getIntent().getExtras();
if(extras!=null){
data=extras.getString(“problem”);
tv=(TextView)findViewById(R.id.TV2);
tv.setText(data);}}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;}
return super.onOptionsItemSelected(item);}}
MainActivity.java:
package com.fan.problem;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
Button button;
static final int REQUEST_CODE=1;
String str=null;
EditText et;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.BT1);
button.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent1=new Intent(MainActivity.this,AnswerActivity.class);
et=(EditText)findViewById(R.id.ET1);
Bundle bundle1=new Bundle();
str=et.getText().toString();
bundle1.putString(“problem”, str);
intent1.putExtras(bundle1);
startActivityForResult(intent1, REQUEST_CODE);}});}
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCodeREQUEST_CODE){
if(resultCodeRESULT_OK){
String temp=null;
Bundle extras=data.getExtras();
if(extras!=null){
temp=extras.getString(“answer”); }
tv=(TextView)findViewById(R.id.TV1);
tv.setText(temp);}} }
private void OnActivityResult() {
// TODO Auto-generated method stub
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;}
return super.onOptionsItemSelected(item);}}
activity_main.xml:

<Button android:id="@+id/BT1"answer_main.xml
android:layout_width=“fill_parent”
android:layout_height=“wrap_content”
android:text=“回答问题”
android:gravity=“center_horizontal”>

answer_main.xml:

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>

六.实验结果


七.实验分析
通过这次实验,了解到如何使用Intent以实现进行各个Activity之间的通信,还有文本框,编辑框,按钮之间的定义及设置。

课程名称 移动应用软件开发技术 实验题目 Android 事件处理及高级控件
一、实验目的
掌握Android的事件处理机制;熟悉Android常用的三种适配器,并能与相关控件搭配使用;掌握一些常用复杂控件的使用;能结合控件、适配器及事件处理机制设计出较为复杂的功能。
二、实验要求
1、掌握基于回调机制的和基于监听接口的2种事件处理机制。
2、掌握ArrayAdapter、SimpleAdapter和BaseAdapter3种常用适配器。
3、掌握Spinner、ListView、GridView、Gallery、TabHost、ImageSwitcher等一些常用复杂控件的使用。
三、实验环境
Windows系统平台
四,实验原理及实验步骤
模拟一个APP下载中心界面,该界面由一个TabHost构成,包含2个选项卡,分别是“游戏”和“应用”,每个选项卡内部由一个ListView构成,分别显示热门游戏列表和热门应用列表,ListView中的每一项包含3部分,APP图标、APP名称、以及下载按钮。当点击ListView中某一项时,跳转到对应APP的详细介绍界面,此界面应包含一个返回按钮,点击后返回到列表界面。
五,实验核心代码
ContactsActivity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ContactsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts);

 Button btn = (Button)findViewById(R.id.buttonBack);btn.setOnClickListener(new View.OnClickListener() { @Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intentback = new Intent();intentback.setClass(ContactsActivity.this, MainActivity.class);startActivity(intentback);finish();}});}}

DownActivity.java:
package com.example2.text;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class DownActivity extends Activity {
//private int[] data= new int[100];//模拟填充长度为100的数组
//int hasData=0;//记录ProgressBar的完成进度
protected static final int INCREASE = 6;
//int status=0;
//ProgressBar bar,bar2;
TextView tv,tv1;
//创建一个负责更新进度的Handler
@SuppressLint(“HandlerLeak”)
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.loading);
tv=(TextView) findViewById(R.id.text1);
tv1=(TextView) findViewById(R.id.text22);
final ProgressBar bar =(ProgressBar) findViewById(R.id.bar);
final Handler mHandler =new Handler(){
public void handleMessage(Message msg){
//表明消息由该程序发送
switch(msg.what)
{//bar.setProgress(status);
case INCREASE:
bar.incrementProgressBy(1);
tv.setText(“完成”+bar.getProgress()+"%");
if(bar.getProgress()>=100){
//tv.setText(“完成”+status+"%");
tv1.setText(“任务执行完毕”);
Intent intentback = new Intent();
intentback.setClass(DownActivity.this, MainActivity.class);
startActivity(intentback);
finish();}
break;}
super.handleMessage(msg);}};
new Thread(){
public void run(){
while(true){
//获取耗时操作的完成百分比
//status = dowork();
//mHandler.sendEmptyMessage(0x111);
mHandler.sendEmptyMessage(INCREASE);
if(bar.getProgress()>=100){
break; }
try{ Thread.sleep(40);}
catch(Exception e){
e.printStackTrace(); }} } }.start();
Button btn = (Button)findViewById(R.id.btn1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intentback = new Intent();
intentback.setClass(DownActivity.this, MainActivity.class);
startActivity(intentback);
finish();}});}
Game01Activity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Game01Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.game2);
Button btn = (Button)findViewById(R.id.buttonBack);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intentback = new Intent();
intentback.setClass(Game01Activity.this, MainActivity.class);
startActivity(intentback);
finish();}});}}
Game02Activity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Game02Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.game3);
Button btn = (Button)findViewById(R.id.buttonBack);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intentback = new Intent();
intentback.setClass(Game02Activity.this, MainActivity.class);
startActivity(intentback);
finish();}});}}
Game03Activity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Game03Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.game4);
Button btn = (Button)findViewById(R.id.buttonBack);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intentback = new Intent();
intentback.setClass(Game03Activity.this, MainActivity.class);
startActivity(intentback);
finish();}});}}
MainActivity.java:
package com.example2.text;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TabHost;
public class MainActivity extends TabActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.normal);
TabHost tabHost = getTabHost();
Intent itNormal = new Intent(this, NormalActivity.class);
Intent itContact = new Intent(this, UtilityActivity.class);
tabHost.addTab(tabHost.newTabSpec(“tab1”)
.setIndicator(getResources().getText(R.string.tabtitle1),
getResources().getDrawable(R.drawable.publish))
.setContent(itNormal));
tabHost.addTab(tabHost.newTabSpec(“tab2”)
.setIndicator(getResources().getText(R.string.tabtitle2),
getResources().getDrawable(R.drawable.friend))
.setContent(itContact));
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;}
return super.onOptionsItemSelected(item);}}
NormalActivity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class NormalActivity extends Activity {
LayoutInflater inflater;
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.normal);
inflater = LayoutInflater.from(this);
lv = (ListView)findViewById(R.id.lv);
BaseAdapter ba = new BaseAdapter(){
String[] items = getResources().getStringArray(R.array.lvtexts);
String[] imgIds = getResources().getStringArray(R.array.gameicons);
@Override
public int getCount() {
// TODO Auto-generated method stub
return items.length;}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;}
@Override
public View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stub
convertView = inflater.inflate(R.layout.listitem, null);
ImageView iv=(ImageView) convertView.findViewById(R.id.img);
iv.setImageDrawable(getResources().getDrawable(getResources().getIdentifier(imgIds[position], “drawable”, getPackageName())));
TextView tv1=(TextView)convertView.findViewById(R.id.title);
tv1.setText(items[position]);
Button btn=(Button) convertView.findViewById(R.id.btn);
btn.setId(position);
btn.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent load =new Intent();
load.setClass(NormalActivity.this, DownActivity.class);
startActivity(load);
finish();}});
return convertView;}};
lv.setAdapter(ba);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
switch(position){ //判断点击的是哪一个选项
case 0: //书写日志
Intent intentDia = new Intent();
intentDia.setClass(NormalActivity.this, ContactsActivity.class);
startActivity(intentDia);
break;
case 1: //拍照上传
Intent intentAlb = new Intent();
intentAlb.setClass(NormalActivity.this, Game01Activity.class);
startActivity(intentAlb);
break;
case 2: //拍照上传
Intent game1 = new Intent();
game1.setClass(NormalActivity.this, Game02Activity.class);
startActivity(game1);
break;
case 3: //拍照上传
Intent game2 = new Intent();
game2.setClass(NormalActivity.this, Game03Activity.class);
startActivity(game2);
break;}}});}}
U01Activity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class U01Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.utility1);
Button btn = (Button)findViewById(R.id.buttonBack);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intentback = new Intent();
intentback.setClass(U01Activity.this, MainActivity.class);
startActivity(intentback);
finish();}});}}
U2Activity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class U2Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.utility2);
Button btn = (Button)findViewById(R.id.buttonBack);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intentback = new Intent();
intentback.setClass(U2Activity.this, MainActivity.class);
startActivity(intentback);
finish();}});}}
U3Activity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class U3Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.utility3);
Button btn = (Button)findViewById(R.id.buttonBack);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intentback = new Intent();
intentback.setClass(U3Activity.this, MainActivity.class);
startActivity(intentback);
finish();}});}}
U4Activity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class U4Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.utility4);
Button btn = (Button)findViewById(R.id.buttonBack);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intentback = new Intent();
intentback.setClass(U4Activity.this, MainActivity.class);
startActivity(intentback);
finish();}});}}
UtilityActivity.java:
package com.example2.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class UtilityActivity extends Activity {
LayoutInflater inflater;
ListView lv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.normal1);
inflater = LayoutInflater.from(this);
lv1 = (ListView)findViewById(R.id.lv01);
BaseAdapter ba = new BaseAdapter(){
String[] items1 = getResources().getStringArray(R.array.lvtexts01);
String[] imgIds1 = getResources().getStringArray(R.array.utilityicons);
@Override
public int getCount() {
// TODO Auto-generated method stub
return items1.length;}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;}
@Override
public View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stub
convertView = inflater.inflate(R.layout.listitem, null);
ImageView iv=(ImageView) convertView.findViewById(R.id.img);
iv.setImageDrawable(getResources().getDrawable(getResources().getIdentifier(imgIds1[position], “drawable”, getPackageName())));
TextView tv1=(TextView)convertView.findViewById(R.id.title);
tv1.setText(items1[position]);
Button btn=(Button) convertView.findViewById(R.id.btn);
btn.setId(position);
btn.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent load =new Intent();
load.setClass(UtilityActivity.this, DownActivity.class);
startActivity(load);
finish();}});
return convertView;}};
lv1.setAdapter(ba);
lv1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {

         switch(position){           //判断点击的是哪一个选项case 0:                //书写日志Intent intentDia = new Intent();
intentDia.setClass(UtilityActivity.this, U01Activity.class);startActivity(intentDia);break;case 1:              //拍照上传Intent intentAlb = new Intent();intentAlb.setClass(UtilityActivity.this, U2Activity.class);startActivity(intentAlb);break;case 2:                //拍照上传Intent y1 = new Intent();y1.setClass(UtilityActivity.this, U3Activity.class);startActivity(y1);break;case 3:             //拍照上传Intent y2 = new Intent();y2.setClass(UtilityActivity.this, U4Activity.class);startActivity(y2);break;}}});}}

图片资源:

activity_main.xml:

Contacts.xml:

<?xml version="1.0" encoding="utf-8"?>

game2.xml:

<?xml version="1.0" encoding="utf-8"?>

game3.xml:

<?xml version="1.0" encoding="utf-8"?>

game4.xml:

<?xml version="1.0" encoding="utf-8"?>

Listitem.xml:

<?xml version="1.0" encoding="utf-8"?>

Loading.xml:

<?xml version="1.0" encoding="utf-8"?>

Normal.xml:

normal1.xml:

utility1.xml:

<?xml version="1.0" encoding="utf-8"?>

utility2.xml:

<?xml version="1.0" encoding="utf-8"?>

utility3.xml:

<?xml version="1.0" encoding="utf-8"?>

utility4.xml:

<?xml version="1.0" encoding="utf-8"?>

样式资源:

AndroidManifest.xml:

六,实验结果



七,实验结果及分析
通过这次实验掌握基于回调机制的和基于监听接口的2种事件处理机制。学会如何使用监听器,并学会使用适配器。掌握复杂控件的使用。
实验地点 指导教师

课程名称 移动应用软件开发技术 实验题目 Android 菜单与对话框
一、实验目的
掌握Android中不同类型菜单和对话框控件的使用。
二、实验要求
1、掌握选择菜单(OptionMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu)三种菜单的使用。
2、掌握提示对话框(AlertDialog)、进度对话框(ProgressDialog)、日期选择对话框(DatePickerDialog)和时间选择对话框(TimePickerDialog)四种对话框的使用。
三、实验内容
完成“掌上微博”中的相册管理模块,要求至少使用2个Activity,第一个Activity以列表的方式列出已有的相册标题,并使用选项菜单设置“新增”和“删除”菜单项,点击菜单项时显示相应的提示对话框;当点击相册列表中的某一项时,跳转到第二个Activity,在第二个Activity中联合使用ImageSwitcher和Gallery控件显示指定相册中的照片,并添加一个返回按钮可以返回到第一个Activity。
四、实验环境
Windows系统平台
五、实验代码
MainActivity.java:
package com.example.album_activity;
import android.animation.AnimatorSet.Builder;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
LayoutInflater inflater;
ListView lv;
LinearLayout addlayout;
private static final int item1 = 1;
private static final int item2 = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inflater = LayoutInflater.from(this);
lv = (ListView)findViewById(R.id.lv01);
BaseAdapter ba = new BaseAdapter() {
String[] titles = getResources().getStringArray(R.array.titles);
String[] icons = getResources().getStringArray(R.array.pericons);
@Override
public View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stub
convertView = inflater.inflate(R.layout.listitem, null);
ImageView iv= (ImageView)convertView.findViewById(R.id.img);
iv.setImageDrawable(getResources().getDrawable(getResources().getIdentifier(icons[position], “drawable”, getPackageName())));
TextView tv1= (TextView)convertView.findViewById(R.id.title);
tv1.setText(titles[position]);
return convertView;}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;}
@Override
public int getCount() {
// TODO Auto-generated method stub
return titles.length;}};
lv.setAdapter(ba);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
switch(position){ //判断点击的是哪一个选项
case 0: //书写日志
Intent photo = new Intent();
photo.setClass(MainActivity.this, youxiActivity.class);
startActivity(photo);
break;
case 1: //拍照上传
Intent photo1 = new Intent();
photo1.setClass(MainActivity.this, yingyongActivity.class);
startActivity(photo1);
break;}}});}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
super.onCreateOptionsMenu(menu);//调用父类方法加入系统菜单
menu.add(1, item1, 0, “增加”);//增加一个新增菜单项
menu.add(1, item2, 0, “删除”);//增加一个删除菜单项
return true;}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
android.app.AlertDialog.Builder dialog = new AlertDialog.Builder(this);
switch(item.getItemId()){
case item1 :
//addlayout = (LinearLayout) getLayoutInflater().inflate(R.layout.addview, null);//从另外的布局中关联组件
//dialog.setView(addlayout);
dialog.setTitle(“新建”);//设置对话框的标题
dialog.setMessage(“确定新建?”);//设置对话框显示的内容
dialog.setPositiveButton(“确定”, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();//关闭对话框}});//设置对话框的确定按钮
dialog.setNegativeButton(“取消”, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();//关闭对话框
}
});//设置对话框的确定按钮
dialog.create();
dialog.show();
break;
case item2 :
dialog.setTitle(“提示”);//设置对话框的标题
dialog.setMessage(“确定删除吗?”);//设置对话框显示的内容
dialog.setPositiveButton(“确定”, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();//关闭对话框}});//设置对话框的确定按钮
dialog.setNegativeButton(“取消”, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();//关闭对话框}});//设置对话框的确定按钮
dialog.create();
dialog.show();
break;}
return super.onOptionsItemSelected(item);}}
yingyongActivity.java:
package com.example.album_activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;
import android.widget.Gallery.LayoutParams;
public class yingyongActivity extends Activity implements
AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory {
private ImageSwitcher mySwitcher;
private Integer[] myThmIds = {
R.drawable.n1, R.drawable.n2, R.drawable.n3,
R.drawable.n4};
private Integer[] myImgIds = {
R.drawable.n1,R.drawable.n2,R.drawable.n3,
R.drawable.n4};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //设置这个Activity没有标题栏
setContentView(R.layout.yingyong);
mySwitcher = (ImageSwitcher) findViewById(R.id.switcher1);
mySwitcher.setFactory(this);
mySwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
mySwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));
Gallery g = (Gallery) findViewById(R.id.gallery1);
g.setAdapter(new ImageAdapter(this));
g.setOnItemSelectedListener(this);
Button btn = (Button)findViewById(R.id.btn1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intentback = new Intent();
intentback.setClass(yingyongActivity.this, MainActivity.class);
startActivity(intentback);
finish();}}); }
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
mySwitcher.setImageResource(myImgIds[position]); //为mSwitcher设选中的图片资源
}
public void onNothingSelected(AdapterView<?> parent) {
} public View makeView() {
ImageView iv = new ImageView(this);
iv.setBackgroundColor(0xFF000000); //设置背景颜色
iv.setScaleType(ImageView.ScaleType.FIT_CENTER); //
iv.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
return iv;
} //自定义ImageAdapter适配器
public class ImageAdapter extends BaseAdapter {
private Context myContext;
public ImageAdapter(Context c) { myContext = c; }
public int getCount() { return myThmIds.length; }
public Object getItem(int position) { return position; }
public long getItemId(int position) { return position; }
public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(myContext);
i.setImageResource(myThmIds[position]);
i.setAdjustViewBounds(true);
i.setLayoutParams(new Gallery.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
return i; }}}
youxiActivity.java:
package com.example.album_activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;
import android.widget.Gallery.LayoutParams;
public class youxiActivity extends Activity implements
AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory {
private ImageSwitcher mySwitcher;
private Integer[] myThmIds = {
R.drawable.p0, R.drawable.p1, R.drawable.p2,
R.drawable.p3};
private Integer[] myImgIds = {
R.drawable.p0, R.drawable.p1, R.drawable.p2,
R.drawable.p3};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //设置这个Activity没有标题栏
setContentView(R.layout.youxi);

    mySwitcher = (ImageSwitcher) findViewById(R.id.switcher);mySwitcher.setFactory(this);mySwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));mySwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));Gallery g = (Gallery) findViewById(R.id.gallery);g.setAdapter(new ImageAdapter(this));g.setOnItemSelectedListener(this);Button btn = (Button)findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intentback = new Intent();intentback.setClass(youxiActivity.this, MainActivity.class);startActivity(intentback);finish();}}); }
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {mySwitcher.setImageResource(myImgIds[position]);  //为mSwitcher设选中的图片资源
}
public void onNothingSelected(AdapterView<?> parent) {
}
public View makeView() { ImageView iv = new ImageView(this);iv.setBackgroundColor(0xFF000000);   //设置背景颜色iv.setScaleType(ImageView.ScaleType.FIT_CENTER);  //iv.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));return iv;
}    //自定义ImageAdapter适配器
public class ImageAdapter extends BaseAdapter {private Context myContext;public ImageAdapter(Context c) { myContext = c; }public int getCount() { return myThmIds.length; }public Object getItem(int position) { return position; }public long getItemId(int position) { return position; }public View getView(int position, View convertView, ViewGroup parent) {   ImageView i = new ImageView(myContext);i.setImageResource(myThmIds[position]);i.setAdjustViewBounds(true);i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));return i;    }}}

图片资源:

activity_main.xml:

addview.xml:

<?xml version="1.0" encoding="utf-8"?>

listitem.xml:

<?xml version="1.0" encoding="utf-8"?>

yingyong.xml:

<?xml version="1.0" encoding="utf-8"?>

youxi.xml:

<?xml version="1.0" encoding="utf-8"?>
样式资源:

AndroidManifest.xml:

六、实验结果







七、实验分析
了解到三种菜单的使用,了解提示对话框,进度对话框,日期选择对话框,和时间选择对话框,四种对话框的使用。
实验地点 指导教师

太原理工大学移动应用软件开发技术实验报告相关推荐

  1. 太原理工大学linux与python编程r实验报告_太原理工大学算法设计与分析实验报告...

    <太原理工大学算法设计与分析实验报告>由会员分享,可在线阅读,更多相关<太原理工大学算法设计与分析实验报告(12页珍藏版)>请在人人文库网上搜索. 1.本科实验报告课程名称: ...

  2. html表单实验结论,web前端开发技术实验报告-实验五

    1.长 春 大 学 20 15 2016学年第 二 学期Web前端开发技术 课程实 验 报 告学 院: 计算机科学技术专 业: 软件工程 班 级: 软件14402 学 号: 姓 名: 王 悦 任课教师 ...

  3. 数据库应用开发技术实验报告

    "数据库应用开发技术"实验报告 2020-2021学年 第二学期 实验名称: 学生姓名: 学 号: 专业班级: 所在学院: 指导教师: 职 称: 完成日期: 实验1 sql ser ...

  4. 实训报告html前端开发,web前端开发技术实验报告 实验三.doc

    web前端开发技术实验报告 实验三.doc (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分  长 春 大 学 20 15 - 20 ...

  5. 跨平台脚本开发技术实验报告 github cache

    2021-2022学年第2学期 实 验 报 告 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tKYnUdkJ-1665463185652)(zucc.png &quo ...

  6. 太原理工大学c语言课程设计报告,太原理工大学程序设计技术实验报告

    <太原理工大学程序设计技术实验报告>由会员分享,可在线阅读,更多相关<太原理工大学程序设计技术实验报告(19页珍藏版)>请在人人文库网上搜索. 1.本科实验报告课程名称: 程序 ...

  7. 单片机c语言数码显示实验报告,单片机动态显示技术实验报告.doc

    桂林电子科技大学 实验报告 开 课 单 位 适用年级.专业 机械 课 程 序 号 课 程 代 码 实 验 名 称 <动态显示技术> 动态显示技术实验报告 一.实验目的 1.掌握动态显示技术 ...

  8. 大数据开发技术课程报告(搭建Hadoop完全分布式集群操作集群)

    文章目录 大数据开发技术课程报告内容及要求 一. 项目简介和实验环境 二. 虚拟机的各项准备工作 三. 安装JDK并配置环境变量 四. 安装Hadoop并配置环境变量 五. 配置Hadoop完全分布式 ...

  9. 北理计算机网络实验报告,北京理工大学计算机网络实践ftp客户端实验报告.doc...

    北京理工大学计算机网络实践ftp客户端实验报告.doc 实验五FTP客户端程序 实验目的 文件传送协议FTP是Internet中广泛使用的服务协议之一,FTP协议是客 户/服务器之间进行文件传递的协议 ...

最新文章

  1. eShopOnContainers 知多少[8]:Ordering microservice
  2. 使用Chrome快速实现数据的抓取(四)——优点
  3. Sangmado 公共基础类库
  4. 基于TableStore的亿级订单管理解决方案
  5. python学习之 - re模块
  6. PostgreSQL9.6+PostGIS2.3学习笔记(一)导入shp文件
  7. 【转】一分钟读懂互联网广告竞价策略GFP+GSP+VCG
  8. 语音识别准确率永远达不到100%?
  9. 大数据技术的表现形式有哪些
  10. java awt区域,构建Java Swing中的区域图
  11. macOS 内置的端口扫描工具
  12. Win10 1803版本 哔哩哔哩 无法打开HEVC选项
  13. 一文看懂国内人工智能行业产业链全景(必收藏)
  14. EDM邮件营销的背景和市场分析
  15. Goland自定义头部注释,增加author和data等(学习笔记,不作教程)
  16. csdn WLW 文件验证
  17. 【WSL】配置zsh
  18. android 获取年月日
  19. linux 环境变量 哪个文件,Linux环境变量配置文件
  20. 使用python打造一个中英互译软件(基于有道翻译)

热门文章

  1. EMC测试仪器_如何实现EMC的测试工作?
  2. STM32L0系列之ADC采集
  3. xmanager5 + xshell linux 远程
  4. 华东理工《文献检索》MOOC (3)---精通web of science检索结果分析、JCR数据库检索
  5. 安卓应用在各大应用市场上架方法
  6. java实现mysql拦截_java分页拦截类实现sql自动分页
  7. 螺栓扭矩查找表excel下载
  8. 天玑1300和骁龙778plus哪个好
  9. 锂离子电池电量计原理概述
  10. 在论文中加入(制作)目录方法