Android笔记(十六) 简易计算器

实现功能:

简单的计算器

布局

要求:

1. 按钮合理对齐

2. 按钮文字位于右下角

采用LinearLayout嵌套LinearLayout实现布局。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- 显示屏组件 -->
    <EditText
        android:id="@+id/et_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:gravity="right" />

    <!-- 一个垂直线性布局,用来放置所有按钮 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="15dp"
        android:gravity="center_horizontal"
        android:orientation="vertical">

        <!-- 一个水平线性布局,用来放置C DEL ÷ × -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn_clear"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="C"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

            <Button
                android:id="@+id/btn_del"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="DEL"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

            <Button
                android:id="@+id/btn_divide"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="÷"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

            <Button
                android:id="@+id/btn_multiply"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="×"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

        </LinearLayout>

        <!-- 一个水平线性布局,用来放置7 8 9 - -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn_7"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="7"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

            <Button
                android:id="@+id/btn_8"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="8"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

            <Button
                android:id="@+id/btn_9"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="9"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

            <Button
                android:id="@+id/btn_minus"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="-"
                android:textSize="15sp"
                android:gravity="right|bottom"/>
        </LinearLayout>

        <!-- 一个水平线性布局,用来放置4 5 6 7 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            >

            <Button
                android:id="@+id/btn_4"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="4"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

            <Button
                android:id="@+id/btn_5"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="5"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

            <Button
                android:id="@+id/btn_6"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="6"
                android:textSize="15sp"
                android:gravity="right|bottom"/>

            <Button
                android:id="@+id/btn_sum"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:text="+"
                android:textSize="15sp"
                android:gravity="right|bottom"/>
        </LinearLayout>

        <!-- 一个水平布局,用来放置剩余按钮 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">

            <!-- 一个垂直布局,用来放置1 2 3 0 . 按钮 -->
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <!-- 一个水平布局,用来放置1 2 3 按钮 -->
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:orientation="horizontal">

                    <Button
                        android:id="@+id/btn_1"
                        android:layout_width="90dp"
                        android:layout_height="90dp"
                        android:text="1"
                        android:textSize="15sp"
                        android:gravity="right|bottom"/>

                    <Button
                        android:id="@+id/btn_2"
                        android:layout_width="90dp"
                        android:layout_height="90dp"
                        android:text="2"
                        android:textSize="15sp"
                        android:gravity="right|bottom"/>

                    <Button
                        android:id="@+id/btn_3"
                        android:layout_width="90dp"
                        android:layout_height="90dp"
                        android:text="3"
                        android:textSize="15sp"
                        android:gravity="right|bottom"/>
                </LinearLayout>

                <!-- 一个水平布局,用来放置0 . 按钮 -->
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:orientation="horizontal">

                    <Button
                        android:id="@+id/btn_0"
                        android:layout_width="180dp"
                        android:layout_height="90dp"
                        android:text="0"
                        android:textSize="15sp"
                        android:gravity="right|bottom"/>

                    <Button
                        android:id="@+id/btn_point"
                        android:layout_width="90dp"
                        android:layout_height="90dp"
                        android:text="."
                        android:textSize="15sp"
                        android:gravity="right|bottom"/>
                </LinearLayout>

            </LinearLayout>

            <Button
                android:id="@+id/btn_equal"
                android:layout_width="90dp"
                android:layout_height="180dp"
                android:text="="
                android:textSize="15sp"
                android:gravity="right|bottom"/>

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

运行结果:

时间: 2024-10-25 17:11:53

Android笔记(十六) 简易计算器的相关文章

swift 笔记 (十六) —— 可选链

可选链(Optional Chaining) 我们都知道"可选型"是什么,那么可选链又是什么,举个例子解释一下: struct MyName{ var name } struct MyInfo { var myName:MyName? = MyName() } class MyClass { var structInstance: MyInfo? = MyInfo() } 这里有两个结构体和一个类,当,这个类实例化的时候: var myInstance = MyClass() 所有的可

C++学习笔记十六-模板和泛型编程(二)

C++学习笔记十六-模板和泛型编程(二) 16.4 类模板成员 1.模板作用域中模板类型的引用: 通常,当使用类模板的名字的时候,必须指定模板形参.这一规则有个例外:在类本身的作用域内部,可以使用类模板的非限定名.例如,在默认构造函数和复制构造函数的声明中,名字 Queue 是 Queue<Type> 缩写表示.实质上,编译器推断,当我们引用类的名字时,引用的是同一版本.因此,复制构造函数定义其实等价于: Queue<Type>(const Queue<Type> &a

MYSQL进阶学习笔记十六:MySQL 监控!(视频序号:进阶_35)

知识点十六:MySQL监控(35) 一.为什么使用MySQL监控 随着软件后期的不断升级,myssql的服务器数量越来越多,软硬件故障的发生概率也越来越高.这个时候就需要一套监控系统,当主机发生异常时,此时通过监控系统发现和处理. 这个监控实际上是在我们的开发完成之后,这个时候软件就开始在运行,这个运行我们就需要去关注到mysql服务器是否正常,那么我们要观察它就需要给它提供一些监控,这监控就是当它发生故障之后, 那么我们这个监控就会告诉我们到底什么地方发生了一些异常或者一些错误,这个时候我们就

Android学习笔记十六.Android数据存储与IO.SharedPreferences

SharedPreferences 对于应用程序的数据输入.输出,如果是应用程序只是少量数据需要保存,那么使用普通文件就可以了(SharedPrefereces);但如果应用程序有大量数据需要存储.访问,就需要借助数据库了.Android系统内置了SQLite数据库,SQLite数据库是一个真正轻量级的数据库,它没有后台进程,整个数据库就对应于一个文件. 1.SharedPreferences简介 (1)概念:SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此它保存

Android笔记(六十)Android总结:四大组件——BroadcastReceiver篇

什么是BroadcastReceiver BroadcastReceiver是Android体系的四大组件之一,本质上是一种全局的监听器,用于监听系统全局的广播消息,正式因为其本质为全局监听,因此可以非常方便的实现系统中不同组件之间的通信.也方便我们自己的app针对系统开机.电量低等广播做出相应反映.同时我们也可以自己发送广播,来实现不同组件之间的通信 系统接收短信广播,然后弹出Toast: package cn.lixyz.broadcastreceiver; import android.a

Android入门(十六)调用摄像头相册

原文链接:http://www.orlion.ga/665/ 一.调用摄像头 创建一个项目ChoosePicDemo,修改activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent&qu

Android笔记(六十一)动态添加组件

想要一个功能,点击按钮,可以在已有的布局上,新添加一组组件. 动态的创建组件,本质上还是创建组件,只不过是在程序中根据逻辑来创建.大致步骤是找到要创建控件的位置,然后将要创建的组件添加进去. 看代码: MainActivity.java package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Bu

Spring.Net学习笔记十(打造简易的依赖注入框架)

之前我们学习里一个简易的IoC框架.今天我们接着上次的程序,实现带参数构造函数对象的实例和属性的注入 .原文地址:http://www.cnblogs.com/GoodHelper/archive/2009/11/02/SpringNet_MyDi.html 我感觉这个很有必要对应IOC框架的理解,知道注入的工作原理,对应实际的应用是很有帮助的. 我们知道可以通过反射获取类的构造函数及参数(GetConstructors方法):可以获取属性和属性的类型(GetProperties方法).通过Ac

Android笔记(六) Android中的组件

一个软件可以吸引到用户,除了优秀的功能可以解决用户的问题之外,良好的用户界面也并不可少.一个软件的功能不管多么优秀,但是没有提供友好的界面来让用户操作,将很难吸引到最终用户. Android提供了大量的UI组件,开发者按照一定规律把这些UI组件组合在一起,形成一个优秀的图形用户界面,再通过Android提供的事件响应机制,让这些组件可以响应用户的点击.拖动,最终完成用户的交互操作. Android应用的绝大部分UI组件都放在android.widget包及其子包.android.view包机器子

Android笔记(六) Android中的布局——线性布局

我们的软件是由好多个界面组成的,而每个界面又由N多个控件组成,Android中借助布局来让各个空间有条不紊的摆放在界面上. 可以把布局看作是一个可以放置很多控件的容器,它可以按照一定的规律调整控件的位置,从而实现精美的界面. 布局中也可以放置布局,通过多层布局的嵌套,实现比较复杂的界面. Android提供了四种基本布局:LinearLayout.RelativeLayout.FrameLayout.TableLayout LinearLayout: LinearLayout称为线性布局,正如其