android---仿oppo简单计算器

界面设计仿oppo,里面用到了xml中的shape定义.源码解释很详细

1.第一种按键效果

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <!-- 填充颜色 -->
    <solid android:color="#FFFFFF"/>
    <!-- 设置四个角为弧形 -->
    <!-- android:radius 弧形的半径 -->
    <corners android:radius="360dip"/>
    <!-- 设置描边宽度和颜色 -->
    <stroke android:width="1dip" android:color="#FFCCCC"/>

    <!-- padding: Button 里面的文字与Button边界的间隔 -->
    <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" />  
</shape>

2.第二种按键效果

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <solid android:color="#ffffff"/>
    <stroke android:width="1dp" android:color="#FFCCCC"/>

</shape>

3.主布局文件

<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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.niuli.calculator.MainActivity" >

    <EditText  android:id="@+id/editinput" android:layout_width="match_parent" android:singleLine="true" android:layout_height="70dp" android:background="@drawable/btnshape2" />

    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:orientation="horizontal">
    <Button  android:id="@+id/btnbackspace" android:layout_width="220dp" android:layout_height="50dp" android:layout_marginLeft="6dp" android:background="@drawable/btnshape2" android:text="backspace" />

    <Button  android:id="@+id/btndiv" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btnshape1" android:layout_marginLeft="53dp" android:text="/" />

    </LinearLayout>

    <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="6dp" android:layout_marginTop="10dp" android:orientation="vertical">
    <!-- 1 -->
     <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="20dp">
    <Button  android:id="@+id/btn1" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btnshape1" android:text="1" />

    <Button  android:id="@+id/btn2" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="45dp" android:background="@drawable/btnshape1" android:text="2" />
    <Button  android:id="@+id/btn3" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="45dp" android:background="@drawable/btnshape1" android:text="3" />
    <Button  android:id="@+id/btnX" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="35dp" android:layout_marginRight="10dp" android:background="@drawable/btnshape1" android:text="*" />
     </TableRow>
        <!-- 2 -->
     <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="20dp">
    <Button  android:id="@+id/btn4" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btnshape1" android:text="4" />

    <Button  android:id="@+id/btn5" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="45dp" android:background="@drawable/btnshape1" android:text="5" />
    <Button  android:id="@+id/btn6" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="45dp" android:background="@drawable/btnshape1" android:text="6" />
    <Button  android:id="@+id/btnjian" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="35dp" android:layout_marginRight="10dp" android:background="@drawable/btnshape1" android:text="-" />
     </TableRow>
         <!-- 3 -->
     <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="20dp">
    <Button  android:id="@+id/btn7" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btnshape1" android:text="7" />

    <Button  android:id="@+id/btn8" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="45dp" android:background="@drawable/btnshape1" android:text="8" />
    <Button  android:id="@+id/btn9" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="45dp" android:background="@drawable/btnshape1" android:text="9" />
    <Button  android:id="@+id/btnjia" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="35dp" android:layout_marginRight="10dp" android:background="@drawable/btnshape1" android:text="+" />
     </TableRow>
         <!-- 4 -->
     <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="20dp">
    <Button  android:id="@+id/btn0" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btnshape1" android:text="0" />

    <Button  android:id="@+id/btnpoint" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="45dp" android:background="@drawable/btnshape1" android:text="." />
    <Button  android:id="@+id/btnclear" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="45dp" android:background="@drawable/btnshape1" android:text="C" />
    <Button  android:id="@+id/btnsum" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="35dp" android:layout_marginRight="10dp" android:background="@drawable/btnshape1" android:text="=" />

     </TableRow>
    </LinearLayout>

</LinearLayout>

4.主代码

package com.niuli.calculator;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener{

    private double input1 = 0, input2 = 0, result = 0;
    private int option = 0;
    boolean isClicked = false;
    private EditText input;
    private Button Backspace, C, Divide, Mul, Plus, Sub, Sum, Nine, Eight,
            Seven, Six, Five, Four, Three, Two, One, Zero, Point;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

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

        Backspace = (Button) findViewById(R.id.btnbackspace);
        Backspace.setOnClickListener(this);

        C = (Button) findViewById(R.id.btnclear);
        C.setOnClickListener(this);

        Divide = (Button) findViewById(R.id.btndiv);
        Divide.setOnClickListener(this);

        Mul = (Button) findViewById(R.id.btnX);
        Mul.setOnClickListener(this);

        Plus = (Button) findViewById(R.id.btnjia);
        Plus.setOnClickListener(this);

        Sub = (Button) findViewById(R.id.btnjian);
        Sub.setOnClickListener(this);

        Sum = (Button) findViewById(R.id.btnsum);
        Sum.setOnClickListener(this);

        Nine = (Button) findViewById(R.id.btn9);
        Nine.setOnClickListener(this);

        Eight = (Button) findViewById(R.id.btn8);
        Eight.setOnClickListener(this);

        Seven = (Button) findViewById(R.id.btn7);
        Seven.setOnClickListener(this);

        Six = (Button) findViewById(R.id.btn6);
        Six.setOnClickListener(this);

        Five = (Button) findViewById(R.id.btn5);
        Five.setOnClickListener(this);

        Four = (Button) findViewById(R.id.btn4);
        Four.setOnClickListener(this);

        Three = (Button) findViewById(R.id.btn3);
        Three.setOnClickListener(this);

        Two = (Button) findViewById(R.id.btn2);
        Two.setOnClickListener(this);

        One = (Button) findViewById(R.id.btn1);
        One.setOnClickListener(this);

        Zero = (Button) findViewById(R.id.btn0);
        Zero.setOnClickListener(this);

        Point = (Button) findViewById(R.id.btnpoint);
        Point.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.btnbackspace:
            String str = input.getText().toString();
            try {
                input.setText(str.substring(0, str.length() - 1));
            } catch (Exception e) {
                input.setText("");
            }
            break;

        case R.id.btnclear:
            input.setText(null);
            break;

        case R.id.btn0:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_0 = input.getText().toString();
            str_0 += "0";
            input.setText(str_0);
            break;

        case R.id.btn1:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_1 = input.getText().toString();
            str_1 += "1";
            input.setText(str_1);
            break;

        case R.id.btn2:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_2 = input.getText().toString();
            str_2 += "2";
            input.setText(str_2);
            break;

        case R.id.btn3:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_3 = input.getText().toString();
            str_3 += "3";
            input.setText(str_3);
            break;

        case R.id.btn4:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_4 = input.getText().toString();
            str_4 += "4";
            input.setText(str_4);
            break;

        case R.id.btn5:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_5 = input.getText().toString();
            str_5 += "5";
            input.setText(str_5);
            break;

        case R.id.btn6:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_6 = input.getText().toString();
            str_6 += "6";
            input.setText(str_6);
            break;

        case R.id.btn7:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_7 = input.getText().toString();
            str_7 += "7";
            input.setText(str_7);
            break;

        case R.id.btn8:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_8 = input.getText().toString();
            str_8 += "8";
            input.setText(str_8);
            break;

        case R.id.btn9:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_9 = input.getText().toString();
            str_9 += "9";
            input.setText(str_9);
            break;

        case R.id.btnpoint:
            if (isClicked) {
                input.setText(null);
                isClicked = false;
            }

            String str_point = input.getText().toString();
            str_point += ".";
            input.setText(str_point);
            break;

        case R.id.btndiv:
            if (input.getText().toString().equals("")) {
                return;
            }

            input1 = Double.parseDouble(input.getText().toString());
            input.setText(null);
            option = 1;
            isClicked = false;
            break;

        case R.id.btnX:
            if (input.getText().toString().equals("")) {
                return;
            }

            input1 = Double.parseDouble(input.getText().toString());
            input.setText(null);
            option = 2;
            isClicked = false;
            break;

        case R.id.btnjia:
            if (input.getText().toString().equals("")) {
                return;
            }

            input1 = Double.parseDouble(input.getText().toString());
            input.setText(null);
            option = 3;
            isClicked = false;
            break;

        case R.id.btnjian:
            if (input.getText().toString().equals("")) {
                return;
            }

            input1 = Double.parseDouble(input.getText().toString());
            input.setText(null);
            option = 4;
            isClicked = false;
            break;

        case R.id.btnsum:
            String myStringEqu = input.getText().toString();
            if (myStringEqu.equals("")) {
                return;
            }
            input2 = Double.valueOf(myStringEqu);
            input.setText(null);

            switch (option) {
            case 0:
                result = 0;
                break;

            case 1:
                result = input1 / input2;
                break;

            case 2:
                result = input1 * input2;
                break;

            case 3:
                result = input1 + input2;
                break;

            case 4:
                result = input1 - input2;
                break;
            }

            input.setText(Double.toString(result));
            isClicked = true;
            break;

        default:
            break;
        }
    }



}

你可能感兴趣的:(android,界面设计)