复习笔记

1.二级列表

①创建适配器,找控件

②获取数据,死数据网络数据

③创建适配器

④设置适配器

⑤父项,子项点击事件

⑥基本属性

2.listview手动加载更多

①创建适配器,找控件

②获取数据,网络数据

③创建适配器

④设置适配器

⑤给listview添加一个footer

⑥点击footer中的bottom加载更多-page++,获取数据

3.listview自动加载更多

①创建适配器,找控件

②获取数据,网络数据

③创建适配器

④设置适配器

⑤定义一个变量isbottom表示是否滑倒底部

⑥listview设置滑动监听

3.侧滑菜单

①添加依赖

②创建布局DrawerLayout,NavigationView

③设置ActionBar 在style中修改属性为NoActionBar,toolbar设置logo,标题,副标题,关联toolbar和侧滑菜单

④监听事件,侧滑头部监听,侧滑菜单监听

⑤沉浸式状态栏,首先DrawerLayout引入属性然后在res下创建文件values-v21,文件内提娜佳文件styles.xml,添加属性

4.选项菜单

①创建选项菜单(代码,menu)showAction显示在toolbar

2.选项菜单的点击事件 onOptionsltemSelected    Switch选择

5.上下文菜单

①注册上下文菜单 registerForContextMenu()

②创建上下文菜单 onCreateContextMenu

③上下文菜单的点击事件 onContextItemSelected

选项菜单和上下文菜单的区别:选项菜单是整个页面公用,上下文菜单是注册给某个组件,此组件拥有菜单,没有注册的组件没有此菜单。



__

6.recycleview基本使用

①添加依赖

②创建布局

③找控件

④设置布局管理器(三种显示方式:线性布局,网格布局,瀑布流布局)

⑤创建适配器--重写三个,通过接口回调实现点击事件

⑥设置适配器

7.recycleview多布局:list+banner

①recycleview基本使用

②定义类型变量

③重写方法getitemviewtype()根据位置返回不同类型的布局

④重写onbindviewHolder()根据不同的类型加载不同数据

⑤重写oncreateviewholder根据不同类型加载不同布局

注意:

1.获取条目总数:list.size()+1

2.onBindViewHolder:获取下标条目数据时,position+1

8.RecycleView通过接口回调实现点击事件

①在adapter定义一个内部接口,内部定义一个方法,方法参数时我们需要返回值的

②在adapter定义接口变量,并设置set方法

③在onBindViewHolder()中,给条目做一个点击事件

④在fragment或者activity中,使用adapter对象调用点击事件即可

9.RecycleView添加刷新

①添加依赖

②在布局中添加刷新的控件并找控件

③给刷新控件添加加载更多,下拉刷新添加监听

④刷新完毕关闭头和脚

10.静态添加fragment

①创建一个fragment

②创建布局,把①中的fragment放到布局中

注意:①fragment必须有ID

②布局中必须添加一个属性name,值是该fragment全类名

11.动态添加fragment

①获取碎片管理器

FragmentMsnager  fm =getSupportFragmentManager()

②开启事务

FragmentTransaction fragmentTransaction =fm.beginTransaction()

③获取fragment对象

Afragment afragment =new Afragment()

④替换容器中内容

fragmenttransaction.replace(R.id.fl,Afragment)

⑤提交事务

fragmenttransaction.commit()

12.Transaction常用方法

①add

②remove

③replace

④hide

⑤show

⑥attach

⑦detach

⑧commit

13.fragment生命周期

①onattach()

②oncreate()

③oncreateview()

④onactivitycreated()

⑤onstart()

⑥onresume()

⑦onpause()

⑧onstop()

⑨ondestroyview()

⑩ondestroy()

⑪ondetach()

14.fragment传递数据到activity

①获取activity对象,直接调用方法

mainactivity activity = (mainactivity)getactivity

②接口回调传递数据

③通过fragment的有参构造传递数据

15.activity传递数据到fragment

①通过bundle方式传

activity中

afragment afragment =new afragment()

bundle bundle =new bundle()

bundle.putstring(a,我是来自activity的数据)

afragment.setargumets(bundle)

fragment中

bundle bundle=getarguments()

string s = bundle.geystring(a)

16.fragment与fragment之间传递数据

①通过构造方式传值(不推荐)

②通过fragmentmanager找到对应ID或者fragment,然后获取里面的数据或方法

③通过它们所在的activity作为桥梁,可以使用getactivity()或者接口回调,达到获取另一个fragment数据的目的

五.viewpager+tablayout

1.viewpager结合view实现导航

①创建布局 找控件

②获取数据集合

③创建适配器

getcount()

isviewfromobject()

instantiateltem()

destroyitem()

④设置适配器

2.viewpager结合fragment实现导航

①创建布局找控件

②获取fragment集合中的fragments

③创建适配器

④设置适配器

3.banner开源框架

banner.setbannerstyle(BannerConfig.NUM_INDICATOR_TOTLE)(设置风格)

.setimages(images)(设置图片集合)

.setbanneranimation(Transformer.DepthPage)(设置动画)

.setBannerTitle(titles)(直接添加无效,必须设置bannerstyle)

.setImageLoader(new GrildeImageLoader)(图片加载器)

.start()

4.tablayout

①属性

5.TVF

①创建布局找控件

②创建两个集合fragments和titles

③创建适配器四个方法一个构造

④设置适配器

⑤TV结合tab.setupwithviewpage(vp)

⑥设置图片选择器seticon

6.TVF涉及的懒加载

六.popupWindow

//创建布局

    View inflate = LayoutInflater.from(this).inflate(R.layout.pop,null);

//new一个popupwindow

    PopupWindow popupWindow =new PopupWindow(inflate, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

//让edtext可以输入内容

    popupWindow.setFocusable(true);

//点击外面popwindow消失

    popupWindow.setOutsideTouchable(true);

//设置全局阴影

    popupWindow.setBackgroundDrawable(new ColorDrawable());

//设置

    background(0.5f);

//让popwindow显示在按钮下面

    popupWindow.showAsDropDown(mBtn,20,20);

//设置

    popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {

@Override

public void onDismiss() {

background(1f);

}

});

}

private void background(float v) {

Window window = getWindow();

WindowManager.LayoutParams attributes = window.getAttributes();

attributes.alpha = v ;

window.setAttributes(attributes);

}

七.notification

①//创建管理器

NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

②//兼容O类型

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){

NotificationChannel channel =new NotificationChannel(channerid, channername, NotificationManager.IMPORTANCE_DEFAULT);

③延时意图

Intent intent =new Intent(this, Main2Activity.class);

PendingIntent activity = PendingIntent.getActivity(this,100, intent, PendingIntent.FLAG_CANCEL_CURRENT);

④//创建通知对象

Notification notification =new NotificationCompat.Builder(this,channerid)

//设置图片

        .setSmallIcon(R.mipmap.ic_launcher_round)

//设置标题

        .setContentTitle("通知来了")

//设置内容

        .setContentText("我是内容")

//延时意图

        .setContentIntent(activity)

.build();

⑤//f发送通知

nm.notify(10,notification);


八.权限

1.权限分类分为普通权限(不需要动态获取)和危险权限(需要动态获取)

2.危险权限分类:3CSLMP

相机,联系人,日历,传感器,短信,存储,位置,麦克风,电话

3.如何获取动态权限?

①在清单列表上写上需要的权限

②检查是否授权  若授权——》操作

若未授权——》请求权限

③请求权限结果

九.内容提供者

①创建一个数据库和一张表

自定义ContentProvider继承ContentProvider,重写方法

②ContentResolver

获取ContentResolver

获取uri:Uri.parse(content://"+authorities+/+path)

十.ContentResolver读取短信.通讯录.图片.音频.视频

①动态获取危险权限

②获取ContentResolver对象ContentResolver

③contentResolver调用query()方法查询相关内容

短信:Telephony.Sms.CONTENT_URI

通讯录:ContactsContract.CommonDataKinds.Phone.CONTENT_URI

图片:MediaStore.Images.Media.EXTERNAL_CONTENT_URI

音频:MediaStore.Audio.Media.ENTERNAL_CONTENT_URI

视频:MediaStpre.Video.Media.ENTERNAL_CONTENT_URI

十一.Service

1.service概述,应用场景

2.startService生命周期

oncreate()-onstartcommand()-ondestory()

3.bindService生命周期

oncreate()-onbind()-onunbind()-ondestory()

4.Activity和Service之间的数据传递

①数据从activity和到service

intent方式:startservice和bindservice都可以

②数据从activity和到service

ibinder方式:bindservice

③数据从service到activity

接口回调和广播

十二.音乐播放器

1.MediaPlayer创建方式

①可以直接使用new的方式

MediaPlayer mp = new MediaPlayer();

②使用create的方式

MediaPlayer mp = MediaPlayer.create(this,R.raw.test)

2.四种资源

①用户在应用中自带的resource资源

②存储在sd卡或者其他文件路径下的媒体文件

③网络上的媒体文件

④assets目录下的文件

3.assets和raw资源文件夹的区别:

res/raw不可以有目录,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹

4.结合SeekBar实现拖动播放音乐功能

(1)创建seekbar的布局

(2.)seekbar设置监听,在停止监听中:int progress = seekBar.getProgress();mp.seekTo(progress);

(3)更新seekbarprivate void updataSeekBar() {new Thread(new Runnable() {@Override    public void run() {while (mp.isPlaying()) {try {Thread.sleep(1000);mSb.setMax(mp.getDuration());mSb.setProgress(mp.getCurrentPosition());}catch (InterruptedException e) {e.printStackTrace();}}}}).start();}

5.结合Recycler实现音乐播放上一首下一首(1.)使用ContentResolver+RecyclerView展示音乐列表

(2.)条目点击事件播放对应的音乐

(3)点击上一首下一首case R.id.bt_pe:if(position>0){position--;}else{position=list.size()-1;}play();break;case R.id.bt_next:if(positionposition++;}else{position=0;}play();break;

6.结合service实现后台播放功能

①创建一个服务audioservice

②服务中创建内部类audiobinder,类中有一个方法返回服务类型

③在oncreate()初始化medioplayer对象

④创建一系列关于mp的方法,播放暂停继续停止拖动

⑤在audioactivity中绑定服务,返回服务类对象

⑥按钮点击事件,通过服务对象调用其中的方法实现音频播放

⑦seekbar监听setonseekbarchanged进度改变监听,把进度传给mp

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容