Android计算器简单实现及代码分析

Android计算器简单实现及代码分析,第1张

一、UI布局及代码 页面效果
布局代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="8">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:id="@+id/text_view"
        android:layout_weight="2"
        android:textSize="70dp"
        android:gravity="right|bottom"
        android:maxLines="2" />


    <TextView
        android:id="@+id/result_view"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="right|bottom"
        android:maxLines="1"
        android:textSize="65dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="5">

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_ac"
            android:layout_weight="1"
            android:text="AC"
            android:background="#ff0000"
            android:textColor="#000"
            android:textSize="20dp"
            android:layout_margin="5dp" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_left"
            android:layout_weight="1"
            android:text="("
            android:background="#fff"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_right"
            android:layout_weight="1"
            android:text=")"
            android:background="#fff"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_divide"
            android:layout_weight="1"
            android:text="/"
            android:background="#fffaf0"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_del"
            android:layout_weight="1"
            android:text="DEL"
            android:background="#808a87"
            android:textColor="#000"
            android:textSize="15dp"
            android:layout_margin="5dp"/>
    LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="4">

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_7"
            android:layout_weight="1"
            android:text="7"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_8"
            android:layout_weight="1"
            android:text="8"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_9"
            android:layout_weight="1"
            android:text="9"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_mult"
            android:layout_weight="1"
            android:text="*"
            android:background="#fffaf0"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>
    LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="4">

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_4"
            android:layout_weight="1"
            android:text="4"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_5"
            android:layout_weight="1"
            android:text="5"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_6"
            android:layout_weight="1"
            android:text="6"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_add"
            android:layout_weight="1"
            android:text="+"
            android:background="#fffaf0"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>
    LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="4">

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_1"
            android:layout_weight="1"
            android:text="1"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_2"
            android:layout_weight="1"
            android:text="2"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_3"
            android:layout_weight="1"
            android:text="3"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_minus"
            android:layout_weight="1"
            android:text="-"
            android:background="#fffaf0"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>
    LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="4">

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_0"
            android:layout_weight="2"
            android:text="0"
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_dot"
            android:layout_weight="1"
            android:text="."
            android:textColor="#000"
            android:textSize="30dp"
            android:layout_margin="5dp"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/button_result"
            android:layout_weight="1"
            android:text="="
            android:background="#ff6347"
            android:textColor="#fff"
            android:textSize="30dp"
            android:layout_margin="5dp"/>
    LinearLayout>

LinearLayout>
解析 布局使用LinearLayout布局,android:orientation="vertical"指定垂直布局,从上至下依次是表达式显示框,结果显示框以及五行按钮,并指定总权重方便控制显示。文本框TextView使用android:gravity="right|bottom"指定其从右下开始显示内容。在按钮上,使用android:background="#ff0000"指定按钮背景颜色,使用android:layout_margin="5dp"控制偏移,使其不会过于紧凑。(关于按钮背景颜色无法设置,可在res//values//themes.xml文件下将代码