android studio实现计算器

 更新时间:2018年07月11日 14:25:34   作者:Super__M  
这篇文章主要为大家详细介绍了android studio实现计算器的具体方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了android studio实现计算器的具体代码,供大家参考,具体内容如下

效果图:

资源文件:

color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <color name="colorPrimary">#3F51B5</color>
 <color name="colorPrimaryDark">#303F9F</color>
 <color name="colorAccent">#FF4081</color>
 <color name="white">#FFFFFF</color>
 <color name="black">#000000</color>
 <color name="zi">#FFFFFF</color>
 <color name="gray">#BEBEBE</color>
 <color name="green">#9AFF9A</color>
 <color name="littlegreen">#F0FFFF</color>
</resources>

white.xml

设置input text的填充色为白色

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
 <solid
  android:color="@color/white"/>
</shape>

selector.xml

点击按钮时产生阴影效果

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@color/littlegreen"
  android:state_pressed="true"/>
 <item android:drawable="@color/white" />
</selector>

equeal.xml

同理,等号的阴影效果

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@color/white"
  android:state_pressed="true"/>
 <item android:drawable="@color/littlegreen" />
</selector>

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 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"
 android:orientation="vertical"
 android:background="@drawable/jisuanqi"

 tools:context="com.example.administrator.calculate.MainActivity"
 >

 <LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="30dp"
  android:paddingLeft="20dp"
  android:paddingRight="20dp"
  android:paddingTop="20dp">

  <EditText
   android:id="@+id/input"
   android:layout_width="fill_parent"
   android:layout_height="60dp"
   android:background="@drawable/white"
   android:editable="false"
   android:gravity="right|bottom"
   />
 </LinearLayout>
 <LinearLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="20dp"
 android:orientation="horizontal"
 android:gravity="center">
 <Button
  android:layout_width="65dp"
  android:layout_height="65dp"
  android:text="C"
  android:background="@drawable/selector"
  android:gravity="center"
  android:textSize="25sp"
  android:id="@+id/clear"
  />
 <Button
  android:layout_width="65dp"
  android:layout_height="65dp"
  android:text="←"
  android:background="@drawable/selector"
  android:gravity="center"
  android:layout_marginLeft="10dp"
  android:textSize="23sp"
  android:id="@+id/delete"
  />
 <Button
  android:layout_width="65dp"
  android:layout_height="65dp"
  android:text="×"
  android:background="@drawable/selector"
  android:gravity="center"
  android:layout_marginLeft="10dp"
  android:textSize="25sp"
  android:id="@+id/cheng"
  />
 <Button
  android:layout_width="65dp"
  android:layout_height="65dp"
  android:text="÷"
  android:background="@drawable/selector"
  android:gravity="center"
  android:layout_marginLeft="10dp"
  android:textSize="25sp"
  android:id="@+id/clu"
  />

</LinearLayout>

 <LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="20dp"
  android:orientation="horizontal"
  android:gravity="center">
  <Button
   android:layout_width="65dp"
   android:layout_height="65dp"
   android:text="7"
   android:background="@drawable/selector"
   android:gravity="center"
   android:textSize="25sp"
   android:id="@+id/num7"
   />
  <Button
   android:layout_width="65dp"
   android:layout_height="65dp"
   android:text="8"
   android:background="@drawable/selector"
   android:gravity="center"
   android:layout_marginLeft="10dp"
   android:textSize="25sp"
   android:id="@+id/num8"
   />
  <Button
   android:layout_width="65dp"
   android:layout_height="65dp"
   android:text="9"
   android:background="@drawable/selector"
   android:gravity="center"
   android:layout_marginLeft="10dp"
   android:textSize="25sp"
   android:id="@+id/num9"
   />
  <Button
   android:layout_width="65dp"
   android:layout_height="65dp"
   android:text="-"
   android:background="@drawable/selector"
   android:gravity="center"
   android:layout_marginLeft="10dp"
   android:textSize="25sp"
   android:id="@+id/charjian"
   />

 </LinearLayout>

 <LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="20dp"
  android:orientation="horizontal"
  android:gravity="center">
  <Button
   android:layout_width="65dp"
   android:layout_height="65dp"
   android:text="4"
   android:background="@drawable/selector"
   android:gravity="center"
   android:textSize="25sp"
   android:id="@+id/num4"
   />
  <Button
   android:layout_width="65dp"
   android:layout_height="65dp"
   android:text="5"
   android:background="@drawable/selector"
   android:gravity="center"
   android:layout_marginLeft="10dp"
   android:textSize="25sp"
   android:id="@+id/num5"
   />
  <Button
   android:layout_width="65dp"
   android:layout_height="65dp"
   android:text="6"
   android:background="@drawable/selector"
   android:gravity="center"
   android:layout_marginLeft="10dp"
   android:textSize="25sp"
   android:id="@+id/num6"
   />
  <Button
   android:layout_width="65dp"
   android:layout_height="65dp"
   android:text="+"
   android:background="@drawable/selector"
   android:gravity="center"
   android:layout_marginLeft="10dp"
   android:textSize="25sp"
   android:id="@+id/charadd"
   />

 </LinearLayout>

 <LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  android:gravity="center_horizontal"
  android:layout_marginTop="10dp"
  >
  <LinearLayout
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:orientation="vertical"

   >
   <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    <Button
     android:layout_width="65dp"
     android:layout_height="65dp"
     android:background="@drawable/selector"
     android:text="1"
     android:gravity="center"
     android:textSize="25sp"
     android:id="@+id/num1"
     />
    <Button
     android:layout_width="65dp"
     android:layout_height="65dp"
     android:text="2"
     android:background="@drawable/selector"
     android:gravity="center"
     android:layout_marginLeft="10dp"
     android:textSize="25sp"
     android:id="@+id/num2"/>
    <Button
     android:layout_width="65dp"
     android:layout_height="65dp"
     android:text="3"
     android:background="@drawable/selector"
     android:gravity="center"
     android:layout_marginLeft="10dp"
     android:textSize="25sp"
     android:id="@+id/num3"/>
   </LinearLayout>

   <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="10dp">

    <Button
     android:id="@+id/num0"
     android:layout_width="140dp"
     android:layout_height="65dp"
     android:text="0"
     android:background="@drawable/selector"
     android:gravity="center"
     android:textSize="25sp" />

    <Button
     android:id="@+id/dian"
     android:layout_width="65dp"
     android:layout_height="65dp"
     android:layout_marginLeft="10dp"
     android:background="@drawable/selector"
     android:gravity="center"
     android:text="."
     android:textSize="25sp" />

   </LinearLayout>

  </LinearLayout>

  <LinearLayout
   android:layout_width="wrap_content"
   android:layout_height="wrap_content">
   <Button
    android:layout_width="65dp"
    android:layout_height="140dp"
    android:text="="
    android:background="@drawable/equal"
    android:gravity="center"
    android:layout_marginLeft="10dp"
    android:textSize="25sp"
    android:id="@+id/equai"/>
  </LinearLayout>

 </LinearLayout>

</LinearLayout>

java代码

package com.example.administrator.calculate;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

 @BindView(R.id.input)
 EditText input;
 @BindView(R.id.clear)
 Button clear;
 @BindView(R.id.delete)
 Button delete;
 @BindView(R.id.cheng)
 Button cheng;
 @BindView(R.id.clu)
 Button chu;
 @BindView(R.id.num7)
 Button num7;
 @BindView(R.id.num8)
 Button num8;
 @BindView(R.id.num9)
 Button num9;
 @BindView(R.id.charjian)
 Button charjian;
 @BindView(R.id.num4)
 Button num4;
 @BindView(R.id.num5)
 Button num5;
 @BindView(R.id.num6)
 Button num6;
 @BindView(R.id.charadd)
 Button charadd;
 @BindView(R.id.num1)
 Button num1;
 @BindView(R.id.num2)
 Button num2;
 @BindView(R.id.num3)
 Button num3;
 @BindView(R.id.num0)
 Button num0;
 @BindView(R.id.dian)
 Button dian;
 @BindView(R.id.equai)
 Button equal;

 private String ss="";
 private boolean fu=false;
 private boolean num=false;
 private boolean point=false;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  ButterKnife.bind(this);


 }

 @OnClick({R.id.clear, R.id.delete, R.id.cheng, R.id.clu, R.id.num7, R.id.num8, R.id.num9, R.id.charjian, R.id.num4, R.id.num5, R.id.num6, R.id.charadd, R.id.num1, R.id.num2, R.id.num3, R.id.num0, R.id.dian, R.id.equai})
 public void onViewClicked(View view) {
  switch (view.getId()) {
   case R.id.clear:
   {
    ss="";
    input.setText(ss);
   }
    break;
   case R.id.delete:
   {
    if(ss.indexOf(" ")==ss.length()-3)
    {
     ss= ss.substring(0,ss.length() - 2);
    }
    if(ss.length()>0)
    {
     ss= ss.substring(0,ss.length() - 1);
    }
    input.setText(ss);
   }
    break;
   case R.id.cheng:
   {
    if(ss.length()==0)
    {
     break;
    }
    if(ss.contains(" "))
    {
     if(ss.indexOf(" ")==ss.length()-3||ss.indexOf(" ")==ss.length()-2||ss.indexOf(" ")==ss.length()-1) break;
     getResult();
    }
    fu=true;
    ss+=" × ";
    input.setText(ss);
   }
    break;
   case R.id.clu:
   {
    if(ss.length()==0)
    {
     break;
    }
    if(ss.contains(" "))
    {
     if(ss.indexOf(" ")==ss.length()-3||ss.indexOf(" ")==ss.length()-2||ss.indexOf(" ")==ss.length()-1) break;
     getResult();
    }
    fu=true;
    ss+=" ÷ ";
    input.setText(ss);
   }
    break;
   case R.id.num7:
   {
    ss+="7";
    input.setText(ss);
   }
    break;
   case R.id.num8:
   {
    ss+="8";
    input.setText(ss);
   }
    break;
   case R.id.num9:
   {
    ss+="9";
    input.setText(ss);
   }
    break;
   case R.id.charjian:
   {
    if(ss.length()==0)
    {
     break;
    }
    if(ss.contains(" "))
    {
     if(ss.indexOf(" ")==ss.length()-3||ss.indexOf(" ")==ss.length()-2||ss.indexOf(" ")==ss.length()-1) break;
     getResult();
    }
    fu=true;
    ss+=" - ";
    input.setText(ss);
   }
    break;
   case R.id.num4:
   {
    ss+="4";
    input.setText(ss);
   }
    break;
   case R.id.num5:
   {
    ss+="5";
    input.setText(ss);
   }
    break;
   case R.id.num6:
   {
    ss+="6";
    input.setText(ss);
   }
    break;
   case R.id.charadd:
   {
    if(ss.length()==0)
    {
     break;
    }
    if(ss.contains(" "))
    {
     if(ss.indexOf(" ")==ss.length()-3||ss.indexOf(" ")==ss.length()-2||ss.indexOf(" ")==ss.length()-1) break;
     getResult();
    }
    fu=true;
    ss+=" + ";
    input.setText(ss);
   }
    break;
   case R.id.num1:
   {
    ss+="1";
    input.setText(ss);
   }
    break;
   case R.id.num2:
   {
    ss+="2";
    input.setText(ss);
   }
    break;
   case R.id.num3:
   {
    ss+="3";
    input.setText(ss);
   }
    break;
   case R.id.num0:
   {
    ss+="0";
    input.setText(ss);
   }
    break;
   case R.id.dian:
   {
    if(ss.length()==0||ss.indexOf(" ")==ss.length()-3||ss.lastIndexOf(".")>ss.indexOf(" "))
    {
     break;
    }
    else
    {
     ss+=".";
     input.setText(ss);
    }
   }
    break;
   case R.id.equai:
    getResult();
    break;
  }
 }
 private void getResult()
 {
  double result=0;
  if(ss==null||ss.equals("")) return;
  if(!ss.contains(" ")) return;
  String s1=ss.substring(0,ss.indexOf(" "));
  String op=ss.substring(ss.indexOf(" ")+1,ss.indexOf(" ")+2);
  String s2=ss.substring(ss.indexOf(" ")+3);
  if(!s1.equals("")&&!s2.equals(""))
  {
   double d1=Double.parseDouble(s1);
   double d2=Double.parseDouble(s2 );
   switch (op)
   {
    case "+": result=d1+d2;break;
    case "-": result=d1-d2;break;
    case "×": result=d1*d2;break;
    case "÷":
    {
     if(d2==0)
     {
      Toast.makeText(this, "不能除以零", Toast.LENGTH_SHORT).show();
      break;
     }
     result=d1/d2*1.0;
    }
    break;
   }

   int r = (int) result;
   if(r==result)
   {
    input.setText(""+r);
    ss=""+r;
   }
   else
   {
    input.setText(result+"");
    ss=""+result;
   }

  }
 }
}

在AndroidManifest.xml文件中activity 后面添加

android:theme=”@style/Theme.AppCompat.DayNight.NoActionBar”

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • arcgis android之定位功能的示例代码

    arcgis android之定位功能的示例代码

    这篇文章主要介绍了arcgis android之定位功能的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Android 的Bitmap的修改方法

    Android 的Bitmap的修改方法

    Android 的Bitmap的修改方法,需要的朋友可以参考一下
    2013-05-05
  • Android中RecyclerView实现多级折叠列表效果(二)

    Android中RecyclerView实现多级折叠列表效果(二)

    这篇文章主要给大家介绍了Android中RecyclerView实现多级折叠列表的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Android中persistent属性用法详解

    Android中persistent属性用法详解

    这篇文章主要介绍了Android中persistent属性用法,详细分析了persistent属性的功能及相关用法,需要的朋友可以参考下
    2016-06-06
  • 浅谈Android Studio JNI生成so库

    浅谈Android Studio JNI生成so库

    下面小编就为大家带来一篇浅谈Android Studio JNI生成so库。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android实现登录功能demo示例

    Android实现登录功能demo示例

    这篇文章主要介绍了Android实现登录功能demo示例,涉及登录信息操作、界面布局、登录逻辑判断等相关操作技巧,需要的朋友可以参考下
    2016-07-07
  • Android位图(图片)加载引入的内存溢出问题详细解析

    Android位图(图片)加载引入的内存溢出问题详细解析

    Android在加载大背景图或者大量图片时,常常致使内存溢出,下面这篇文章主要给大家介绍了关于Android位图(图片)加载引入的内存溢出问题的相关资料,需要的朋友可以参考下
    2022-12-12
  • 使用SurfaceView实现视频弹幕

    使用SurfaceView实现视频弹幕

    这篇文章主要为大家详细介绍了使用SurfaceView实现视频弹幕,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Android获取通话时间实例分析

    Android获取通话时间实例分析

    我们知道安卓系统中通话时长应该是归Callog管,所以建议去查查ContactProvider,或者是TelephonyProvider,本文也总结了一些,需要的朋友可以参考下
    2012-12-12
  • Android 匿名内存深入分析

    Android 匿名内存深入分析

    这篇文章主要为大家介绍了Android 匿名内存深入分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论