十、Android学习第九天——小结(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html)
十、Android学习第九天——小结
通过这段时间的学习,今晚上来做个小小的总结~~~
最早之前我们就了解到,Android四个重要的部分:
一、Activity —— 门面,就是我们看到的用户界面
二、Intent —— 在整个应用程序间传送数据
三、Service —— 不可见,为整个应用程序提供一个服务支持
四、Content Provider —— 为应用程序提供数据的接口
至此,这四个重要的部分我们都已经有了初步的认识。但是并不是每一个Android应用程序都需要这四个部分,这不是必需的。某些时候,我们只需要这四种中的几种组合成我们的应用。
Activity
至此,Activity我们已经很清楚了,需要注意的是Activity的使用,需要在Manifest.xml中进行注册。
Intent
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、数据、附加数据进行描述,Android则根据这些Intent的描述,负责找到相应的组件,将Intent传递给调用的组件,并完成对组件的调用。
Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起的是一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
理解Intent的关键之一是理解Intent的两种基本用法:
1、显式的Intent——即在构造Intent对象的时候就指定接受者
2、隐式的Intent——在构造Intent对象时,并不知道也并不关心接受者是谁,有利于降低发送者与接受者之间的耦合。
以下是Intent几种常用的用法:
Intent intentOne = new Intent(IntentActivity.this,
ResultActivity.class);
IntentActivity.this.startActivity(intentOne);
------------------------------------------------------------------------
Intent intentTwo = new Intent(IntentActivity.this,
ResultActivity.class);
// 把数据放到Bundle中,进行传递
Bundle bundle = new Bundle();
bundle.putString("name", "chenzheng");
// intent.putExtra可以用来放键值对
intentTwo.putExtras(bundle);
IntentActivity.this.startActivity(intentTwo);
------------------------------------------------------------------------
// ..............对于数据接收................
Bundle resultBundle = getIntent().getExtras();
String name = resultBundle.getString("name");
------------------------------------------------------------------------
Intent resultIntent = getIntent();
Bundle resultBundleTwo = new Bundle();
resultBundleTwo.putString("name", "This is from ShowMsg");
resultIntent.putExtras(resultBundleTwo);
setResult(RESULT_OK, resultIntent);
Service
Service是一个应用程序组件
Service没有图形化界面
Service通常用来处理一些耗时比较长的操作,例如下载,播放MP3文件等操作。
可以使用Service更新ContentProvider,发送Intent以及启动系统通知等等。
我们要注意,Service不是一个单独的进程,也不是一个线程。
这里别忘记写完一个Service要去Manifest.xml中进行注册。
ContentProvider
应用程序能够将它们的数据保存到文件中、SQL数据库中、甚至是任何有效的设备中。当你想将你的数据与其他应用共享时,Content Provider就将变的很有用了。一个Content Provider类实现了一组标准的方法,从而能够将其他的应用保存或者读取此Content Provider处理的各种数据类型。
--------------------------------------------------------------------------
Toast
俺一直对这个Toast很有兴趣,所以从网上找了个例子自己练习了下,与大家分享:
下面的例子一共有五种Toast的用法
第一种:默认样式
// 默认的Toast样式
Toast.makeText(ToastActivity.this, "默认Toast样式", Toast.LENGTH_SHORT)
.show();
运行结果如下:

第二种:自定义显示位置
// 自定义位置的Toast
Toast toast = Toast.makeText(ToastActivity.this, "自定义位置的Toast",
Toast.LENGTH_LONG);
// 自定义Toast的显示位置
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
运行结果如下:

第三种:带图片的Toast
// 带图片的Toast
Toast toast = Toast.makeText(ToastActivity.this, "带图片的Toast",
Toast.LENGTH_LONG);
// 设置Toast的显示位置
toast.setGravity(Gravity.CENTER, 0, 0);
LinearLayout toastView = (LinearLayout) toast.getView();
System.out.println("getApplicationContext:"
+ getApplicationContext());
ImageView imageCodeProject = new ImageView(getApplicationContext());
// 找到需要显示的图片文件
imageCodeProject.setImageResource(R.drawable.mickey);
toastView.addView(imageCodeProject, 0);
toast.show();
运行结果如下:

第四种:完全自定义的Toast
// 完全自定义的Toast,每一个选项都需要我们去手动设置
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom,
(ViewGroup) findViewById(R.id.llToast));
ImageView image = (ImageView) layout
.findViewById(R.id.tvImageToast);
image.setImageResource(R.drawable.mickey);
TextView title = (TextView) layout.findViewById(R.id.tvTitleToast);
title.setText("Attention");
TextView text = (TextView) layout.findViewById(R.id.tvTextToast);
text.setText("完全自定义Toast");
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
运行结果如下:

第五种:其他线程
// 其他线程的Toast
new Thread(new Runnable() {
@Override
public void run() {
showToast();
}
}).start();
public void showToast() {
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "我来自其他线程!",
Toast.LENGTH_SHORT).show();
}
});
}
运行结果如下:

十、Android学习第九天——小结(转)的更多相关文章
- 十一、Android学习第十天——项目开始(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...
- 二十六个月Android学习工作总结【转】
原文:二十六个月Android学习工作总结 1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍. 2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该 ...
- 【转】Pro Android学习笔记(三十):Menu(1):了解Menu
目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...
- 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner
目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...
- 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView
目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...
- Android学习路线(二十四)ActionBar Fragment运用最佳实践
转载请注明出处:http://blog.csdn.net/sweetvvck/article/details/38645297 通过前面的几篇博客.大家看到了Google是怎样解释action bar ...
- 【转】 Pro Android学习笔记(八十):服务(5):访问远程服务
目录(?)[-] Client的AIDL文件 Client的代码 建立连接 请求服务 断开连接 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://bl ...
- 【转】 Pro Android学习笔记(七十):HTTP服务(4):SOAP/JSON/XML、异常
目录(?)[-] SOAP JSON和XMLPullParser Exception处理 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog. ...
- 【转】 Pro Android学习笔记(六十):Preferences(4):MultiSelect List Preference
目录(?)[-] XML文件 在设备中保存 读出信息 ListPreference提供单选列表,我们可以通过CheckBoxPreference提供多选列表.此外,Android在3.0后提供Mult ...
随机推荐
- Spring Security
ntercept-url中access配置 IS_AUTHENTICATED_ANONYMOUSLY 允许匿名用户进入 IS_AUTHENTICATED_FULLY 允许登录用户进入 IS_AUTHE ...
- 字符串模板替换方法 MessageFormat.format
String content = "ab,cc,{名称},{密码},{日期},dd,ff"; String array[] = {userName, password, forma ...
- tomcat 5.5、6、7各版本的web-app标准
刚把上周说的公司内各工程的web.xml给统一了,顺便看了下每个tomcat版本对应的标准servlet版本,如下: The XSD version is preferred since JSP 2. ...
- 十一个行为模式之责任链模式(Responsible Chain Pattern)
定义: 将具有相同接口的责任类串行在一起,解耦请求的发送者和处理者.沿着这条链进行请求,直到有对象处理它为止. 结构图: Handler:抽象处理类,定义了所有责任类处理方法的接口,不同的处理方法在子 ...
- java内存模型-锁
锁的释放-获取建立的 happens before 关系 锁是 java 并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息.下面是锁释放-获取的示 ...
- jquery messagetip信息语提示控件
编写原因: 作为提示框,jquery有个messagebox的控件,也就是弹出的提示框.但这个控件如果不是用在需要确认的时候,单单警告提示.消息提示.失败提示时,用户还需要去点下确认,有时这操作还是挺 ...
- 第一次写jquery插件,来个countdown计时器吧
之前同学做个购物商城秒杀活动需要计时器的功能,在用jquery提供的countdown插件时,一直报错,貌似还需要依赖除jquery之外的其他插件,搞了半天也没搞成功,就叫我帮忙写个.然而我并没有写过 ...
- ArcSDE安装注意事项
今天因为测试需要配置环境,因此在本机上安装了ArcSDE 9.3 for Oracle11g,但是发现安装完之后服务(esri_sde)出现了启动后又立马停止的问题,解决方法如下: 1)检查Oracl ...
- JEPF 3.1.2 发布,我们的软件机床(软件快速开发平台)
JEPF新一代软件快速开发平台(Java Elephant Platform)是一款优秀的平台产品,它本着灵活.快捷开发.高性能.高协作性.高稳定性.高可用性.人性化的操作体验为设计宗旨历经2年研发成 ...
- 【Android市场】提交应用的一点经验分享
前言 如果只有一个或者少许的两三个Android市场,本文也没用存在的必要性,本文谨献给同在Android奋战的同仁. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnbl ...