总复习
- 知识点目录:
- 零:常用的知识:
- 一.对话框:普通对话框和自定义对话框(****)
- 二.菜单:系统菜单和上下文菜单
- 三.弹出窗体:自定义窗体(****)
- 四.通知:普通通知和自定义通知(****)
- 五.sp存储:记住密码功能+向导页第二次打开不走向导页(****)
- 六.SD卡操作:读写SD卡中的图片和txt文档(****)
- 七.三级缓存:内存---SD卡----网络
- 八.二次采样:尺寸压缩
- 九.数据库:增删改查,查询出来的数据展现在ListView中(****)
- 十.内容提供者:获得手机联系人和短信
- 十一.广播:无序普通广播(****)
- 十二.Fragment+ViewPager(****)
- 1.Fragment切换(hide和show)
- 2.ViewPager+4个ImageView+PagerAdapter实现向导页
- 3.ViewPager+4个Fragment+FragmentPagerAdapter实现微信底部导航
- 4.ViewPager+4个Fragment+FragmentPagerAdapter+tabLayout实现标题切换
- 3+4 实现2个ViewPager嵌套
- 十三.Service服务(****)
- 十四.PullToRefreshListView上拉加载,下拉刷新(****)
知识点目录:
零:常用的知识:
1.常用的权限:
联网的权限:<uses-permission android:name="android.permission.INTERNET"/>
写SD卡权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
读SD卡权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
读取联系人的权限:<uses-permission android:name="android.permission.READ_CONTACTS"/>
读取短信的权限: <uses-permission android:name="android.permission.READ_SMS"></uses-permission>
2.常用的依赖:
(1)EventBus: implementation 'org.greenrobot:eventbus:3.1.1'
otto:implementation 'com.squareup:otto:1.3.8'
(2)gson: implementation'com.google.code.gson:gson:2.8.2'
(3)picasso:implementation'com.squareup.picasso:picasso:2.5.2'
(4)glide:implementation 'com.github.bumptech.glide:glide:3.7.0'
(5)design -- TabLayout :glide:implementation 'com.android.support:design:25.2.0'
3.常用的系统内容提供者Uri:
1.获取音频: (1)uri:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI (2)字段:TITLE:歌名 ARTIST 歌手 DURATION 总时长 DATA 地址
String[] strs= new String[]{MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ARTIST,MediaStore.Audio.Media.DURATION,MediaStore.Audio.Media.DATA};
2.获取视频: (1)uri:MediaStore.Video.Media.EXTERNAL_CONTENT_URI (2)字段:TITLE:歌名 ARTIST 歌手 DURATION 总时长 DATA 地址
String[] strs= new String[]{MediaStore.Video.Media.TITLE,MediaStore.Video.Media.ARTIST,MediaStore.Video.Media.DURATION,MediaStore.Video.Media.DATA};
3.获取图库: (1)uri:MediaStore.Images.Media.EXTERNAL_CONTENT_URI (2)字段:
MediaStore.Images.Media.TITLE;图片名称
MediaStore.Images.Media.SIZE;大小
MediaStore.Images.Media.DATA;地址
4.获取联系人: (1)uri:ContactsContract.CommonDataKinds.Phone.CONTENT_URI (2)字段:Phone.DISPLAY_NAME:姓名 NUMBER:电话 String[] strs= new
String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER};
5.获取短信: (1)uriTelephony.Sms.CONTENT_URI (2)字段:ADDRESS 地址 BODY 内容 String[] strs= new
String[]{Telephony.Sms.ADDRESS,Telephony.Sms.BODY};
备注:1 2 3 读sd卡的权限 4 读联系人的权限 5 读短信的权限
一.对话框:普通对话框和自定义对话框(****)
https://blog.csdn.net/qq_34178710/article/details/84991133
二.菜单:系统菜单和上下文菜单
https://blog.csdn.net/qq_34178710/article/details/84992873
三.弹出窗体:自定义窗体(****)
https://blog.csdn.net/qq_34178710/article/details/84993160
四.通知:普通通知和自定义通知(****)
https://blog.csdn.net/qq_34178710/article/details/84997319
五.sp存储:记住密码功能+向导页第二次打开不走向导页(****)
https://blog.csdn.net/qq_34178710/article/details/85005663
记住密码+自动登录:
https://blog.csdn.net/qq_34178710/article/details/85099468
六.SD卡操作:读写SD卡中的图片和txt文档(****)
https://blog.csdn.net/qq_34178710/article/details/85091610
七.三级缓存:内存—SD卡----网络
https://blog.csdn.net/qq_34178710/article/details/85063497
八.二次采样:尺寸压缩
https://blog.csdn.net/qq_34178710/article/details/85063500
九.数据库:增删改查,查询出来的数据展现在ListView中(****)
十.内容提供者:获得手机联系人和短信
https://blog.csdn.net/qq_34178710/article/details/85088841
十一.广播:无序普通广播(****)
1.Fragment之间发送广播
(1)Fragment1.java代码:发送方
public class Fragment1 extends Fragment {
private Button send_bt;
public Fragment1() {
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_fragment1, container, false);
send_bt=view.findViewById(R.id.send_bt);
//点击按钮发送广播
send_bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= new Intent();
intent.setAction("com.bawei.1609A");
Bundle bundle=new Bundle();
bundle.putString("傻子","东鼎航");
bundle.putString("二傻子","陈燕琪");
intent.putExtras(bundle);
getActivity().sendBroadcast(intent);
}
});
return view;
}
}
(2)Fragment2.java代码:接受方
onCreate():注册广播
onDestory():解除注册
内部类:自定义广播接受者
public class Fragment2 extends Fragment {
private MyRecevier myRecevier;
public Fragment2() {
}
//1.注册广播
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter intentFilter= new IntentFilter();
intentFilter.addAction("com.bawei.1609A");
myRecevier=new MyRecevier();
getActivity().registerReceiver(myRecevier,intentFilter);
}
//2.解除注册
@Override
public void onDestroy() {
super.onDestroy();
getActivity().unregisterReceiver(myRecevier);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_fragment1, container, false);
}
//3.广播接受者类
class MyRecevier extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String action=intent.getAction();
if("com.bawei.1609A".equals(action)){
String str=intent.getExtras().getString("傻子","");
String str2=intent.getExtras().getString("二傻子","");
//可以展现在TextView中
}
}
}
}
2.服务和Fragment之间发送广播:使用的是IntentService网络下载json串,发送广播将json串返回给Fragment
(1)MyIntentService.java代码:发送方
public class MyIntentService extends IntentService {
//必须提供无参构造
public MyIntentService() {
super("MyIntentService");
}
public MyIntentService(String name) {
super(name);
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
//执行网络下载,此处省略
String json="sdfgdfhjkghfgdfgfgjkhg";
//发送广播
Intent intent1=new Intent();
intent1.setAction("com.bawei.1609A");
Bundle bundle= new Bundle();
bundle.putString("json",json);
intent1.putExtras(bundle);
sendBroadcast(intent1);
}
}
(2)注册服务:
<service android:name=".service2.MyIntentService"></service>
(3)Fragment3.java代码:广播接受方+服务开启方
onCreate():注册广播+开启服务
onDestory():解除注册(IntentService不用停止服务)
public class Fragment5 extends Fragment {
private MyReceiver myReceiver;
public Fragment5() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter intentFilter= new IntentFilter();
intentFilter.addAction("com.bawei.1609A");
myReceiver=new MyReceiver();
getActivity().registerReceiver(myReceiver,intentFilter);
//开启IntentService下载jsob
Intent intent= new Intent(getActivity(),MyIntentService.class);
getActivity().startService(intent);
}
@Override
public void onDestroy() {
super.onDestroy();
getActivity().unregisterReceiver(myReceiver);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_fragment5, container, false);
}
class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//.......json接受展现在ListView中
}
}
}
十二.Fragment+ViewPager(****)
1.Fragment切换(hide和show)
https://blog.csdn.net/qq_34178710/article/details/85059375
2.ViewPager+4个ImageView+PagerAdapter实现向导页
https://blog.csdn.net/qq_34178710/article/details/85060789
3.ViewPager+4个Fragment+FragmentPagerAdapter实现微信底部导航
https://blog.csdn.net/qq_34178710/article/details/85061025
4.ViewPager+4个Fragment+FragmentPagerAdapter+tabLayout实现标题切换
https://blog.csdn.net/qq_34178710/article/details/85061427
3+4 实现2个ViewPager嵌套
十三.Service服务(****)
1.startService直接开启服务
2.bindService绑定服务调用服务提供的方法
音乐播放器案例:
https://blog.csdn.net/qq_34178710/article/details/85062389
3.IntentService执行网络下载异步任务
https://blog.csdn.net/qq_34178710/article/details/85055604