太原理工大学移动应用软件开发技术实验报告
课程名称 移动应用软件开发技术 实验题目 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:
六、实验结果
七、实验分析
了解到三种菜单的使用,了解提示对话框,进度对话框,日期选择对话框,和时间选择对话框,四种对话框的使用。
实验地点 指导教师
太原理工大学移动应用软件开发技术实验报告相关推荐
- 太原理工大学linux与python编程r实验报告_太原理工大学算法设计与分析实验报告...
<太原理工大学算法设计与分析实验报告>由会员分享,可在线阅读,更多相关<太原理工大学算法设计与分析实验报告(12页珍藏版)>请在人人文库网上搜索. 1.本科实验报告课程名称: ...
- html表单实验结论,web前端开发技术实验报告-实验五
1.长 春 大 学 20 15 2016学年第 二 学期Web前端开发技术 课程实 验 报 告学 院: 计算机科学技术专 业: 软件工程 班 级: 软件14402 学 号: 姓 名: 王 悦 任课教师 ...
- 数据库应用开发技术实验报告
"数据库应用开发技术"实验报告 2020-2021学年 第二学期 实验名称: 学生姓名: 学 号: 专业班级: 所在学院: 指导教师: 职 称: 完成日期: 实验1 sql ser ...
- 实训报告html前端开发,web前端开发技术实验报告 实验三.doc
web前端开发技术实验报告 实验三.doc (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 长 春 大 学 20 15 - 20 ...
- 跨平台脚本开发技术实验报告 github cache
2021-2022学年第2学期 实 验 报 告 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tKYnUdkJ-1665463185652)(zucc.png &quo ...
- 太原理工大学c语言课程设计报告,太原理工大学程序设计技术实验报告
<太原理工大学程序设计技术实验报告>由会员分享,可在线阅读,更多相关<太原理工大学程序设计技术实验报告(19页珍藏版)>请在人人文库网上搜索. 1.本科实验报告课程名称: 程序 ...
- 单片机c语言数码显示实验报告,单片机动态显示技术实验报告.doc
桂林电子科技大学 实验报告 开 课 单 位 适用年级.专业 机械 课 程 序 号 课 程 代 码 实 验 名 称 <动态显示技术> 动态显示技术实验报告 一.实验目的 1.掌握动态显示技术 ...
- 大数据开发技术课程报告(搭建Hadoop完全分布式集群操作集群)
文章目录 大数据开发技术课程报告内容及要求 一. 项目简介和实验环境 二. 虚拟机的各项准备工作 三. 安装JDK并配置环境变量 四. 安装Hadoop并配置环境变量 五. 配置Hadoop完全分布式 ...
- 北理计算机网络实验报告,北京理工大学计算机网络实践ftp客户端实验报告.doc...
北京理工大学计算机网络实践ftp客户端实验报告.doc 实验五FTP客户端程序 实验目的 文件传送协议FTP是Internet中广泛使用的服务协议之一,FTP协议是客 户/服务器之间进行文件传递的协议 ...
最新文章
- eShopOnContainers 知多少[8]:Ordering microservice
- 使用Chrome快速实现数据的抓取(四)——优点
- Sangmado 公共基础类库
- 基于TableStore的亿级订单管理解决方案
- python学习之 - re模块
- PostgreSQL9.6+PostGIS2.3学习笔记(一)导入shp文件
- 【转】一分钟读懂互联网广告竞价策略GFP+GSP+VCG
- 语音识别准确率永远达不到100%?
- 大数据技术的表现形式有哪些
- java awt区域,构建Java Swing中的区域图
- macOS 内置的端口扫描工具
- Win10 1803版本 哔哩哔哩 无法打开HEVC选项
- 一文看懂国内人工智能行业产业链全景(必收藏)
- EDM邮件营销的背景和市场分析
- Goland自定义头部注释,增加author和data等(学习笔记,不作教程)
- csdn WLW 文件验证
- 【WSL】配置zsh
- android 获取年月日
- linux 环境变量 哪个文件,Linux环境变量配置文件
- 使用python打造一个中英互译软件(基于有道翻译)