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);  
	           
	     }  

 最后结果如下:



 

 

猜你喜欢

转载自littleschnappi.iteye.com/blog/2382484