↑大致效果

项目构成:

随便写的,用的线性布局

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top|center"
android:orientation="vertical"
android:padding="5dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:showDividers="middle"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"> <TextView
android:layout_marginBottom="20dp"
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right|bottom"
android:lines="3"
android:maxLines="3"
android:scrollbars="vertical"
android:textColor="#000000"
android:textSize="38dp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:showDividers="middle"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="75dp"
android:orientation="horizontal"
android:showDividers="middle"> <Button
android:id="@+id/btn_cancel"
style="@style/btn_cal"
android:text="CE" /> <Button
android:id="@+id/btn_clear"
style="@style/btn_cal"
android:text="C" /> <Button
android:id="@+id/btn_sqrt"
style="@style/btn_cal"
android:text="√" /> <Button
android:id="@+id/btn_plus"
style="@style/btn_cal"
android:text="+" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="75dp"
android:orientation="horizontal"
android:showDividers="middle"> <Button
android:id="@+id/btn_seven"
style="@style/btn_cal"
android:text="7" /> <Button
android:id="@+id/btn_eight"
style="@style/btn_cal"
android:text="8" /> <Button
android:id="@+id/btn_nine"
style="@style/btn_cal"
android:text="9" /> <Button
android:id="@+id/btn_minus"
style="@style/btn_cal"
android:text="-" /> </LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="75dp"
android:orientation="horizontal"
android:showDividers="middle"> <Button
android:id="@+id/btn_four"
style="@style/btn_cal"
android:text="4" /> <Button
android:id="@+id/btn_five"
style="@style/btn_cal"
android:text="5" /> <Button
android:id="@+id/btn_six"
style="@style/btn_cal"
android:text="6" /> <Button
android:id="@+id/btn_multiply"
style="@style/btn_cal"
android:text="×" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="75dp"
android:orientation="horizontal"
android:showDividers="middle"> <Button
android:id="@+id/btn_one"
style="@style/btn_cal"
android:text="1" /> <Button
android:id="@+id/btn_two"
style="@style/btn_cal"
android:text="2" /> <Button
android:id="@+id/btn_three"
style="@style/btn_cal"
android:text="3" /> <Button
android:id="@+id/btn_divide"
style="@style/btn_cal"
android:text="÷" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="75dp"
android:orientation="horizontal"
android:showDividers="middle"> <Button
android:id="@+id/btn_zero"
style="@style/btn_cal"
android:layout_weight="2"
android:text="0" /> <Button
android:id="@+id/btn_dot"
style="@style/btn_cal"
android:text="." /> <Button
android:id="@+id/btn_equal"
style="@style/btn_cal"
android:text="=" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
</android.support.constraint.ConstraintLayout>

Main_activiity类:

  package com.example.myapplication6;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends AppCompatActivity {
double sum = 0.0;
double temp = 0.0;
int op = -1;
double step = 1;
boolean positive = true;
boolean flag = true;
TextView tv = null;
Button sqrt = null;
Button C = null;
Button CE = null;
Button dot = null;
Button num1 = null;
Button num2 = null;
Button num3 = null;
Button num4 = null;
Button num5 = null;
Button num6 = null;
Button num7 = null;
Button num8 = null;
Button num9 = null;
Button num0 = null;
Button plus = null;
Button subtract = null;
Button multiply = null;
Button divide = null;
Button equal = null;
NumUtil numUtil = new NumUtil();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView tv=(TextView) findViewById(R.id.tv_result);
num0 = (Button) findViewById(R.id.btn_zero);
num0.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(temp < 0.00000001 && temp > 0.0)
tv.setText("0");
else{
if(flag){
temp *= 10;
}else {
step /= 10;
}
tv.setText(numUtil._tv(temp));
}
}
});
num1 = (Button) findViewById(R.id.btn_one);
num1.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
temp *= 10;
temp += 1;
}else {
step /= 10;
temp += step * 1.0;
}
tv.setText(numUtil._tv(temp));
}
});
num2 = (Button) findViewById(R.id.btn_two);
num2.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
temp *= 10;
temp += 2;
}else {
step /= 10;
temp += step * 2;
}
tv.setText(numUtil._tv(temp));
}
});
num3 = (Button) findViewById(R.id.btn_three);
num3.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
temp *= 10;
temp += 3;
}else {
step /= 10;
temp += step * 3;
}
tv.setText(numUtil._tv(temp));
}
});
num4 = (Button) findViewById(R.id.btn_four);
num4.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
temp *= 10;
temp += 4;
}else {
step /= 10;
temp += step * 4;
}
tv.setText(numUtil._tv(temp));
}
});
num5 = (Button) findViewById(R.id.btn_five);
num5.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
temp *= 10;
temp += 5;
}else {
step /= 10;
temp += step * 5;
}
tv.setText(numUtil._tv(temp));
}
});
num6 = (Button) findViewById(R.id.btn_six);
num6.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
temp *= 10;
temp += 6;
}else {
step /= 10;
temp += step * 6;
}
tv.setText(numUtil._tv(temp));
}
});
num7 = (Button) findViewById(R.id.btn_seven);
num7.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
temp *= 10;
temp += 7;
}else {
step /= 10;
temp += step * 7;
}
tv.setText(numUtil._tv(temp));
}
});
num8 = (Button) findViewById(R.id.btn_eight);
num8.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
temp *= 10;
temp += 8;
}else {
step /= 10;
temp += step * 8;
}
tv.setText(numUtil._tv(temp));
}
});
num9 = (Button) findViewById(R.id.btn_nine);
num9.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
temp *= 10;
temp += 9;
}else {
step /= 10;
temp += step * 9;
}
tv.setText(numUtil._tv(temp));
}
});
dot = (Button) findViewById(R.id.btn_dot);
dot.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
flag = false;
tv.setText(numUtil._tv(temp)+".");
}
}
});
equal = (Button) findViewById(R.id.btn_equal);
equal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(op == -1){
sum = temp;
}else if(op == 1){
sum += temp;
}else if(op == 2){
sum -= temp;
}else if(op == 3){
sum *= temp;
}else if(op == 4){
sum /= temp;
}
tv.setText(numUtil._tv(sum));
positive = true;
flag = true;
sum = 0.0;
temp = 0.0;
step = 1.0;
op = -1;
}
});
plus = (Button) findViewById(R.id.btn_plus);
plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("+");
if(op == -1){
sum = temp;
temp = 0.0;
}else{
if(op == 1){
sum += temp;
}else if(op == 2){
sum -= temp;
}else if(op == 3){
sum *= temp;
}else if(op == 4){
sum /= temp;
}
}
op = 1;
temp = 0.0;
positive = true;
flag = true;
}
});
subtract = (Button) findViewById(R.id.btn_minus);
subtract.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("-");
if(op == -1){
sum = temp;
temp = 0.0;
}else{
if(op == 1){
sum += temp;
}else if(op == 2){
sum -= temp;
}else if(op == 3){
sum *= temp;
}else if(op == 4){
sum /= temp;
}
}
op = 2;
temp = 0.0;
positive = true;
flag = true;
}
});
multiply = (Button) findViewById(R.id.btn_multiply);
multiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("×");
if(op == -1){
sum = temp;
temp = 0.0;
}else{
if(op == 1){
sum += temp;
}else if(op == 2){
sum -= temp;
}else if(op == 3){
sum *= temp;
}else if(op == 4){
sum /= temp;
}
}
op = 3;
temp = 0.0;
positive = true;
flag = true;
}
});
divide = (Button) findViewById(R.id.btn_divide);
divide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("÷");
if(op == -1){
sum = temp;
temp = 0.0;
}else{
if(op == 1){
sum += temp;
}else if(op == 2){
sum -= temp;
}else if(op == 3){
sum *= temp;
}else if(op == 4){
sum /= temp;
}
}
op = 4;
temp = 0.0;
positive = true;
flag = true;
}
});
C = (Button) findViewById(R.id.btn_cancel);
C.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText(" ");
positive = true;
flag = true;
temp = 0.0;
}
});
CE = (Button) findViewById(R.id.btn_clear);
CE.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText(" ");
positive = true;
flag = true;
sum = 0.0;
temp = 0.0;
step = 1.0;
op = -1;
}
});
sqrt = (Button) findViewById(R.id.btn_sqrt);
sqrt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(op == -1){
sum = temp;
}else if(op == 1){
sum += temp;
}else if(op == 2){
sum -= temp;
}else if(op == 3){
sum *= temp;
}else if(op == 4){
sum /= temp;
}
sum = Math.sqrt(sum);
tv.setText(numUtil._tv(sum));
positive = true;
flag = true;
sum = 0.0;
temp = 0.0;
step = 1.0;
op = -1;
}
});
} }

NumUtil工具类:

package com.example.myapplication6;

public class NumUtil {
public double toDouble(String str){
return 0.0;
}
public String _tv(double x){
double t = x - (int) x;
if(t < 0)
t = -t;
if(t < 0.00000001)
return String.valueOf((int)x);
else{
String temp = String.format("%.7f", x);
for(int i = temp.length() -1; i >= 0; i--){
if(temp.substring(i,i+1).equals("0")){
continue;
}else{
if(i + 1 < temp.length()){
temp = temp.substring(0,i+1);
}
break;
}
}
return temp;
} }
}

按钮的垃圾设定

<style name="btn_cal">
<item name="android:layout_marginLeft">3dp</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">#EEA9B8</item>
<item name="android:textSize">30px</item>
</style>

不太好弄的地方就是对于小数点后的处理了,剩下的随便写写就完事了

android 开发 简单的小计算器的更多相关文章

  1. Android开发效率的小技巧

    提高eclipse使用效率(二) 提高Android开发效率的小技巧   XML文件的代码提示 adt中也有xml文件的代码提示,为了让提示来的更加猛烈,我们还要设置一下 打开eclipse - Wi ...

  2. 几款Android开发人员必备小工具

    在这里我介绍一下我常常在Android Studio里面使用的小工具吧,这些工具都能够在plugin里面搜索到. (当然了哈.我也是从网上找的.用着挺方便的,在这里总结一下) Gsonformat: ...

  3. 我对android开发的一点小感悟小看法

    “Android”,“Android开发”等等这些词成了时下最热的词,也是时下大众最关注最吸引人眼球的话题,当然,最热门的行业也意味着高薪,好的就业环境,但同时也意味着强大的竞争力! Android系 ...

  4. 新人学习Android开发遇到的小问题总结

    1. IDE搭建: 搭建android的IDE时,先注意是什么版本的系统,64/32位系统. 通常使用的是Eclipse for android,Android Studio由于还需要FQ,网速慢,所 ...

  5. Android开发中的小技巧

    转自:http://blog.csdn.net/guxiao1201/article/details/40655661 简单介绍: startActivities (Intent[] intents) ...

  6. 提高eclipse使用效率(二) 提高Android开发效率的小技巧

    XML文件的代码提示 adt中也有xml文件的代码提示,为了让提示来的更加猛烈,我们还要设置一下 打开eclipse - Window - Preferences,在右边的目录树中切换到XML - X ...

  7. Android 开发中常用小技巧

    TextView中的getTextSize返回值是以像素(px)为单位的, 而setTextSize()是以sp为单位的. 所以如果直接用返回的值来设置会出错,解决办法是 用setTextSize() ...

  8. 提高eclipse使用效率(二)—— 提高Android开发效率的小技巧

    XML文件的代码提示 adt中也有xml文件的代码提示,为了让提示来的更加猛烈,我们还要设置一下 打开eclipse - Window - Preferences,在右边的目录树中切换到XML - X ...

  9. android 开发 简单的页面布局

    package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view ...

随机推荐

  1. MySQL学习2---索引

    MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引, ...

  2. Add Strings大整数加法十进制求和 & Add Binary二进制求和

    [抄题]: 以字符串的形式给出两个非负整数 num1 和 num2,返回 num1和 num2 的和. 比如一个50位+一个100位. 给定 num1 = "123",num2 = ...

  3. Linux Terminator

    NAME Terminator - Multiple GNOME terminals in one window SYNOPSIS terminator [options] DESCRIPTION T ...

  4. Golang之接口(interface)

    Golang最重要的接口,,,, package main import ( "fmt" ) //interface类型默认是指针 /* 接口的实现 Golang中的接口,不需要显 ...

  5. JavaScript 语法总结2

    1. 对象的toString()和valueOf(). - toString() 和Java中的toString() 一样 - valueOf(), 和toString() 都是用来进行类型转换的方法 ...

  6. appium镜像设置

    npm --registry http://registry.cnpmjs.org install -g appium 使用npm的国内镜像可以安装,速度很不错. 以后不想输入ip的话可以输入以下命令 ...

  7. [GO]go使用contextCancel

    package main import ( "fmt" "context" ) func main() { gen := func(ctx context.Co ...

  8. HDU 5120 Intersection (圆的面积交)

    题意:给定两个圆环,求两个圆环的面积交. 析:很容易知道,圆环面积交就是,大圆与大圆面积交 - 大圆和小圆面积交 - 小圆和大圆面积交 + 小圆和小圆面积交. 代码如下: #pragma commen ...

  9. metasploit-数据库支持

    db_status db_disconnect db_connect 用户名:口令@服务器地址:端口/数据库名称 createdb msf4 -E UTF8 -T template0 -o msf3 ...

  10. mongodb spring 集成

    参考文档 mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?op ...