赞
踩
Android复习
1. Android的体系结构
底层Linux库
核心类库
Application应用程序框架层
应用程序
2. 项目的目录解析
.idea:AS生产的配置文件
app:AS创建工程的一个Modeule
gradle:构建工具系统的jar和wrapper等
build:构建目录
libs:依赖包
src:源码
main:主文件
res:资源文件
layout:app布局及界面元素配置
menu:app菜单配置
ic_launcher-wed.png:app图标
3、 日志工具的使用 Log 5个级别
Log.v:各种各样的信息
Log.d : bug 信息
Log.i : 调试信息
Log.w : warn信息
Log.e : error信息
4、 电话拨号器 拨号的权限 (网络的权限)
AndroidManifest.xml中添加权限
< uses-permission android:name="android.permission.CALL_PHONE"/>
5、 按钮的点击事件 4种
匿名内部类
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
自定义单击事件监听类
btn1.setOnClickListener(new MyClickListener());
class MyClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
实现OnClickListener接口,重写onclick方法
public class TestButtonActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
布局文件button的属性和代码方法名一致
xml文件
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Button1" />
public class TestButtonActivity extends Activity { Button btn1; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); } // 注意 这里没有 @Override 标签 public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } }
6、 常用的控件
TextView 显示文本文字
ImageView显示图片
EditText文本输入框
Button按钮
RadioButton单选框
7、 常用的控件的属性
id唯一的
layout_height高度
layout_width宽度
wrap_content:当前控件大小能包含控件的内容
match_parent:当前控件和父布局大小一致
android:text:控件的内容,文本文字
android:textSize:字体的大小
android:textColor:字体颜色
android:textStyle:字体格式
android:gravity:文本显示位置
android:hint:输入提示
button的属性 click/onclick
8、 布局文件
线性布局LiearLayout
设置属性“android:orientation”控制方向,
属性值垂直(vertical)和水平(horizontal),默认水平方向。
;
对齐方式:
android:gravity
android:layout_gravity
gravity常用的属性值center
center_horizontal水平居中
center_verical垂直居中
layout_weight 当高度或宽度属性值为0时,搭配weight使用,显示比例2:1
相对布局RelativeLayout
layout_ center_horizontal 水平居中
layout_center_verica 垂直居中
layout_center 正中间的位置
layout_alignParentRight 在父元素的右边
layout_below 在某一元素的下方,后面跟的是id
layout_above 在某一元素的上方
layout_toLeftOf 在某一元素的左边
layout_toRightOf 在某一元素的右边
ListView元素
三要素
id
layout_height 高度和layout_width宽度通常设置math_parent
ListView不能直接将数据显示在屏幕上,而需要一个桥梁,就是适配器Adapter。
listView会调用setAdapter(),把创建好的适配器传递出去,这样就可以显示数据了。
Adapter
数组适配器 ArrayAdapter
自定义适配器 BaseAdapter
public class MyAdapter extends BaseAdapter { public MyAdapter(List<Message> datas, Context mContext) { } @Override public int getCount() { return Datas.size(); } @Override public Object getItem(int i) { return Datas.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { return view } }
需要重写4个方法
getCount() 返回列表的大小
getView() 返回条目布局的view
getItem() 返回条目的对象
getItemId() 返回条目的位置
需要绑定适配器listView.setAdapter(adapter);
使用步骤:
新建数据集(自己所要的集合或者数组)
创建构造方法
重写4个方法
在activity中绑定适配器 setAdapter()
需要注意的是要在activity中把数据集给初始化
数据存储
Sharedprefernces
以xml格式进行存储 键值对的形式
存数据 putExtra("数据“,“”)
取数据getExtra("数据“)
如果存的是int类型,默认值一般为0即可
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
文件存储 IO流的方式
ContentProvider存储
网络存储 (阿里云 七牛云)
11、 Activity
Android四大组件
Activity
Service
BroadCastReceiver
ContentProvider
Activity(活动) 就是相当于一个页面
跳转 使用intent跳转 Intent intent = new Intent(this,SecondActivity.class);
Intent 显示意图和隐式意图
给意图添加数据intent.putExtra(“key”,"数据“)
SecondActivity中接受数据getIntent.getExtra(“key”)
返回数据SecondActivity中需要加上finsh();结束当前的活动
MainActivity中重写onActivityResult()方法,处理SencondActivity返回的数据
Activity的生命周期
onCreate() onStart() onResume() onPause() onStop() onDestroy() onReStart()
activity启动的模式
任务栈 用来存放用户开启的activity
standard 默认的启动方式
singleTop 栈顶复用模式
singleTask 栈内复用模式
singleInstance全局唯一模式
12、 http协议
大部分的Android应用网络通信都是基于Http协议(超文本传输协议)的,Http协议属于应用层的协议,而应用层协议的作用是用来规定传输数据的格式,以便通信双方能够按照规则来解读数据。
HttpURLConnection继承了URLConnection,所以在URLConnection的基础上进一步改进,增加了一些用于操作HTTP资源的便捷方法。Java中HttpURLConnection对象通过URL.openConnection()方法来获得,需要进行强制转换。先来介绍几个HttpURLConnection的常用方法:
void setConnectTimeout(int timeout):设置连接超时时长,
void setDoInput(boolean newValue) :标志是否允许输入。
void setDoOutput(boolean newValue):标志是否允许输出。
String getRequestMethod():获取发送请求的方法。
int getResponseCode():获取服务器的响应码。
void setRequestMethod(String method):设置发送请求的方法。
void setRequestProperty(String field,String newValue):设置请求报文头,并且只对当前HttpURLConnection有效。
13、 handler
handler 在子线程中用来发送message ,在主线程中接收message message 子线程中携带的数据 messageQueue 用来存放所有子线程发送的message looper 消息循环器,一直遍历循环消息队列
- 1
- 2
- 3
- 4
14 json数据解析
jsonArray
jsonObject
Gson
15、网络请求okhttp 异步请求的步骤
创建okhttpclient对象
创建requset请求对象
创建Call任务
异步请求callback
16、广播接收者
有序广播和无序广播的区别
BroadcastReceiver所对应的广播分两类:无序广播和有序广播。
无序广播通过Context.sendBroadcast()方法来发送。它是完全异步的。不可以被拦截,不可以被终止,不可以被修改,无序广播任何接收者只要匹配条件都可以接收到,无优先级问题。
有序广播可以被拦截,是通过Context.sendOrderedBroadcast来发送。所有的receiver依次执行
对比有序广播和无序广播:
发现他们的使用方式没什么不同,只是有序广播比无序广播要多一个参数;
但是它们的作用是非常不同的,无序广播是不可被截断的,每一个广播接收者都可以收到这个无序广播发送的广播信息;而无序广播时候根据优先级数的大小来判断谁先接收到广播信息,并且可以选择是否截断这个广播信息,如果在某个广播接收者截断信息,在它的优先级之下的广播接收者都接收不到广播信息。
特殊的广播接收者有哪些
广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写:
public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。