——基于上学期的学习和期末总结
分层架构
应用程序层、应用程序框架层、系统运行库层、Linux核心层
函数库与运行时:Android包含一套被不同组件所使用的C/C++库的集合
DDMS:监视Android系统中的进程、堆栈信息,查看logcat日志,实现端口转发服务和屏幕截图功能,模拟电话呼叫和SMS短信,以及浏览Android模拟器文件系统等
连接真实Android设备:【设置】 -- 【应用程序】 -- 【开发】 -- 【USB调试】
Android SDK 目录文件夹
intent---组件通信
对于不同的组件,Android系统提供了不同的Intent发送机制进行激活。
-
Intent对象可以传递给
Context.startActivity()
或Activity.startActivityForResult()
方法来启动Activity或者让已经存在的Activity去做其他任务。(Intent对象也可以作为Activity.setResult()
方法的参数,将信息返回给调用startActivityForResult()
方法的Activity) -
Intent对象可以传递给
Context.startService()
方法来初始化Service或者发送新指令到正在运行的Service。类似的,Intent对象可以传递Context.bindService()
方法来建立调用组件和目标Service之间的链接。它可以有选择的初始化没有运行的服务。 -
Intent对象可以传递给
Context.sendBroadcast()
、Context.sendOrderedBroadcast()
或Context.sendStickyBroadcast()
等广播方法,使其被发送给所有感兴趣的BroadcastReceiver。
1、创建并配置Activity
-
Activity一般是继承android.app包中的
Activity
类,在不同的应用场景下,也可以继承Activity
的子类 -
重写需要的回调方法。通常情况下,都需要重写
onCreate()
方法,并且在该方法中调用setContentView()
方法设置要显示的视图。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
}
2、启动Activity
1.显示启动
(1)需要创建Intent对象,可以使用下面的语法格式。
Intent intent = new Intent(Context packageContext, Class<?> cls)
(2)应用startActivity()
方法来启动Activity
。startActivity()
方法的语法格式如下:
public void startActivity (Intent intent)
2.隐式启动
-
展示一个网页,就可以调用系统的浏览器来打开这个网页
Intent intent = new Intent(); // 创建Intent对象
intent.setAction(Intent.ACTION_VIEW); // 为Intent设置动作
intent.setData(Uri.parse("http://www.baidu.com")); // 为Intent设置数据
startActivity(intent); // 将Intent传递给Activity
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.baidu.com")); // 创建Intent对象
startActivity(intent); // 将Intent传递给Activity
3、使用Bundle在Activity之间交换数据
-
Bundle是一个字符串值到各种Parcelable类型的映射,用于保存要携带的数据包。也可理解为Bundle是一个key-value(键-值)对的组合。我们可以根据其中的key来获取具体的内容(value)。
1、将数据存放在Bundle对象中
Bundle bundle=new Bundle(); //创建并实例化一个Bundle对象
bundle.putCharSequence("user", user); //保存用户名
bundle.putCharSequence("pwd", pwd); //保存密码
//将Bundle对象添加到Intent对象中
intent.putExtras(bundle);
2、获取传递过来的字符串类型的用户名和密码。
Intent intent=getIntent(); //获取Intent对象
Bundle bundle=intent.getExtras(); //获取传递的数据包
bundle.getString("user"); //获取输入的用户名
bundle.getString("pwd"); //获取输入的密码
4、调用另一个Activity并返回结果
-
startActivityForResult (Intent intent, int requestCode)
方法
public void startActivityForResult (Intent intent, int requestCode)
-
setResult (int resultCode, Intent data)
方法
public final void setResult (int resultCode, Intent data)
-
onActivityResult(int requestCode, int resultCode, Intent data)
方法
protected void onActivityResult(int requestCode, int resultCode, Intent data)
Service应用
bindService()方法启动服务时,服务会自动与组件绑定
bindService(Intent service, ServiceConnection conn, int flags)
Intent service:用于指定要启动的Service
ServiceConnection conn:用于监听调用者与Service之间的连接状态
int flags(标志位):用于指定绑定时是否自动创建Service
当调用onUnbind()方法时,服务会被销毁
sharedPreferences
// 通过Activity的方式调用sharedPreference,MODE_PRIVATE默认方式能被所有app读取
sharedPreferences = getPreferences(MODE_PRIVATE);
// 加入K-V对
editor = sharedPreferences.edit();
editor.putString("name", "讯方通信技术有限公司");
editor.commit();
Toast.makeText(this, "写入成功!", Toast.LENGTH_SHORT).show();
自动完成文本框AutoCompleteTextView
android:completionThreshold | 指定用户至少输入几个字符才会显示提示,默认为2 |
android:ems | 设置输入字符的长度。当设置该属性后,控件显示的长度就为此长度,超出的部分将不显示 |
创建适配器
// 创建一个ArrayAdapter适配器,显示列表项
ArrayAdapter<String> adapter =new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,COUNTRIFS);
// 自动完成文本框与适配器关联
autoCompleteTextView.setAdapter(adapter);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {/*...*/}
进度条ProgressBar -- 通过style属性为ProgressBar指定风格
XML属性 | 说 明 |
---|---|
android:max | 设置该进度条的最大值 |
android:progress | 设置该进度条的已完成进度值 |
ProgressBar的常用方法有以下两个:
-
SetProgress(int):设置进度的完成百分比。
-
IncrementProgressBy(int):设置进度条的进度增加或减少量。参数为整数增,为负数减。
拖动条SeekBar
// 添加拖动条修改监听器
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
result.setText("当前值:"+arg1); //设置文本框显示当前值
}
星级评分条RatingBar
XML属性 | 说 明 |
---|---|
android:isIndicator | 设置该星级评分条是否允许用户改变(true为不允许) |
android:numStars | 设置该星级评分条总共有多少个星 |
android:rating | 设置该星级评分条默认的星级 |
android:stepSize | 设置每次最少需要改变多少星级,默认0.5个 |
getRating():用于获取等级,表示选中了几颗星。
getStepSize():用于获取每次最少要改变多少个星级。
getProgress():用于获取进度,获取到的进度值= getRating()*getStepSize()。
1、直接使用ListView组件创建ListView
2、让Activity继承ListActivity实现列表
// 获取listView组件
final ListView listView = (ListView) findViewById(R.id.listView1);
// 为listView组件,设置header view
listView.addHeaderView(line());// 采用指定的图像视图,绘制header view
//将适配器与ListView关联
ListView.addFooterview(line());
//为ListView组件,设置footer view
ListView.setOnItemClickListener(new OnItemClickIistener(){
//为ListView组件,设置单击选择项时间监听器
@Override
public void onItemClick (AdaptView<?>parent, View arg1, int pos,long id) {/*..*/}
菜单文件路径:res目录下的menu文件夹
//解析菜单文件
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.contextmenu, menu);