20169219 实验四Android程序设计
一、实现Linux下dc的功能,计算后缀表达式的值
public int evaluate(String expr) {
int op1, op2, result = 0;
String token;
StringTokenizer tokenizer = new StringTokenizer(expr);
while (tokenizer.hasMoreTokens()) {
token = tokenizer.nextToken();
//如果是运算符,调用isOperator
if (isOperator(token)) {
//从栈中弹出操作数2
op2 = (stack.pop()).intValue();
//从栈中弹出操作数1
op1 = (stack.pop()).intValue();
//根据运算符和两个操作数调用evalSingleOp计算result;
result = evalSingleOp(token.charAt(0), op1, op2);
//计算result入栈;
stack.push(new Integer(result));
} else {//如果是操作数
//操作数入栈;
stack.push(new Integer(Integer.parseInt(token)));
}
}
return result;
}

二、完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号

三、修改代码让MainActivity启动ThirdActivity
@Override
public boolean onTouch(View arg0, MotionEvent event) {
Intent intent = new Intent(this, ThirdActivity.class);
intent.putExtra("message", "Message from First Screen");
startActivity(intent);
return true;
}
为了触碰事件,MainActivity类实现OnTouchListener接口。
四、修改代码让Toast消息中显示自己的学号信息
在Android开发中,我们经常会遇到需要给用户一个提示,但是又不想影响整体的体验,那么Toast出现了。Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。而且Toast主要用于向用户显示提示消息。
- 传参介绍
Toast.makeText(Context context, CharSequence text, @Duration int duration)
- contentx : 当前的上下文环境。可用getApplicationContext()或this
- text : 要显示的字符串。
- duration : 显示的时间长短,以毫秒为单位。Toast默认的有两个LENGTH_LONG(长)和LENGTH_SHORT(短),也可以使用毫秒如2000
显示的几种方式
1、默认
2、自定义位置
3、带图片
4、完全自定义
完全自定义页面
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_below="@id/imageView"
/>
五、修改布局让P290页的界面与教材不同
LinearLayout 线性布局
FrameLayout 单帧布局,也有中文翻译为帧布局、框架布局。
RelativeLayout 相对布局
AbsoluteLayout 绝对布局
TableLayout 表格布局
每种布局都有一行重要的代码来设置:
如 LinearLayout 中的 android:orientation="vertical"

详细使用方法可参考Android 开发之旅:view的几种布局方式及实践

六、监听器的使用
Android提供的基于事件监听接口有OnClickListener、OnLongClickListener、OnFocusChangeListener、OnKeyListener、OnTouchListener、OnCreateContextMenuListener等。
1)OnClickListener接口:该接口处理的是点击事件。在触摸模式下,是在某个View上按下并抬起的组合动作,而在键盘模式下,是某个View获得焦点后点击确定键或者按下轨迹球事件。
2)OnLongClickListener接口: OnLongClickListener接口与上述的OnClickListener接口原理基本相同,只是该接口为View长按事件的捕捉接口,即当长时间按下某个View时触发的事件。
3)OnFocusChangeListener接口:OnFocusChangeListener接口用来处理控件焦点发生改变的事件。如果注册了该接口,当某个控件失去焦点或者获得焦点时都会触发该接口中的回调方法。
4)OnKeyListener接口:是对手机键盘进行监听的接口,通过对某个View注册并监听,当View获得焦点并有键盘事件时,便会触发该接口中的回调方法。
5)OnTouchListener接口:是用来处理手机屏幕事件的监听接口,当为View的范围内触摸按下、抬起或滑动等动作时都会触发该事件。
6)OnCreateContextMenuListener接口:是用来处理上下文菜单显示事件的监听接口。该方法是定义和注册上下文菜单的另一种方式。
public class MainActivity extends Activity {
int counter = 0;
int[] colors = {Color.BLACK, Color.BLUE, Color.CYAN,
Color.DKGRAY, Color.GRAY, Color.GREEN, Color.LTGRAY,
Color.MAGENTA, Color.RED, Color.WHITE, Color.YELLOW};
@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.menu_main, menu);
return true;
}
public void changeColor(View view) {
if (counter == colors.length) {
counter = 0;
}
view.setBackgroundColor(colors[counter++]);
}
}
七、简易计算器
参考了一个android开发视频编写计算器。
switch (opt){
case Types.ADD:
items.add(new Item(a+b,Types.NUM));
break;
case Types.SUB:
items.add(new Item(a-b,Types.NUM));
break;
case Types.X:
items.add(new Item(a*b,Types.NUM));
break;
case Types.DIV:
items.add(new Item(a/b,Types.NUM));
break;
}

出现的问题
1、测试MyDCTest总是出错,显示报错信息是0 test classes found in package 'exp4'
检查多次发现测试类的名称有错误,之前写的是MyDCTest,需要改成MyDCTester

2、报错“no resource identifier found for attribute 'weight' in package 'android'”
代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
......
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weight="1"
android:text="1"/>
解决方法:在android:weight="1"处应该改为android:layout_weight="1",同时,layout_weight只适用于LinearLayout。
参考资料
Android 开发之旅:view的几种布局方式及实践
Android 中 Toast用法
20169219 实验四Android程序设计的更多相关文章
- 实验四 Android程序设计 实验报告
实验四 Android程序设计 实验报告 目录 代码托管地址 Android程序设计-1 Android程序设计-2 Android程序设计-3 Android程序设计-4 Android程序设计-5 ...
- 第十四周实验报告:实验四 Android程序设计
20162317袁逸灏 第十四周实验报告:实验四 Android程序设计 实验内容 Android Studio 实验要求 学会使用Android Studio 学习 活动 以及相关知识内容 学习 U ...
- 20165235实验四 Android程序设计
20165235实验四 Android程序设计 实验课程:JAVA编程设计 实验名称:Android开发 姓名:祁瑛 学号:20165235 实验时间:2018.05.16 指导老师:娄家鹏 Andr ...
- 20165220Java实验四 Android程序设计
一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:葛宇豪 学号:20165220 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:13:45 - 15:25 实验序号:实验 ...
- 20172328《程序设计与数据结构》实验四 Android程序设计报告
20172328<程序设计与数据结构>实验四 Android程序设计报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志 ...
- 20172302《程序设计与数据结构》实验四Android程序设计实验报告
课程:<程序设计与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年5月30日 必修/选修: 必修 1.实验内容 (1)And ...
- 实验四 Android程序设计
20155224 实验四 Android程序设计 实验报告 实验报告封面: 课程:Java程序设计 班级:1652班 姓名:王高源 学号:20165225 指导教师:娄嘉鹏 实验日期:2018年5月1 ...
- 20165236 实验四 Android程序设计
20165236 实验四 Android程序设计 一.实验报告 课程:Java程序设计 班级:1652班 姓名:郭金涛 学号:20165236 指导教师:娄嘉鹏 实验 ...
- 20165205 2017-2018-2 《Java程序设计》实验四 Android程序设计
20165205 2017-2018-2 <Java程序设计>实验四 Android程序设计 实验内容 实验四 Android程序设计-1 Android Stuidio的安装测试: 参考 ...
随机推荐
- IE9以上版本无法更換会员头像
解决方法一:把网址加入"信任的網站" 就可以了 解决方法二:打开IE8的窗口-工具-- Intelnet选项-- 安全-- 自定义级别把“将文件上传到服务器时包含本地目录路径”这一 ...
- sqlserver sql语句查看分区记录数、查看记录所在分区
select count(1) ,$PARTITION.WorkDatePFN(workdate) from imgfile group by $PARTITION.WorkDatePFN(workd ...
- js对字符串进行编码方法总结
在用javascript对URL字符串进行编码中,虽然escape().encodeURI().encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤.但后两者是 ...
- Kaggle 比赛项目总结(项目流程)
一.EDA(Exploratory Data Analysis) EDA:也就是探索性的分析数据 目的: 理解每个特征的意义: 知道哪些特征是有用的,这些特征哪些是直接可以用的,哪些需要经过变换才能用 ...
- Cassandra 学习七 cassandra研究
https://www.cnblogs.com/bonelee/p/6306079.html Allow filtering: 如果你的查询条件里,有一个是根据索引查询,那其它非索引非主键字段,可以通 ...
- ARM-Linux内核移植之(一)——内核启动流程分析
内核版本:2.6.22 为什么要采用这样一个较低的版本进行移植了,因为韦东山大牛说了,低版本的才能学到东西,越是高版本需要移植时做的工作量越少,学的东西越少. 内核启动分为三个阶段,第一是运行hea ...
- TCP与UDP比较 以及并发编程基础知识
一.tcp比udp真正可靠地原因 1.为什么tcp比udp传输可靠地原因: 我们知道在传输数据的时候,数据是先存在操作系统的缓存中,然后发送给客户端,在客户端也是要经过客户端的操作系统的,因为这个过程 ...
- 什么是语义化的HTML
语义化的HTML使用每个html标签都特定的用途,例如p标签放大段文字, h1~h6常用于标题,strong加粗强掉….. 语义化的好处: 1:去掉或样式丢失的时候能让页面呈现清晰的结构: html本 ...
- 基本的Ceph性能测试工具和方法
测试环境 1. 测试准备 1.1 磁盘读写性能 1.1.1 单个 OSD 磁盘写性能,大概 165MB/s. root@ceph1:~# echo 3 > /proc/sys/vm/drop_c ...
- 如何计算圆周率 Pi (π)值, 精确到小数点后 10000 位 只需要 30 多句代码!