Android基础知识(简单实例计算器)

在做这个计算器的时候,我认为主要分为两部分:界面设计,功能实现。

(效果图)

界面设计:

其实界面设计和功能实现是相互联系在一起的,我界面怎么去设计,功能就要去怎么实现。

1、控件:界面有19个按钮,数字1-9和小数点、加减乘除、清空回退、百分比、等号,还有一个显示内容的文本框。实现起来十分简单只要拖动到xml中即可。

2、布局设计:刚拖进来的控件都摆放得比较凌乱,需要对其调整,本案例中,我会使用LinearLayout对界面进行布局。

3、样式:有背景颜色、边框线颜色、圆角。

接下来先看样式文件:

简单说明一下:

gradient-- 对应颜色渐变。 startcolor、endcolor就不多说了。android:angle 是指从哪个角度开始变。

solid--  填充。

stroke--描边。

corners--  圆角。

padding-- 定义内容离边界的距离。 与android:padding_left、android:padding_right这些是一个道理。

先介绍white_bg.xml,也就是显示内容的文本框的样式文件:

接下来介绍白色键的样式文件white_selector.xml:

第一个item是调用上一个样式white_bg.xm为默认情况下的样式第二个item是调用了gray_bg.xml样式文件,根据其android:state_pressed="true"属性,意为点击时的样式。

接下来介绍白色键的样式文件orange_selector.xml:

第一个item是调用了ashen.xml样式文件,根据其android:state_pressed="true"属性,意为点击时的样式。

第二个item是调用样式orange_bg.xm为默认情况下的样式:

在activity_main.xml的空间中分别去调用 white_bg、white_selector、orange_selector

功能实现:

在实现功能前,先要分清楚他们之间的关系:

1、数字0-9和小数点

2、加减乘除

3、清除与回删键

4、等号

5、百分比

public class MainActivity extends Activity implements View.OnClickListener {

Button btn_0, btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7, btn_8, btn_9; //数字0-9

Button btn_dian; //小数点

Button btn_C, btn_del; //清除和回删

Button btn_yu; //求余

Button btn_chu; //除法

Button btn_cheng; //乘法

Button btn_jia; //加法

Button btn_jian; //减法

Button btn_deng; //等于

EditText input;//显示内容文本框

boolean clear_ed; //是否情况文本框

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btn_C = (Button) findViewById(R.id.btn_C);

btn_del = (Button) findViewById(R.id.btn_del);

btn_yu = (Button) findViewById(R.id.btn_yu);

btn_chu = (Button) findViewById(R.id.btn_chu);

btn_cheng = (Button) findViewById(R.id.btn_cheng);

btn_jia = (Button) findViewById(R.id.btn_jia);

btn_jian = (Button) findViewById(R.id.btn_jian);

btn_deng = (Button) findViewById(R.id.btn_deng);

btn_dian = (Button) findViewById(R.id.btn_dian);

btn_9 = (Button) findViewById(R.id.btn_9);

btn_8 = (Button) findViewById(R.id.btn_8);

btn_7 = (Button) findViewById(R.id.btn_7);

btn_6 = (Button) findViewById(R.id.btn_6);

btn_5 = (Button) findViewById(R.id.btn_5);

btn_4 = (Button) findViewById(R.id.btn_4);

btn_3 = (Button) findViewById(R.id.btn_3);

btn_2 = (Button) findViewById(R.id.btn_2);

btn_1 = (Button) findViewById(R.id.btn_1);

btn_0 = (Button) findViewById(R.id.btn_0);

input = (EditText) findViewById(R.id.input);

btn_0.setOnClickListener(this);

btn_1.setOnClickListener(this);

btn_2.setOnClickListener(this);

btn_3.setOnClickListener(this);

btn_4.setOnClickListener(this);

btn_5.setOnClickListener(this);

btn_6.setOnClickListener(this);

btn_7.setOnClickListener(this);

btn_8.setOnClickListener(this);

btn_9.setOnClickListener(this);

btn_yu.setOnClickListener(this);

btn_chu.setOnClickListener(this);

btn_cheng.setOnClickListener(this);

btn_jia.setOnClickListener(this);

btn_jian.setOnClickListener(this);

btn_deng.setOnClickListener(this);

btn_dian.setOnClickListener(this);

btn_C.setOnClickListener(this);

btn_del.setOnClickListener(this);

}

@Override

public void onClick(View v) {

String str = input.getText().toString();

if (str.equals("0")) {

str = "";

}

switch (v.getId()) {

case R.id.btn_0:

case R.id.btn_1:

case R.id.btn_2:

case R.id.btn_3:

case R.id.btn_4:

case R.id.btn_5:

case R.id.btn_6:

case R.id.btn_7:

case R.id.btn_8:

case R.id.btn_9:

case R.id.btn_dian:

if (clear_ed) {

clear_ed = false;

str = "";

input.setText("0"); //重置为0

}

input.setText(str + ((Button) v).getText()); //根据按钮的setText来添加数字

break;

case R.id.btn_jia:

case R.id.btn_jian:

case R.id.btn_cheng:

case R.id.btn_chu:

input.setText(str + " " + ((Button) v).getText() + " "); //为区分加减乘除和数字 特意留了空格为间隔,

break;

case R.id.btn_C:

input.setText("0"); //重置为0

break;

case R.id.btn_del:

if (input.length() <= 1 || input.getText().toString().equals("")) {

input.setText("0");

} else {

input.setText(str.substring(0, str.length() - 1)); // 删除末尾一个数 由0开始 到str长度减1.

}

break;

case R.id.btn_deng:

getResult();

break;

case R.id.btn_yu:

Double d3 = Double.parseDouble(str);

Double d4 = d3 * 0.01;

input.setText(d4 + "");

break;

}

}

private void getResult() {

String exp = input.getText().toString();

if (exp == null || exp.equals("")) { //如果exp为空的话结束

return;

}

if (!exp.contains(" ")) {//如果exp没有为预算法预留的“空格”的话结束

return;

}

clear_ed = true;

double result = 0;

String s1 = exp.substring(0, exp.indexOf(" ")); //定义s1的内容是 运算符前的那串数字

String op = exp.substring(exp.indexOf(" ") + 1, exp.indexOf(" ") + 2);//运算符

String s2 = exp.substring(exp.indexOf(" ") + 3); //定义s2的内容是 运算符前的那串数字

System.out.println(s1);

System.out.println(op);

System.out.println(s2);

if (!s1.equals("") && !s2.equals("")) { //分四种情况来写,s1 s2都不为null。s1 为null,s2不为。s1不为,s2为空。s12都为空的

double d1 = Double.parseDouble(s1); //转化为double型

double d2 = Double.parseDouble(s2);

if (op.equals("+")) { //加法运算

result = d1 + d2;

} else if (op.equals("-")) { //减法运算

result = d1 - d2;

} else if (op.equals("×")) { //乘法运算

result = d1 * d2;

} else if (op.equals("÷")) { //除法运算

if (d2 == 0) { //如果分母为0,那么结果为0

result = 0;

} else {

result = d1 / d2;

}

}

//将算好了的结果,再根据是否包含小数点来 决定输出的结果类型:整型还是双精度型

if (!s1.contains(".") && !s2.contains(".")) { //如果s1、s2都不包含小数点,那么他们是整型

int r = (int) result; //转化为int型

input.setText(r + "");

} else {

input.setText(result + "");

}

} else if (!s1.equals("") && s2.equals("")) { //如果s1不为空,s2为空

input.setText(exp); //结果不作处理,原样输出

} else if (s1.equals("") && s2.equals("")) { //都为空

input.setText(exp); //结果不作处理,原样输出

} else if (s1.equals("") && !s2.equals("")) { //如果s1为空,s2不为空

double d2 = Double.parseDouble(s2);

if (op.equals("+")) { //加法运算

result = 0 + d2;

} else if (op.equals("-")) { //减法运算

result = 0 - d2;

} else if (op.equals("×")) { //乘法运算

result = 0;

} else if (op.equals("÷")) { //除法运算

result = 0;

}

//将算好了的结果,再根据是否包含小数点来 决定输出的结果类型:整型还是双精度型

if (!s2.contains(".")) { //如果s1、s2都不包含小数点,那么他们是整型

int r = (int) result; //转化为int型

input.setText(r + "");

} else {

input.setText(result + "");

}

}

}

}

后期再添加些注释,先偷会懒。

android的简单知识,Android基础知识(简单实例计算器)相关推荐

  1. GRBL 软件:简单解释的基础知识

    GRBL 软件:简单解释的基础知识 决定使用哪种 CNC 软件是一个艰难的决定.查看我们对 GRBL 软件的概述,看看它是否适合您. 当您遇到特定问题或需要提出问题时,拥有一些首选资源总是有帮助的.我 ...

  2. 计算机wrod初级考试题及答案,计算机基础知识+Word基础知识+Excel基础知识试题答案解析.doc...

    文档介绍: 计算机基础知识+ Word基础知识+ Excel基础知识 第一部分 一.单项选择题 1.世界上第一台电子数字计算机取名为(    ). A.UNIVAC    B.EDSAC    C.E ...

  3. 知识图谱基础知识(一): 概念和构建

    推荐: 知识图谱构建技术一览 知识图谱基础知识之三--知识图谱的构建过程 目录 一.什么是知识图谱 二.知识图谱的分层架构 三.知识图谱构架技术 (一)数据获取(Data Acquisition) ( ...

  4. 50 个 Redis 必备知识:基础知识,架构、调优和监控知识及难点解决

    本文包括:30 个 Redis 基础知识:10个 Redis 架构和运维必懂的知识:Redis 调优.监控知识和10个具体应用难点. 30 个 Redis 基础知识 1.Redis支持哪几种数据类型? ...

  5. 公共基础知识计算机,公共基础知识计算机基础知识试题

    计算机基础知识是公共基础知识考试的组成成分之一,以下是由学习啦小编整理关于共基础知识计算机基础知识试题的内容,希望大家喜欢! 公共基础知识计算机基础知识试题 1.CPU的主要功能是进行( ). A.算 ...

  6. 计算机专业技能知识,2017年度计算机专业技能知识资料基础知识资料试题'及其答案...

    2017年度计算机专业技能知识资料基础知识资料试题'及其答案 (19页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 ''第一部分   一 ...

  7. 软件设计师教程(九)计算机系统知识-软件工程基础知识

    软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(四)计算 ...

  8. 计算机ppt操作知识,计算机基础知识.ppt.ppt

    计算机基础知识.ppt 计算机应用基础教程 ----长泰电大 谢春发 计算机应用基础----目录 计算机基础知识 计算机基本操作 Windows98操作系统 Word97/2000 Excel97/2 ...

  9. 消防中计算机基础知识,消防设施操作员基础知识计算机基础知识真题及答案解析.doc...

    消防设施操作员基础知识计算机基础知识真题及答案解析 模块八计算机基础知识 第1节 项目1 计算机系统的组成与功能 单选题(江南博哥) 1.()是计算机的核心部分. 输入设备 存储器 中央处理器 主板 ...

  10. Android View(一)——View的基础知识

    目录 一.View的基础知识 1.什么是View 2.View的位置参数 3.MotionEvent 4. TouchSlop 5. VelocityTracker 6. GestureDetecto ...

最新文章

  1. [YTU]_2625( 构造函数和析构函数)
  2. HTML5 速查列表
  3. Qt 事件系统的解读
  4. js处理url中的请求参数(编码/解码)
  5. 苹果支付60亿美元与高通和解?亚马逊不再运营中国国内市场业务;华为愿同德国签“无间谍软件协议”;Facebook开发语音服务...
  6. java中去除文件名的后缀名_Java程序在最后一个点后去除其扩展名的文件名
  7. android居中不父布局,在父级中,TextView不会垂直居中_android_开发99编程知识库
  8. 德鲁伊 oltp oltp_内存中OLTP –招待看门狗的三个关键点–检查点文件
  9. 洛谷 P2294 [HNOI2005]狡猾的商人
  10. Javaweb 网上订餐系统
  11. 某丰快递分拣小程序-python字典
  12. 向量点乘、叉乘几何意义、python实现、应用
  13. maven No plugin found for prefix ‘G‘ in the current project and in the plugin groups
  14. m4s格式转换mp3_简单的amr转换mp3音频格式转换方法
  15. 理解Monitor监视器锁原理
  16. 移动硬盘插服务器上坏了,移动硬盘接口坏了怎么办解决教程
  17. 原装苹果手机_“苹果”手机换个屏水这么深!嘉兴警方揭开“原装屏”背后真相...
  18. 每日持续签到,累计签到,送积分
  19. 留下岁月的痕迹,不负自己所望
  20. vue封装图片滑块验证+读秒组件

热门文章

  1. Mysql DDL与DML
  2. 所谓周末,就是在家好好做饭、好好睡觉、好好玩游戏
  3. :将照片处理成绘画风格
  4. 项目中的文件夹与tomcat/webapp中manager文件夹重名
  5. 微软在华推广Win7拒绝“黑屏”
  6. 10.企业安全建设指南(金融行业安全架构与技术实践) --- 安全预算、总结与汇报
  7. 1.Linux性能诊断 --- 入门命令100条
  8. 17.Zend_View
  9. 29. git ignore
  10. 4. PHP 操作 memcache(1)