`
hmeng
  • 浏览: 15835 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

Android拨号器---熟练控件与布局的应用

阅读更多
    Android版的简易拨号器
实现的内容主要由界面布局设计和Activity的简单函数组成
首先是界面布局设计,最外层是垂直线性布局,分成三个部分:文本框,数字按键和功能键,在数字键部分采用网格布局,所有按钮用ImageButton。布局中控制界面比例自适应的方法在这里采用的是调节宽度或者长度的所占比重layout_weight。另外若需要使得界面去掉小标题,需要在AndroidMainfest.xml文件中在<activity里添加

 android:theme="@android:style/Theme.NoTitleBar"

并修改MainActivity所继承的类为Activity。
下面是我写的布局xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:gravity="center_vertical"
    android:orientation="vertical"
    android:paddingBottom="5dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingTop="5dp"
    tools:context="com.hm.mydialer.MainActivity"
    tools:ignore="MergeRootFrame" >


   <EditText
       android:id="@+id/editText1"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_gravity="right"
       android:layout_weight="2.5"
       android:background="@drawable/shape2"
       android:text=""
       android:textSize="40sp" />

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="8"
        android:background="@drawable/background2" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1" >

            <ImageButton
                android:id="@+id/imageButton1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n1"
                android:tag="1" />

            <ImageButton
                android:id="@+id/imageButton2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n2"
                android:tag="2" />

            <ImageButton
                android:id="@+id/imageButton3"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n3"
                android:tag="3" />

        </TableRow>

        <TableRow
            android:id="@+id/TableRow01"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" 
            >

            <ImageButton
                android:id="@+id/ImageButton01"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n4"
                android:tag="4" />

            <ImageButton
                android:id="@+id/ImageButton02"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n5"
                android:tag="5" />

            <ImageButton
                android:id="@+id/ImageButton03"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n6"
                android:tag="6" />

        </TableRow>

        <TableRow
            android:id="@+id/TableRow02"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >

            <ImageButton
                android:id="@+id/ImageButton04"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n7"
                android:tag="7" />

            <ImageButton
                android:id="@+id/ImageButton05"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n8"
                android:tag="8" />

            <ImageButton
                android:id="@+id/ImageButton06"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n9"
                android:tag="9" />

        </TableRow>

        <TableRow
            android:id="@+id/TableRow03"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" 
           >

            <ImageButton
                android:id="@+id/ImageButton07"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/star"
                android:tag="*" />

            <ImageButton
                android:id="@+id/ImageButton08"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/n0"
                android:tag="0" />

            <ImageButton
                android:id="@+id/ImageButton09"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:background="@drawable/touch2"
                android:onClick="telNumber"
                android:src="@drawable/sharp"
                android:tag="#" />

        </TableRow>
    </TableLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@drawable/shape3"
        android:layout_weight="2" >

        <ImageButton
            android:id="@+id/imageButton4"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/touch2"
            android:onClick="addContacts"
            android:src="@drawable/add_n" />

        <ImageButton
            android:id="@+id/imageButton5"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/touch"
            android:onClick="call"
            android:src="@drawable/dialpad" />

        <ImageButton
            android:id="@+id/imageButton6"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/touch2"
            android:onClick="delete"
            android:src="@drawable/delete_n" />

    </LinearLayout>

</LinearLayout>


在MainAcvivity中包括几个重要的函数来实现其功能,数字键的监听方法,使文本框能显示所按下的数字;删除最后一位号码的方法;拨打电话的方法,此方法需要在AndroidMainfest.xml文件中添加拨号的权限:在<manifest里添加
 <uses-permission android:name="android.permission.CALL_PHONE" />

还有添加联系人的方法,播放背景音乐的功能等
public class MainActivity extends Activity {
	private EditText editNumber;
	private String number;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// 全屏
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);
		// 关联布局
		setContentView(R.layout.activity_main);
		// 找到界面中的TextView
		editNumber = (EditText) findViewById(R.id.editText1);
		//音乐
		addMusic(this);
	
	}
	/*退出
	 */
	public void onBackPressed() {
		stopMusic();
		super.onBackPressed();
		System.gc();
	}

	/*
	 * 数字号码的监听方法
	 */
	public void telNumber(View view) {
		// 给TextView添加号码
		editNumber.append(view.getTag().toString());

	}

	/*
	 * 删除最后一位号码的方法
	 */
	public void delete(View view) {
		// 从TextView获取号码
		number = editNumber.getText().toString();
		// 字符长度大于1,则删除最后一位
		if (number.length() > 0)
			// 显示号码
			editNumber.setText(number.substring(0, number.length() - 1));
	}

	/*
	 * 拨打电话的方法
	 */
	public void call(View view) {
		// 从TextView获取号码
		number = editNumber.getText().toString();
		// 字符长度小于1,则返回
		if (number.length() > 0) {
			// 若不能通过验证
			if (!check(number)) {
				Toast.makeText(this, "请输入规范的号码!", 3000).show();
				;
				return;
			}
			// 实例化对象
			Intent callIntent = new Intent();
			// 设置拨打命令
			callIntent.setAction(Intent.ACTION_CALL);
			// 设置拨打号码
			callIntent.setData(Uri.parse("tel:" + number));
			// 开始执行命令
			startActivity(callIntent);
		} else {
			Toast.makeText(this, "请先输入号码!", 3000).show();
			;
		}
	}

	/*
	 * 添加联系人
	 */
	public void addContacts(View view) {
		// 从TextView获取号码
		number = editNumber.getText().toString();
		if (number.length() > 0) {
			// 系统界面跳转
			Intent it = new Intent(Intent.ACTION_INSERT, Uri.withAppendedPath(
					Uri.parse("content://com.android.contacts"), "contacts"));
			it.setType("vnd.android.cursor.dir/person");
			// 联系人姓名
			it.putExtra(android.provider.ContactsContract.Intents.Insert.NAME,
					"");
			// 手机号码
			it.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE,
					number);
			startActivity(it);
		}

	}

	/*
	 * 正则表达式验证手机号码
	 */
	public boolean check(String number) {
		Pattern pattern = Pattern.compile("[0-9]*");
		Matcher matcher = pattern.matcher(number);
		if (matcher.matches())
			return true;
		return false;

	}

	/*
	 * 音乐
	 */
	public MediaPlayer player = null;

	public void addMusic(Context context) {
		player = MediaPlayer.create(context, R.raw.l1);
		player.setLooping(true);
		player.start();
	}

	public  void stopMusic() {
		player.stop();
	}

}

界面效果图

另上传了HM拨号器apk
  • 大小: 70.2 KB
0
2
分享到:
评论

相关推荐

    Android 拨号器.zip

    1. **UI 设计**:Android拨号器的用户界面遵循Material Design设计规范,提供清晰的布局和直观的交互。通常包含数字键盘、联系人列表、通话记录等功能区域。开发者需要熟练掌握XML布局语言,以及对Android的视图控件...

    android拨号器与短信器功能的小软件源码

    综上所述,这个"android拨号器与短信器功能的小软件源码"项目涵盖了Android应用开发的多个核心方面,对于理解Android系统的运作机制和提升开发者技能非常有帮助。通过研究和实践,开发者不仅可以掌握基本的编程技巧...

    Android拨号界面

    二、Android拨号器API 1. `Dialer`类:在Android源代码中,拨号界面的核心类通常是名为`Dialer`的类。这个类实现了界面的布局和逻辑,包括与系统服务的交互,如电话服务和联系人服务。 2. `Intent`和`...

    android拨号键盘及来去电监听

    总的来说,实现"android拨号键盘及来去电监听"的功能,开发者需要掌握以下几个关键技术点: 1. 自定义视图设计:创建拨号键盘布局,处理按钮点击事件。 2. 使用`Intent`进行拨号操作:创建`ACTION_CALL`的`Intent`...

    Android电话号码拨号器

    在Android系统中,电话号码...通过研究这个项目,开发者不仅可以了解到Android拨号器的基本实现,还能深入理解Android应用的权限管理、Intent机制以及UI设计等核心概念。同时,注释的存在使得学习过程更加清晰易懂。

    安卓拨号器

    【安卓拨号器】是一款基于Android操作系统的应用,它的核心功能是为用户提供便捷的电话拨打、联系人管理和短信发送服务。这款应用的源代码对于学习和理解Android开发,特别是通讯录管理和电话功能集成的开发者来说,...

    android应用程序开发

    总结,开发Android应用程序,尤其是涉及手机通信录功能的应用,需要掌握Android开发的基本技术,如布局设计、数据库操作、Intent服务的使用以及用户交互的处理。同时,充分的测试和调试也是保证应用质量的关键步骤。...

    Android自定义滑动接听电话控件组

    在Android开发中,自定义滑动接听电话控件组是一种常见的功能实现,它为用户提供了一种直观、便捷的接听电话方式。这样的控件通常由一个显示来电信息的界面和一个可滑动的接听/挂断按钮组成。在这个场景中,我们将...

    Android开发编程从入门到精通——Android程序员必备

    - 使用Intent启动系统默认的拨号器应用。 - 通过编写代码实现从应用程序内部拨打号码的功能。 - 修改AndroidPhoneDialer项目,实现更复杂的功能。 #### 七、UI控件与布局 - **常见UI控件**: - 列表(List)、...

    Android应用开发基础习题集.doc

    - 应用程序层:包含所有用户可见的应用,如拨号器、浏览器、邮件客户端等,它们都是基于应用框架层的API来开发的。 2. 开发环境搭建: - 首先,需要安装JDK,并配置好环境变量,以便Java编译器正常工作。 - 下载...

    开始使用 Xamarin.Android 开发 Android 应用

    ### 开始使用 Xamarin.Android 开发 Android 应用 #### Xamarin.Android 概述 Xamarin.Android 是一个基于 .NET 的框架,允许开发者使用 C# 语言和 .NET Framework 构建高性能、原生的 Android 应用。它为开发者...

    Android电话拨号器实例详解

    Android 电话拨号器实例是 Android 开发中的一种常见的应用场景,通过本文,我们将详细介绍如何实现 Android 电话拨号器实例,并提供了一些有价值的参考信息。 一、做界面 UI 在 Android 开发中,做界面 UI 是一项...

    Android代码-闪讯无线助手

    7. **UI设计**:应用的用户界面(UI)设计应该直观易用,遵循Material Design设计规范,使用Android提供的布局和控件,或者自定义View。 8. **调试与日志**:开发过程中会使用Logcat进行调试,记录关键操作的日志...

    Android代码-Android简易通讯录程序.rar

    在通讯录应用中,Intent可能被用来启动新的Activity(如添加新联系人),或者传递联系人信息到系统拨号器进行通话。 6. **布局文件**: 应用的用户界面通常由XML布局文件定义。在这个项目中,可能包含多个布局文件,...

Global site tag (gtag.js) - Google Analytics