当前位置: 首页 > 编程日记 > 正文

Android入门——电话拨号器和4种点击事件

关于HelloWorld为,电话拨号程序还AndroidA入门demo,从这个样例我们要理清楚做安卓项目的思路。

大体分为三步:

    1.理解需求,理清思路

    2.设计UI

    3.代码实现

电话拨号器

1. 理解需求:

    *一个文本框——用来接收电话号码

    *一个button——用来触发事件

2. 设计UI

     

3. 代码实现

public class MainActivity extends Activity {private EditText et_number; //定义变量用来接收电话号码private Button btn;			//定义button@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置界面内容setContentView(R.layout.activity_main);//查找控件,文本输入框et_number= (EditText) findViewById(R.id.et_number);//找到按钮控件btn=(Button) findViewById(R.id.btn);//设置点击事件监听btn.setOnClickListener(new MyListener());}//内部类方式实现点击事件class MyListener implements OnClickListener{@Overridepublic void onClick(View v) {//运行拨号操作//1.获取用户输入的号码String number=et_number.getText().toString();//2.运行拨号操作//创建一个拨号意图Intent intent=new Intent();//设置要拨打的号码  (URL:统一资源定位符,uri:统一资源标识符)intent.setData(Uri.parse("tel://"+number));//设置动作,拨号动作intent.setAction(intent.ACTION_CALL);//跳转到拨号界面startActivity(intent);}    	}
}

代码写完以后,从配置文件里加入一下打电话权限CALL_PHONE就OK了。

上面的电话拨号器用了一种实现点击事件的方式,也是要介绍的第一种点击事件的方法:

四种点击事件实现方式

1.内部类方式

     (见上面电话拨号demo。只是多介绍)

2.创建匿名内部类方式

/*** 匿名内部类方式实现点击事件* @author Hugh*/
public class MainActivity extends Activity {private EditText et_number;private Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置界面内容setContentView(R.layout.activity_main);//查找控件,文本输入框et_number= (EditText) findViewById(R.id.et_number);//找到button控件btn=(Button) findViewById(R.id.btn);//设置点击事件监听btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {				//运行拨号操作//1.获取用户输入的号码String number=et_number.getText().toString();//2.运行拨号操作//意图Intent intent=new Intent();//设置要拨打的号码intent.setData(Uri.parse("tel://"+number));//设置动作,拨号 动作intent.setAction(intent.ACTION_CALL);//跳转到拨号界面startActivity(intent);}});}
}

3.实现OnClickListener接口的当前类对象

/*** 实现OnClickListener接口的当前类对象* @author Hugh*/
public class MainActivity extends Activity implements OnClickListener {private EditText et_number;private Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 设置界面内容setContentView(R.layout.activity_main);// 查找控件,文本输入框et_number = (EditText) findViewById(R.id.et_number);// 找到button控件btn = (Button) findViewById(R.id.btn);// 设置点击事件监听btn.setOnClickListener(this);}@Overridepublic void onClick(View v) {// 运行拨号操作// 1.获取用户输入的号码String number = et_number.getText().toString();// 2.运行拨号操作// 意图Intent intent = new Intent();// 设置要拨打的号码intent.setData(Uri.parse("tel://" + number));// 设置动作,拨号 动作intent.setAction(intent.ACTION_CALL);// 跳转到拨号界面startActivity(intent);}
}

4.在布局文件里给button加入一个单击事件的响应方法,然后在代码中实现这种方法

/短信群发器/res/layout/activity_main.xml   下定义xml中的属性android:onClick="call"<Buttonandroid:id="@+id/btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/et_number"android:layout_below="@+id/et_number"android:onClick="call"android:text="按下拨号" />

在代码中实现这种方法

public class MainActivity extends Activity {private EditText et_number;private Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 设置界面内容setContentView(R.layout.activity_main);// 查找控件,文本输入框et_number = (EditText) findViewById(R.id.et_number);}public void call(View view){;// 运行拨号操作// 1.获取用户输入的号码String number = et_number.getText().toString();// 2.运行拨号操作// 意图Intent intent = new Intent();// 设置要拨打的号码intent.setData(Uri.parse("tel://" + number));// 设置动作,拨号 动作intent.setAction(intent.ACTION_CALL);// 跳转到拨号界面startActivity(intent);}
}

   为Android学习,它需要不断的积累,坚实的基础命中。此博客被认为是启动,我会再次官方博客拾起,油。





相关文章:

DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子2

本文介绍使用Windbg去验证《DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子》中的结论&#xff0c;调试对象是文中刚开始那个例子。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 1 g 让程序运行起来 2 ctrlbreak 中断程序 3 ~ 查看…

从入门到深入:移动平台模型裁剪与优化的技术探索与工程实践

可以看到&#xff0c;通过机器学习技术&#xff0c;软件或服务的功能和体验得到了质的提升。比如&#xff0c;我们甚至可以通过启发式引擎智能地预测并调节云计算分布式系统的节点压力&#xff0c;以此改善服务的弹性和稳定性&#xff0c;这是多么美妙。而对移动平台来说&#…

我在不炎熱也不抑鬱的秋天,依然不抽煙

写过几次电影的观后感,挺过瘾.最近看到my little airport的那张新唱片,再也没有办法保持沉默了 为什么人家的唱片名都起的和小说一样,难得是为了证明听歌的人们都不喜欢动笔吗? 于是,我建了个类别,叫 我也会听歌.很明显,这里面会塞一些和歌相关的东西 这是第一篇

ubuntu安装redis的方法以及PHP安装redis扩展、CI框架sess使用redis的方法

为什么80%的码农都做不了架构师&#xff1f;>>> 再一次被网上那些教程误导后决定自己写一个。真心被那些奇怪的教程误导了好几次&#xff0c;之前研究其它东西的时候也是。蛋疼啊。 安装redis 直接用apt-get命令即可 sudo apt-get install redis-server 安装的时候…

浅谈数据库设计技巧

说到数据库&#xff0c;我认为不能不先谈数据结构。1996年&#xff0c;在我初入大学学习计算机编程时&#xff0c;当时的老师就告诉我们说&#xff1a;计算机程序&#xff1d;数据结构&#xff0b;算法。尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主&#xff0c;…

避免神经网络过拟合的5种技术(附链接) | CSDN博文精选

作者 | Abhinav Sagar翻译 | 陈超校对 | 王琦来源 | 数据派THU(ID:DatapiTHU)(*点击阅读原文&#xff0c;查看作者更多精彩文章&#xff09;本文介绍了5种在训练神经网络中避免过拟合的技术。 最近一年我一直致力于深度学习领域。这段时间里&#xff0c;我使用过很多神经网络&a…

DllMain中不当操作导致死锁问题的分析--加载卸载DLL与DllMain死锁的关系

前几篇文章一直没有在源码级证明&#xff1a;DllMain在收到DLL_PROCESS_ATTACH和DLL_PROCESS_DETACH时会进入临界区。这个论证非常重要&#xff0c;因为它是使其他线程不能进入临界区从而导致死锁的关键。我构造了在DLL被映射到进程地址空间的场景&#xff0c;请看死锁时加载DL…

LinearLayout增加divider分割线

2019独角兽企业重金招聘Python工程师标准>>> 在android3.0及后面的版本在LinearLayout里增加了个分割线 android:divider"drawable/shape"<!--分割线图片--> android:showDividers"middle|beginning|end" <!--分割线位置--> 分割线…

JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇

作者&#xff1a;雷神 QQ:38929568 QQ群&#xff1a;28048051JAVA游戏编程&#xff08;满&#xff09; 28047782&#xff08;将满&#xff09; 与前一款扫雷比较&#xff0c;这个游戏多了一个 类&#xff0c;用来显示动画&#xff0c;也是蛇要吃的物品类&#xff0c; 也有了代码…

DllMain中不当操作导致死锁问题的分析——线程中调用GetModuleFileName、GetModuleHandle等导致死锁

之前的几篇文章已经讲解了在DllMain中创建并等待线程导致的死锁的原因。是否还记得&#xff0c;我们分析了半天汇编才知道在线程中的死锁位置。如果对于缺乏调试经验的同学来说&#xff0c;可能发现这个位置有点麻烦。那么本文就介绍几个例子&#xff0c;它们会在线程明显的位置…

如何从菜鸡变成收割机,大厂面试的算法,你懂了吗?

是什么&#xff1f;让大厂面试显得逼格很高&#xff0c;是算法和数据结构吗&#xff1f;是的&#xff01;&#xff01;&#xff01;Google工程师曾总结过&#xff0c;大厂之所以爱考察算法和数据结构是因为&#xff1a;算法能力能够准确辨别一个程序员的技术功底是否扎实&#…

Ejabberd源码解析前奏--配置

一、基本配置 配置文件将在你第一次启动ejabberd时加载&#xff0c;从该文件中获得的内容将被解析并存储到内部的ejabberd数据库中&#xff0c;以后的配置将从数据库加载&#xff0c;并且任何配置文件里的命令都会被添加到数据库里。 需要注意的是&#xff1a;ejabberd从不编辑…

DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)

之前几篇文章主要介绍和分析了为什么会在DllMain做出一些不当操作导致死锁的原因。本文将总结以前文章的结论&#xff0c;并介绍些DllMain中还有哪些操作会导致死锁等问题。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; DllMain的相关特性 首先列出…

滴滴叶杰平:年运送乘客百亿次,AI如何“服务”出行领域?| BDTC 2019

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;“如果把北京一天滴滴的轨迹数据放在一起&#xff0c;要覆盖北京所有道路差不多四百次&#xff0c;数据非常大、非常完整。”超5.5亿用户&#xff0c;年运送乘客100亿人次&#xff0c;除了中国地区&#xff0c;滴滴也在…

分析部署无线局域网的关键要素

在部署无线局域网时需要考虑的关键问题包括&#xff1a;确定单个接入点的RF覆盖&#xff0c;保证足够的支持所有用户的容量&#xff0c;以及考虑RF信号损耗因素。  单个AP的覆盖   网络设计师必须通过研究AP的服务范围来决定单个AP的覆盖。数据速率是一种距离函数&#xff…

Delphi调用java开发的WebService,传入参数出错

http://www.cnblogs.com/zhangzhifeng/p/3397053.html 调用没有参数的服务正常,当调用有参数的服务出现以下错误java.util.concurrent.ExecutionException: java.lang.NullPointerException 另外加了RIO.HTTPWebNode.UseUTF8InHeader : True;InvRegistry.RegisterInvokeOptions…

B站收藏6.1w+!这门课拯救你薄弱的计算机基础

作者 | Rocky0429来源 | Python空间大家好&#xff0c;我是 Rocky0429&#xff0c;一个对计算机基础一无所知的蒟蒻...作为一个所谓的计算机科班出身的人来说&#xff0c;特别难为情的是自己的计算机基础很差&#xff0c;比如计算机网络当年一度差点挂掉&#xff0c;多亏当时…

一种不会导致资源泄露的“终止”线程的方法

在项目工程中&#xff0c;我们可能会使用第三方开发的模块。该模块提供一个接口用于完成非常复杂和耗时的工作。我们一般不会将该API放在UI线程中执行&#xff0c;而是启动一个线程&#xff0c;用工作线程去执行这个耗时的操作。&#xff08;转载请指明出于breaksoftware的csdn…

TCP/IP详解学习笔记(9)-TCP协议概述

终于看到了TCP协议&#xff0c;这是TCP/IP详解里面最重要也是最精彩的部分&#xff0c;要花大力气来读。前面的TFTP和BOOTP都是一些简单的协议&#xff0c;就不写笔记了&#xff0c;写起来也没啥东西。TCP和UDP处在同一层---运输层&#xff0c;但是TCP和UDP最不同的地方是&…

在windows程序中嵌入Lua脚本引擎--使用VS IDE编译Luajit脚本引擎

前些天听到一个需求&#xff1a;某业务方需要我们帮忙清理用户电脑上的一些废弃文件。同事完成这个逻辑的方案便是在我们程序中加入了一个很“独立”的业务逻辑&#xff1a;检索和删除某个程序产生的废弃文件。试想&#xff0c;该“独立”的逻辑之后会如何&#xff1f;被删掉&a…

优酷智能档在大型直播场景下的技术实践

作者 | 阿里文娱高级技术专家 肖文良 本文为阿里文娱高级技术专家肖文良在【阿里文娱2019双11猫晚技术沙龙】中的演讲&#xff0c;主要内容为如何通过优酷智能档&#xff0c;降低用户卡顿尤其是双11直播场景下&#xff0c;提升用户观看体验。具体包括智能档的落地挑战、算法架…

主题:CS0016: 未能写入输出文件“c:#92;WINDOWS#92;Microsoft.NET#92;***.dll”错误处理...

刚装完.NET环境&#xff0c;在编译时出现了如下错误&#xff1a; 编译器错误信息:CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\***\*****.dll”--“拒绝访问。” 错误的处理&#xff1a; 出现CS0016的原因一般是…

关于 android 加载 res 图片 out of memory 问题 解决 同样适用于 sd卡图片

2019独角兽企业重金招聘Python工程师标准>>> 发现android 加载res图片如果过多也会崩溃 android 也是使用 Bitmap bm BitmapFactory.decodeResourceStream(res, value, is, pad, opts); 来加载图片,不同他一般不会释放,如果图片太多就崩溃了 不过解决方法就更简…

近期必读的6篇NeurIPS 2019零样本学习论文

来源 | 专知&#xff08;ID:Quan_Zhuanzhi&#xff09; 【导读】NeurIPS 是全球最受瞩目的AI、机器学习顶级学术会议之一&#xff0c;每年全球的人工智能爱好者和科学家都会在这里聚集&#xff0c;发布最新研究。NIPS 2019大会已经在12月8日-14日在加拿大温哥华举行&#xff0c…

在windows程序中嵌入Lua脚本引擎--建立一个简易的“云命令”执行的系统

在《在windows程序中嵌入Lua脚本引擎--使用VS IDE编译Luajit脚本引擎》开始处&#xff0c;我提到某公司被指责使用“云命令”暗杀一些软件。本文将讲述如何去模拟一个简易的“云指令”执行系统。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 首先我们思考下…

oracle9i.rar下载

甲骨文数据库&#xff19;&#xff29;转载于:https://blog.51cto.com/263054/46968

每天一道算法题(24)——自定义幂函数pow

double myPower(double base, int exponent){if(exponent0)return 1;if(exponent1)return base;if(exponent-1)//当为是负数的情况return 1.0/base;double result1.0;resultmyPower(base,exponent>>1);result*result;if(exponent&1)//绝对值为奇数result*base;return…

在windows程序中嵌入Lua脚本引擎--编写自己的Lua库

在《在windows程序中嵌入Lua脚本引擎--建立一个简易的“云命令”执行的系统》一文中&#xff0c;我提到了使用Lua的ffi库&#xff0c;可以让我们像写C代码一样写lua程序。这是个非常令我们这些C程序员激动的事。但是我们使用ffi库写出来的程序往往比较大&#xff0c;因为我们可…

我的C#学习笔记(1)

1.基本类型&#xff1a;基本与C\C相同decimal decimal是一个128位的高精度浮点数。bool 注意的是bool类型只有true和faulse两个可取值&#xff0c;在C#中&#xff0c;不能将bool值强制转换为值。如&#xff0c;将true转换为1或将1&#xff0c;0转换为bool值都是不行的。Parse和…

区块链人才月均薪酬1.6W?

01在上周&#xff0c;我国宣布将重点推动区块链技术的发展&#xff0c;这个消息无疑是为区块链开发者们打了一针强心剂&#xff0c;简直是喜大普奔啊 &#xff01;因为之前区块链这个技术虽然一直在圈内很火&#xff0c;但是却没有得到国家的全面认可和推广&#xff0c;所以很多…