这章是一篇拨打电话的程序,这个功能的实现主要由Intent的URI和权限完成,下面就来看一下设计的界面吧!
首先,我们先来了解一下这个项目结构
编写资源xml
1、在res/drawable-mdpi中有文件myselector_del.xml,该文件用于设置“删除”按钮的背景图,代码如下所示
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="false"
android:drawable="@drawable/del"/>
<item
android:state_pressed="true"
android:drawable="@drawable/deldown"/>
</selector>
2、在res/drawable-mdpi中有文件myselector_cancel.xml,该文件用于设置“取消”或者“退出”拨号程序按钮的背景图,代码如下所示
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="false"
android:drawable="@drawable/dialcancel"/>
<item
android:state_pressed="true"
android:drawable="@drawable/dialcanceldown"/>
</selector>
3、在res/drawable-mdpi中有文件myselector_dial.xml,该文件用于设置“拨号”按钮的背景图,代码如下所示
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="false"
android:drawable="@drawable/dial"/>
<item
android:state_pressed="true"
android:drawable="@drawable/dialdown"/>
</selector>
4、在res/drawable-mdpi中有文件myselector_num.xml,该文件用于设置“数字”按钮的背景图,代码如下所示
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="false"
android:drawable="@drawable/numback"/>
<item
android:state_pressed="true"
android:drawable="@drawable/numbackdown"/>
</selector>
5、在res/values中有color.xml,该文件是颜色资源文件,代码如下所示
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="red">#fd8d8d</color> <!-- 红色 -->
<color name="green">#9cfda3</color> <!-- 绿色 -->
<color name="blue">#8d9dfd</color> <!-- 蓝色 -->
<color name="white">#FFFFFF</color> <!-- 白色 -->
<color name="black">#000000</color> <!-- 黑色 -->
</resources>
main.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/LinearLayout06"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:text="@string/default_number"
android:id="@+id/EditText01"
android:layout_width="260dip"
android:textSize="24dip"
android:editable="false"
android:enabled="false"
android:singleLine="true"
android:background="@color/white"
android:textColor="@color/black"
android:layout_marginRight="6dip"
android:layout_marginLeft="10dip"
android:layout_height="wrap_content"/>
<Button
android:text=" "
android:id="@+id/Button_del"
android:textSize="24dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myselector_del"/>
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout01"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/LinearLayout02"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:text="1"
android:id="@+id/Button01"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myselector_num"/>
<Button
android:text="2"
android:id="@+id/Button02"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:background="@drawable/myselector_num"/>
<Button
android:text="3"
android:id="@+id/Button03"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myselector_num"/>
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout03"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip">
<Button
android:text="4"
android:id="@+id/Button04"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myselector_num"/>
<Button
android:text="5"
android:id="@+id/Button05"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:background="@drawable/myselector_num"/>
<Button
android:text="6"
android:id="@+id/Button06"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myselector_num"/>
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout04"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip">
<Button
android:text="7"
android:id="@+id/Button07"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myselector_num"/>
<Button
android:text="8"
android:id="@+id/Button08"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:background="@drawable/myselector_num"/>
<Button
android:text="9"
android:id="@+id/Button09"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myselector_num"/>
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout05"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip">
<Button
android:text=" "
android:id="@+id/Button_dial"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myselector_dial"/>
<Button
android:text="0"
android:id="@+id/Button00"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:background="@drawable/myselector_num"/>
<Button
android:text=" "
android:id="@+id/Button_cancel"
android:textSize="54dip"
android:textStyle="bold"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/myselector_cancel"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
java代码:
package com.MyDialing;
import com.Sample_11_5.R;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MyDialing extends Activity {
int[] numButtonIds={//数字按钮的ID数组
R.id.Button00,R.id.Button01,R.id.Button02,
R.id.Button03,R.id.Button04,R.id.Button05,
R.id.Button06,R.id.Button07,R.id.Button08,
R.id.Button09
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bDel=(Button)this.findViewById(R.id.Button_del);
bDel.setOnClickListener(//为删除按钮添加监听器
//OnClickListener为View的内部接口,其实现者负责监听鼠标点击事件
new View.OnClickListener(){
public void onClick(View v){
EditText et=(EditText)findViewById(R.id.EditText01);
String num=et.getText().toString();
num=(num.length()>1)?num.substring(0,num.length()-1):"";
et.setText(num);//组织字符创
}
});
Button bDial=(Button)this.findViewById(R.id.Button_dial);
bDial.setOnClickListener(//为拨号按钮添加监听器
//OnClickListener为View的内部接口,其实现者负责监听鼠标点击事件
new View.OnClickListener(){
public void onClick(View v){
//获取输入的电话号码
EditText et=(EditText)findViewById(R.id.EditText01);
String num=et.getText().toString();
//根据获取的电话号码创建Intent拨号
Intent dial = new Intent();
dial.setAction("android.intent.action.CALL");
dial.setData(Uri.parse("tel://"+num));
startActivity(dial); //激活打电话的Activity
}
}
);
Button bCancel=(Button)this.findViewById(R.id.Button_cancel);
bCancel.setOnClickListener(//为退出按钮添加监听器
//OnClickListener为View的内部接口,其实现者负责监听鼠标点击事件
new View.OnClickListener(){
public void onClick(View v){
MyDialing.this.finish();//是否窗口
}
}
);
View.OnClickListener numListener=new View.OnClickListener(){
public void onClick(View v){ //为0-9数字按钮创建监听器
Button tempb=(Button)v;//得到按钮的引用
EditText et=(EditText)findViewById(R.id.EditText01);//得到EditText的引用
et.append(tempb.getText());//组织字符串
}
};
for(int id:numButtonIds){//为所有数字按钮添加监听器
Button tempb=(Button)this.findViewById(id);//得到按钮
tempb.setOnClickListener(numListener);//添加监听
}
}
}
最后可别忘记添加权限哦!
(我突然在网上发现了一个添加用户权限的好方法,不会出错的,)
1、首先,打开AndroidManifest.xml
2、点击Permission选项栏
3、点击Add...按钮,会出现如下:
4、根据你的需要来做选择,现在我需要Uses Permission用户权限,然后:
5、选好权限:
6、保存:
界面就会变的这样,再看看xml文件是怎么样的
红色框里是在你选择自后自动生成的,这样我的权限设置就基本完成了
现在我们来看看运行结果,但是在看运行结果之前,我们还需要另外启动另一个模拟器来测试
那这一章也先这样了