技术标签: android开发 layout Android基础知识学习系列 国际化 Android textview
目标,实现简单的电话拨号功能。
首先,可以看到上边有几个控件,上边有几个文字。
在我们建立好了工程之后,我们首先可以在res目录下的values目录的strings.xml中把这几个文字添加进去,为了更好地实现国际化。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">电话拔号器</string>
<string name="mobile">请输入手机号</string>
<string name="button">拔号</string>
</resources>
接下来,我们需要实现这个Activity窗口。可以看出,这个界面中有三个组件:第一行的”请输入手机号“,第二行的手机号文本框,第三行的“拨号”按钮。
所以,我们在res目录下的layout目录的main.xml配置文件中添加这几个组件:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/mobile"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/mobile"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button"
android:id="@+id/button"
/>
做到这里的时候,界面就是已经做好了。
这个时候,我们需要通过java来实现这个拨号器的拨号功能了:
我们需要编写MainActivity.java:
package cn.itcast.phone;
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 MainActivity extends Activity {
private EditText mobileText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mobileText = (EditText) findViewById(R.id.mobile);//获得文本输入框:通过main中的id为mobile的属性
Button button = (Button) this.findViewById(R.id.button); //获得Button
button.setOnClickListener(new ButtonClickListener());//设置点击事件的监听器
}
private final class ButtonClickListener implements View.OnClickListener{
public void onClick(View v) { //默认实现方法,当按钮被点击就会被调用
String number = mobileText.getText().toString(); //通过文本输入框,获得文本输入框的值
Intent intent = new Intent(); //得到一个意图对象
intent.setAction("android.intent.action.CALL"); //传递动作名称
intent.setData(Uri.parse("tel:"+ number)); //传递数据
startActivity(intent);//方法内部会自动为Intent添加类别:android.intent.category.DEFAULT
}
}
}
我们来分析下程序的过程:
首先,调用setContentView(R.layout.main);来获得main窗口,然后通过findViewById(R.id.mobile)获得在main.xml中id为mobile的文本输入框。
接下来,通过findViewById(R.id.button);获得在main.xml中id为button的按钮。
继续,用setOnclickListener(new ButtonClickListener());来设置点击事件的监听器。
再下边,我们需要编写一个ButtonClickListener()类,用final来标记不能够被继承。
在这个类中添加未被实现的方法,当点击的时候会被调用:Onckick(View v)。
在方法中,调用mobileText.getText().toString()来获得文本框输入的手机号码。
然后,通过intent传递拨打电话的动作名称:“android.intent.action.CALL"
通过intent传递数据:intent.setDate(Uri.parse("tel:"+number));
接下来开启intent意图。
因为拨打电话涉及到数据的隐私,所以我们需要在AndroidMainfest.xml中添加一个安全控制:
<uses-permission android:name="android.permission.CALL_PHONE"/>
文章浏览阅读6.6k次。在做android项目时,我们经常需要从本地或者网络读取图片,并转换为Bitmap图片,以便使用,下面是读取本地图片并转换的方法:Java代码 /** * 得到本地或者网络上的bitmap url - 网络或者本地图片的绝对路径,比如: * * A.网络路径: url="http://blog.foreverlov_java 读取网页图像到bitmap
文章浏览阅读9.8k次,点赞7次,收藏118次。多功能ALU设计实验一、实验目的与要求实验目的:(1)学习多功能ALU的工作原理,掌握运算器的设计方法(2)掌握运用Verilog HDL 进行行为描述与建模的技巧和方法实验要求:本实验要求设计一个具有8种运算功能的32位ALU,并能够产生运算结果的标志:结果为零标志ZF(Zero Flag)、溢出标志OF(Overflow Flag)。ALU通过3根控制线ALU_OP[2:0]..._设计一个具有8种运算功能的32位alu实验总结
文章浏览阅读484次,点赞10次,收藏5次。列表加载图片通常使用UITableView或UICollectionView,由于列表中内容数量不确定并且对于图片质量要求也不确定,所以对于图片加载的优化是很有必要的。
文章浏览阅读1k次,点赞2次,收藏16次。智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车就是其中的一个体现,本次设计的多功能智能灭火避障小车,以STC89C52单片机作为微控制器,设计出一种可以寻找火源(火源以蜡烛模拟)和自动避开障碍物的小车。通过光敏晶体管传感器检测火源信号当检测到火源,小车自动调整姿态,对准火源。灭火电机启动将蜡烛吹灭实现模拟灭火。通过红外光电开关感应控制小车避障行驶。工作状态实时显示在1602液晶上。_灭火小车设计方案
文章浏览阅读4.6k次。从网上搜到的方法都解决不了我的问题,分享一点我自己的实在的解决经验:养成保存快照的习惯,比什么方法都靠谱。 即打开VMWare->虚拟机->快照->拍摄快照,简单填写一下你现在做到的程度,然后点击拍摄快照,存一下,养成习惯,每做出些什么东西了,就存一个快照,哪天莫名其妙又死机了,开机又黑屏进不去了,直接用快照恢复到最近的进度继续做就好。..._ubuntu卡死之后重启,打不开了
文章浏览阅读273次,点赞3次,收藏8次。Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
文章浏览阅读351次。在Qt应用程序中,执行命令行命令并获取输出结果可以使用QProcess类。现在,我们可以在Qt应用程序中调用这个函数来执行命令行命令并获取输出结果。现在,我们可以在Qt应用程序中调用这个函数来执行命令行命令并获取输出结果。在上面的示例中,我们将命令设置为"dir",这将列出当前目录的内容。在上面的示例中,我们将命令设置为"dir",这将列出当前目录的内容。这样,当我们点击按钮时,程序将执行命令并将输出结果显示在文本编辑器中。这样,当我们点击按钮时,程序将执行命令并将输出结果显示在文本编辑器中。_qt.createqprocess()
文章浏览阅读216次。最近在看日志的一些东西,发现利用JDK自带的log也可以简单的实现日志的输出,将日志写入文件的过程记录如下:1、新建LogUtil.Java(里面写了几个静态方法,为log设置等级、添加log控制台handler、添加log文件输出handler)packagecn.darkranger.log.logger;importjava.io.IOException;importjava.text.S..._logutil.java
文章浏览阅读221次。scala安装时,此时不应有 \scala\bin…\lib\jline-2.14.5.jar那是因为安装Scala时,默认安装到Program Files (x86)或者Program Files下,但是这俩个文件夹命名存在空格,这是从新安装,选择没有空格存在的文件夹下面即可。谢谢..._c:\users\dell>scala 此时不应有 \scala\bin\..\lib\jline-2.14.5.jar
文章浏览阅读1.7k次。在本地创建一个用于存储Docker镜像的目录,比如 /data/docker-registry。如果需要加速拉取公共镜像,可以配置阿里云或DaoCloud等国内提供的Docker镜像加速器。如果需要在其他机器上访问该私有仓库,则需要配置证书。使用docker tag将本地构建好的镜像打标签,并推送到私有仓库中。在官网下载Docker安装包进行安装,具体操作方式可以参考官方文档。至此,本地Docker仓库搭建完成。配置客户端访问证书(可选)拉取Registry镜像。启动Registry容器。_本地安装docker
文章浏览阅读2w次。使用docker stop停止一个容器docker stop可以用来终止一个正在运行的容器。它的命令格式如下:docker stop [OPTIONS] Container [Container …]其中:docker stop: Docker停止容器的命令关键词;OPTIONS:命令选项,其中-t指定等待多少秒后如果容器还没终止,就强行停止,默认等待10秒;Container:需要启动的容器,该容器用“容器ID”或“容器名”表示,如果指定了多个容器,那么就将这些容器都启动。例如想要停止一个名_docker停止运行中的容器