界面设计仿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;
}
}
}