製做計算器

首先看要實現的額效果圖
html

第一步咱們要實現的是顯示器的顯示過程java

        1.在activity_main.xml中實現一個編輯框android

<EditText ide

    android:layout_width="fill_parent"函數

    android:layout_height="60dip"佈局

    android:id="@+id/et_input"/>code

此時獲得的是不能顯示編輯框,咱們須要關聯一個 android:background="@drawable/white_bg"xml

可是若是此時沒有color.xml文件是就會報錯htm

咱們能夠新建一個drawable文件夾而且在文件夾中建立一個xml的文件,而且root element中選擇shap的造型對象

在文件中須要添加corners(爲了倒圓角)和 solid(填充實體顏色爲白色)

此時應當注意若是value文件夾下沒有color.xml的文件時應當建立那麼一個文件

drawable下的文件

<?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"/>
    <!--  
	<gradient 
	    android:startColor="@color/white"
	    android:endColor="@color/red"
	    />
	<stroke 
	   android:width="1dp"
	   android:color="@color/black" />-->
</shape>

color的文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="white">#ffffffff</color>
    <color name="grey">#ffDEDEDE</color>
    <color name="orange">#ffff9933</color>
    <color name="ashen">#ffcc6633</color>
    <color name="red">#FC0000</color>
    <color name="black">#000000</color>
</resources>

2.此時咱們開縣輸入的內容能夠編輯,但這不符合實際狀況 所以咱們應該加入屬性

android:editable="false"

3.可是咱們還發現通常的計算器是按靠右的

加入屬性 android:gravity="right|bottom"

此時咱們能夠獲得一個顯示框了

二。按鈕的實現

1.實現一個佈局 觀察圖片咱們能夠得知是一個直線佈局

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:orientation="horizontal"
    android:gravity="center_horizontal">
</linearLayout>

2.在佈局下面添加按鈕

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

其中的android:gravity="right|bottom"是對控件中的文字進行靠哪邊的處理

android:layout_marginTop 是向下靠 表示對於據內邊框頂部

咱們能夠把android佈局簡單的理解爲html中的佈局

-------------------------------------------------------------------------

能夠說到了這個時候咱們就已經把安卓的前臺樣式搞定了下面就是製做相對應的事件了

下面咱們轉到主文件MainActivity,java中

首先觀察圖片咱們能夠得知  輸入狂是對咱們每一次操做的一個點擊事件進行關聯的

所以第一步咱們要 impletement Onclicklistener接口

接下來就是實例化對象

過程:

  1. 對對象進行聲明

    Button btn_0;

  2. 2.對對象進行匹配id

        btn_0=(Button)findviewbyId(R.id.btn_0);

特別注意:在顯示控制面板的時候其中比爲R.id.et_showview與對象的名稱無關

貼上代碼

 public class MainActivity extends Activity implements OnClickListener {
// 重寫按鈕
 Button btn_0;//0數字按鈕
 Button btn_1;//1數字按鈕
 Button btn_2;//2數字按鈕
 Button btn_3;//3數字按鈕
 Button btn_4;//4數字按鈕
 Button btn_5;//5數字按鈕
 Button btn_6;//6數字按鈕
 Button btn_7;//7數字按鈕
 Button btn_8;//8數字按鈕
 Button btn_9;//9數字按鈕
 Button btn_point;//點數字按鈕
 Button btn_clear;//清除按鈕;
 Button btn_del;//刪除按鈕;
 Button btn_multiply;//乘法按鈕;
 Button btn_plus;//加法按鈕;
 Button btn_minus;//減法按鈕;
 Button btn_divide;//除法按鈕;
 Button btn_equle;//等於按鈕;
 EditText et_input;//顯示輸入內容的顯示屏
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  btn_1=(Button)findViewById(R.id.btn_1);
  btn_2=(Button)findViewById(R.id.btn_2);
  btn_3=(Button)findViewById(R.id.btn_3);
  btn_4=(Button)findViewById(R.id.btn_4);
  btn_5=(Button)findViewById(R.id.btn_5);
  btn_6=(Button)findViewById(R.id.btn_6);
  btn_7=(Button)findViewById(R.id.btn_7);
  btn_8=(Button)findViewById(R.id.btn_8);
  btn_9=(Button)findViewById(R.id.btn_9);
  btn_point=(Button)findViewById(R.id.btn_point);
  btn_clear=(Button)findViewById(R.id.btn_clear);
  btn_plus=(Button)findViewById(R.id.btn_pluse);
  btn_minus=(Button)findViewById(R.id.btn_minus);
  btn_multiply=(Button)findViewById(R.id.btn_multiply);
  btn_divide=(Button)findViewById(R.id.btn_divide);
  btn_equle=(Button)findViewById(R.id.btn_equal);
  et_input=(EditText)findViewById(R.id.et_showview);

特別記住若是其中又出現錯誤 有多是在導入的時候發生了錯誤。

二。實例化完 咱們就要對每一個對象設置監聽點擊事件

 三。重寫點擊事件函數

        1.定義一個相應的事件函數

        2.定義一個結果的返回函數

定義一個double類型的r做爲結果輸出

             1.首先要肯定是否清零 若是清零的話那麼下面的函數也不會執行 所以這個時候咱們能夠定義一個變量,用布爾類型來進行傳參,而且在函數執行的一開始就將函數設置爲true .

            2.    獲得屏幕的文字將其轉換爲字符串的形式,因爲IndexOF(查找到索引值,即位置) 和substring(用於截取該位置上的全部字母) 是在String下的一個方法

            3.將字符串轉換成一個相對應的數字

            4.最後利用多分枝的結構,if。。。else..將檢測字符是否類型並做相應的運算(注意被除數被能爲0)

            例:if(op.equals="+"){r=arg1+arg2;}

            5.若是沒有小數點的話咱們將其強制轉化爲整型 

相關文章
相關標籤/搜索