Andriod学习3-实现通电话功能
Andriod学习3-实现打电话功能
这次主要是使用Android实现一个打电话的界面以及功能,大概就长下面这个样子:
图片稍微有点糊,看不太清数字,就是0~9加上*和#号
下面两排每一个图标对应一个功能,分别是添加联系人、拨号、删除、查看通讯录、发送短彩信、发送邮件,今天主要是实现了第一排的功能......
1、界面设计activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout2" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/back2" 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=".MainActivity" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="82dp" android:ems="10" android:background="#ffffffff" android:textSize="40sp" android:textStyle="bold" android:hint="@null" android:textColor="#ff333333" > <requestFocus /> </EditText> <TableLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.70" > <TableRow android:id="@+id/TableRow04" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton01" android:layout_width="70dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/b1" android:scaleType="fitXY" android:layout_marginLeft="12dp" android:background="@drawable/button_selector" android:tag="1" /> <ImageButton android:id="@+id/ImageButton02" android:layout_width="70dp" android:layout_height="70dp" android:src="@drawable/b2" android:onClick="digital_click" android:layout_marginLeft="30dp" android:scaleType="fitXY" android:background="@drawable/button_selector" android:tag="2"/> <ImageButton android:id="@+id/ImageButton03" android:layout_width="70dp" android:layout_height="70dp" android:src="@drawable/b3" android:onClick="digital_click" android:scaleType="fitXY" android:layout_marginLeft="30dp" android:background="@drawable/button_selector" android:tag="3" /> </TableRow> <TableRow android:id="@+id/TableRow03" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton04" android:layout_width="70dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/b4" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:scaleType="fitXY" android:background="@drawable/button_selector" android:tag="4" /> <ImageButton android:id="@+id/ImageButton05" android:layout_width="70dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/b5" android:scaleType="fitXY" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:background="@drawable/button_selector" android:tag="5" /> <ImageButton android:id="@+id/ImageButton06" android:layout_width="70dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/b6" android:scaleType="fitXY" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:background="@drawable/button_selector" android:tag="6"/> </TableRow> <TableRow android:id="@+id/TableRow02" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton07" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:scaleType="fitXY" android:src="@drawable/b7" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:tag="7"/> <ImageButton android:id="@+id/ImageButton08" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/b8" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:scaleType="fitXY" android:tag="8" /> <ImageButton android:id="@+id/ImageButton09" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:scaleType="fitXY" android:src="@drawable/b9" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:tag="9" /> </TableRow> <TableRow android:id="@+id/TableRow01" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton10" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:scaleType="fitXY" android:src="@drawable/b10" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:tag="*"/> <ImageButton android:id="@+id/ImageButton11" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:scaleType="fitXY" android:src="@drawable/b0" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:tag="0"/> <ImageButton android:id="@+id/ImageButton12" android:layout_width="70dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/b11" android:layout_marginLeft="30dp" android:layout_marginTop="10dp" android:scaleType="fitXY" android:tag="#" /> </TableRow> </TableLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/add" android:layout_width="60dp" android:layout_height="60dp" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:onClick="newPeople" android:background="@drawable/add" /> <ImageButton android:id="@+id/dialer" android:layout_width="60dp" android:layout_height="60dp" android:layout_marginTop="10dp" android:layout_marginLeft="41dp" android:onClick="dial" android:background="@drawable/call" /> <ImageButton android:id="@+id/delete" android:layout_width="60dp" android:layout_height="60dp" android:layout_marginTop="10dp" android:layout_marginLeft="46dp" android:onClick="delete" android:background="@drawable/delete" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/contact" android:layout_width="60dp" android:layout_height="60dp" android:onClick="onActivityResult" android:layout_marginTop="10dp" android:layout_marginLeft="12dp" android:background="@drawable/contact" /> <ImageButton android:id="@+id/message" android:layout_width="60dp" android:layout_height="60dp" android:background="@drawable/msg" android:layout_marginLeft="41dp" android:layout_marginTop="10dp" /> <ImageButton android:id="@+id/email" android:layout_width="60dp" android:layout_height="60dp" android:onClick="sendEmail" android:background="@drawable/email" android:layout_marginLeft="46dp" android:layout_marginTop="10dp"/> </LinearLayout> </LinearLayout>
(1)背景切换的实现:
为了方便用户知道自己按了什么键,在按键的时候会进行一下背景切换,不按的时候显示src路径下的图片,按下去时显示background的图片,这里就涉及到background和src之间的大小关系,可以使用scaleType来进行调节,ayout_width什么的,定义的都是background的大小。
(2)所有的数字按钮都需要触发一个事件,就是记录下来是哪个数字,如果都在MainActivity中捕获的,有点麻烦,所以定义了一个digital_click函数,所有的数字的点击都触发这个函数
2、MainActivity中功能的实现
(1)digital_click函数,捕获点击的数字
public void digital_click(View view){ ImageButton btnDigital=(ImageButton) view; String text=btnDigital.getTag().toString();//捕获点击按钮中的tag currentNum.append(text);//将捕获的数字存储起来 display();//显示点击的数字 } public void display(){ textResult.setText(currentNum.toString()); }
(2)delete删除
//删除功能 public void delete(View view){ if(currentNum.length()>=1){ currentNum.delete(currentNum.length()-1, currentNum.length()); } if(currentNum.length()==0){//没有号码时,提示 Toast toast=Toast.makeText(this,"请输入号码",100); toast.show(); display(); } textResult.setText(currentNum); }
(3)拨号功能实现
public void dial(View view) { EditText text=(EditText)findViewById(R.id.editText1);//获取editText中显示的电话号码 String number=text.getText().toString(); Intent intent = new Intent(); intent.setAction(intent.ACTION_CALL);//调用android自定义的API打电话 intent.setData(Uri.parse("tel:"+number));//设置电话号码 startActivity(intent);//方法内部会自动为Intent添加类别: android.intent.category.DEFAULT }
(4)添加联系人
我们这里实现的添加联系人是点击添加联系人按钮,会自动跳转到手机的添加联系人页面(就跟平时自己在手机上用的一样)
//新建联系人 public void newPeople(View view){ Intent it = new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("content://com.android.contacts"),"contacts" )); it.setType("vnd.android.cursor.dir/person"); String number = textResult.getText().toString(); it.putExtra(android.provider.ContactsContract.Intents.Insert.SECONDARY_PHONE,number); startActivity(it); }
最后结果如下: