简单android拨号器的实现
大家都知道撥號器包括最上方是文本輸入框,用于顯示你所要撥打的號碼,其次下方的按鈕分別用于輸入號碼與撥號,當然這只是一個最簡單的撥號器。我們甚至可以在上面加上添加號碼到通訊錄,或者從通訊錄中選取號碼等等許多復雜而且有趣的功能。
首先我們所熟知的android的布局有LinearLayout,FrameLayout,TableLayout,RelativeLayout等等。而我這里選擇使用的是RelativeLayout布局,因為該布局非常的靈活,可以根據之前定義的組件來確定之后組件應該擺放的位置。同時我為了使撥號器的界面更加的好看,特意使用了ImageButton而不是Button,因此我們可以在按鈕上添加各種好看的圖片。下面直接上代碼:
<RelativeLayout 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:background="@drawable/bc"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=".MainActivity" ><!-- android:background="#ffffffff"表示該組件的背景顏色形如“#AARRGGBB”均表示為某一種顏色AA如果均為FF,則表示不透明,如均為00,則表示為透明RR如果均為FF,則表示全紅,如均為00,則表示為無紅色GG如果均為FF,則表示全綠,如均為00,則表示為無綠色BB如果均為FF,則表示全藍,如均為00,則表示為無藍色android:gravity="center"表示將text中的文字顯示在正中央--><TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="180dp"android:background="@android:color/transparent"android:gravity="center"android:layout_alignParentTop="true"android:text="@string/text" /><ImageButtonandroid:id="@+id/button1"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@id/textView1"android:gravity="center"android:onClick="onClick"android:src="@drawable/s1" /><ImageButtonandroid:id="@+id/button2"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_toRightOf="@id/button1"android:gravity="center"android:onClick="onClick"android:src="@drawable/s2" /><ImageButtonandroid:id="@+id/button3"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_toRightOf="@id/button2"android:gravity="center"android:onClick="onClick"android:src="@drawable/s3" /><ImageButtonandroid:id="@+id/button4"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@id/button1"android:gravity="center"android:onClick="onClick"android:src="@drawable/s4" /><ImageButtonandroid:id="@+id/button5"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_below="@id/button2"android:layout_toRightOf="@id/button4"android:gravity="center"android:onClick="onClick"android:src="@drawable/s5" /><ImageButtonandroid:id="@+id/button6"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_below="@id/button3"android:layout_toRightOf="@id/button5"android:gravity="center"android:onClick="onClick"android:src="@drawable/s6" /><ImageButtonandroid:id="@+id/button7"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@id/button4"android:gravity="center"android:onClick="onClick"android:src="@drawable/s7" /><ImageButtonandroid:id="@+id/button8"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_below="@id/button5"android:layout_toRightOf="@id/button7"android:gravity="center"android:onClick="onClick"android:src="@drawable/s8" /><ImageButtonandroid:id="@+id/button9"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_below="@id/button6"android:layout_toRightOf="@id/button8"android:gravity="center"android:onClick="onClick"android:src="@drawable/s9" /><ImageButtonandroid:id="@+id/button_1"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@id/button7"android:gravity="center"android:onClick="onClick"android:src="@drawable/sj" /><ImageButtonandroid:id="@+id/button0"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_below="@id/button8"android:layout_toRightOf="@id/button_1"android:gravity="center"android:onClick="onClick"android:src="@drawable/s0" /><ImageButtonandroid:id="@+id/button_2"android:layout_width="95dp"android:layout_height="wrap_content"android:layout_below="@id/button9"android:layout_toRightOf="@id/button0"android:gravity="center"android:onClick="onClick"android:src="@drawable/sx1" /><ImageButtonandroid:id="@+id/button_call"android:layout_width="145dp"android:layout_height="wrap_content"android:layout_alignBottom="@+id/button_back"android:layout_alignParentLeft="true"android:layout_below="@id/button_1"android:gravity="center"android:onClick="onClick"android:src="@drawable/dialpad" /><ImageButtonandroid:id="@+id/button_back"android:layout_width="145dp"android:layout_height="wrap_content"android:gravity="center"android:layout_below="@id/button_2"android:layout_toRightOf="@id/button_call"android:onClick="onClick"android:src="@drawable/delete_n"/></RelativeLayout>以上便是一個簡單的android撥號器界面,那么實現這個界面后,我們怎么讓撥號按鈕具有撥號的功能呢,其實這也非常的簡單,只需要一句非常簡單的代碼調用android系統自帶的撥號功能
<uses-permission android:name="android.permission.CALL_PHONE"/>
? ?接下來再通過java代碼實現按鈕之間互相的邏輯關系,實現監聽,我們這個建議的android撥號器便可以算作完工了。
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public void onClick(View v){TextView tv = (TextView)MainActivity.this.findViewById(R.id.textView1);ImageButton bt1 = (ImageButton)MainActivity.this.findViewById(R.id.button1);ImageButton bt2 = (ImageButton)MainActivity.this.findViewById(R.id.button2);ImageButton bt3 = (ImageButton)MainActivity.this.findViewById(R.id.button3);ImageButton bt4 = (ImageButton)MainActivity.this.findViewById(R.id.button4);ImageButton bt5 = (ImageButton)MainActivity.this.findViewById(R.id.button5);ImageButton bt6 = (ImageButton)MainActivity.this.findViewById(R.id.button6);ImageButton bt7 = (ImageButton)MainActivity.this.findViewById(R.id.button7);ImageButton bt8 = (ImageButton)MainActivity.this.findViewById(R.id.button8);ImageButton bt9 = (ImageButton)MainActivity.this.findViewById(R.id.button9);ImageButton bt_1 = (ImageButton)MainActivity.this.findViewById(R.id.button_1);ImageButton bt0 = (ImageButton)MainActivity.this.findViewById(R.id.button0);ImageButton bt_2 = (ImageButton)MainActivity.this.findViewById(R.id.button_2);ImageButton bt_call = (ImageButton)MainActivity.this.findViewById(R.id.button_call);ImageButton bt_back = (ImageButton)MainActivity.this.findViewById(R.id.button_back);if(v.equals(bt1)){tv.append("1");}if(v.equals(bt2)){tv.append("2");}if(v.equals(bt3)){tv.append("3");}if(v.equals(bt4)){tv.append("4");}if(v.equals(bt5)){tv.append("5");}if(v.equals(bt6)){tv.append("6");}if(v.equals(bt7)){tv.append("7");}if(v.equals(bt8)){tv.append("8");}if(v.equals(bt9)){tv.append("9");}if(v.equals(bt_1)){tv.append("*");}if(v.equals(bt0)){tv.append("0");}if(v.equals(bt_2)){tv.append("#");}if(v.equals(bt_call)){String str = tv.getText().toString();Intent intent = new Intent();intent.setAction("android.intent.action.CALL");intent.setData(Uri.parse("tel:"+str));startActivity(intent);}if(v.equals(bt_back)){//從末尾刪除按鈕上的文本//獲取TextView上的文本信息String str = tv.getText().toString();if(!(str.equals(null))&&!(str.trim().equals(""))){//將獲取的字符串進行截取str = str.substring(0,str.length()-1);tv.setText(str);return;}Toast.makeText(MainActivity.this, "請輸入號碼", Toast.LENGTH_SHORT).show();}}? ? 這便是一個簡易android撥號器制作的全過程,那么如果我們還想調用手機上的通訊錄應該怎么做呢?其實也是一樣,只要我們獲取了想我們的APP應用中添加讀取通訊錄數據的許可{<uses-permission android:name="android.permission.READ_CONTACTS"/2)},同樣便可以調用手機自帶的通訊錄啦~
總結
以上是生活随笔為你收集整理的简单android拨号器的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网校搭建8:上云
- 下一篇: 对静态页面的一些理解