android-电话拨号器&点击事件四种写法


Android-电话拨号器

首先,拿到项目需求的时候要分析界面布局

Ui 界面布局如下:

android-cellphone.png

画图画的别嫌弃 - -。


布局文件使用相对布局 较简单

 

<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: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="wrap_content"

        android:inputType="phone" >

 

        <requestFocus />

    </EditText>

 

    <Button

        android:id="@+id/button1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentBottom="true"

        android:layout_centerHorizontal="true"

        android:layout_marginBottom="31dp"

        android:onClick="adiButtonClicked"

        android:text="拨打电话" />

    <!-- 实际项目中不建议这样写。 [I18N] Hardcoded string "拨打电话", should use @string resource   应该保存到vlues 下  因为国际化 -->

 

</RelativeLayout>

 

接下来 activity 中获取 editext 和 button 视图

 

Button 设置点击事件点击事件中获取editext 的电话号码,使用intent 启动拨号程序

 

// 拨打电话 流程
	private void cellphone() {
		String phonenumber = editText.getText().toString().trim();

		if (!TextUtils.isEmpty(phonenumber)) {
			// 意图信息传递
			Intent intent = new Intent();
			// 打电话
			intent.setAction(intent.ACTION_CALL);
			// 统一资源标识符(Uniform Resource Identifier)
			intent.setData(Uri.parse("tel:" + phonenumber));
			startActivity(intent);
		} else {
			Toast.makeText(MainActivity.this, "请输入正确电话号码", Toast.LENGTH_SHORT)
					.show();
		}
	}

 


最后别忘了清单文件 AndroidManifest.xml 需要赋予权限

<uses-permission android:name="android.permission.CALL_PHONE"/>

 

 

接下来是 项目的详细代码,代码中有四种点击事件的详解

 

package com.liwei.cellphone;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
	private EditText editText;
	private Button button;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 加载布局文件
		setContentView(R.layout.activity_main);
		// 获取button 按钮
		button = (Button) findViewById(R.id.button1);
		// 获取editext 文本
		editText = (EditText) findViewById(R.id.editText1);
		// 设置 button onclick事件
		button.setOnClickListener(this);
		/**
		 * 1.创建一个内部类 定义点击事件
		 * 
		 * button.setOnClickListener(new Mylistener());
		 * 
		 * 2.采用匿名内部类创建点击事件
		 * 
		 * button.setOnClickListener(new OnClickListener() {
		 * 
		 * @Override public void onClick(View v) { cellphone(); } });
		 * 
		 * 3. activity 实现点击事件的接口 一般项目中使用 
		 *           
		 * 4.xml文件中直接button 绑定 点击方法
		 * 
		 * 
		 */
		// 创建一个 点击事件方法
		OnClickListener clickListener = new OnClickListener() {

			@Override
			public void onClick(View v) {
				cellphone();
			}
		};

	}

	// 实现 点击事件接口
	private class Mylistener implements OnClickListener {

		@Override
		public void onClick(View v) {
			cellphone();

		}

	}

	// 拨打电话 流程
	private void cellphone() {
		String phonenumber = editText.getText().toString().trim();

		if (!TextUtils.isEmpty(phonenumber)) {
			// 意图信息传递
			Intent intent = new Intent();
			// 打电话
			intent.setAction(intent.ACTION_CALL);
			// 统一资源标识符(Uniform Resource Identifier)
			intent.setData(Uri.parse("tel:" + phonenumber));
			startActivity(intent);
		} else {
			Toast.makeText(MainActivity.this, "请输入正确电话号码", Toast.LENGTH_SHORT)
					.show();
		}
	}

	/**
	 * 第三种写法 一般项目中使用的第三种方法
	 */
	@Override
	public void onClick(View v) {
		switch (v.getId()) {

		case R.id.button1:
			cellphone();
			break;

		default:
			break;
		}

	}

	/**
	 * 第四种方法在布局文件中绑定一个点击方法
	 */
	public void adiButtonClicked(View view) {
		cellphone();
	}

}

第一种方法:

.创建一个内部类定义点击事件

第二种方法:

采用匿名内部类创建点击事件

第三种方法:

activity 实现点击事件的接口一般项目中使用

第四种方法:

需要在xml 中绑定

 

 

相关推荐