自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(194)
  • 收藏
  • 关注

原创 ***环境复杂度***:指纹识别

***环境复杂度***:指纹识别一.使用第三方代码1.第一版2.第二版:判断.第一版:使用第三方代码1.依赖:2.权限:3.动态权限:4.application初始化ZXing:5.清单文件:6.生成二维码:7.扫描二维码:8.全部代码:二.LeakCanary内存泄漏1.什么是LeakCanary2.什么是内存溢出:3.什么是内存泄漏:4.依赖:5.application中部署:6.制造内存泄漏现象:一.使用第三方代码1.第一版依赖:implementation “androidx.biometri

2022-05-05 08:40:19 933 1

原创 第14天Tabhost了解

第14天Tabhost了解Tabhost一.效果:和TabLayout的效果一样,但是已经过时,简单了解二.思路三.代码Tabhost一.效果:和TabLayout的效果一样,但是已经过时,简单了解二.思路方式一: 继承 Activity 布局页面中: 1, 跟标签 : <TabHost/> id 任意指定 2, <TabWidge...

2019-03-02 08:55:19 395

原创 第13天ViewPager之PagerTitleStrip和PagerTabStrip(了解)

第13天ViewPager之PagerTitleStrip和PagerTabStrip(了解)PagerTitleStrip和PagerTabStrip一.PagerTitleStrip效果代码:二.PagerTabStrip效果代码PagerTitleStrip和PagerTabStrip二者都可以实现标题的ViewPager滑动一.PagerTitleStrip效果代码:1.布局文...

2019-02-27 14:06:05 580

原创 banner实现轮播图

banner实现轮播图查看网址查看网址https://blog.csdn.net/haojiagou/article/details/82629039

2019-01-10 13:55:54 3562 1

原创 第3天微信底部切换selector选择器的使用

第3天微信底部切换selector选择器的使用selector选择器一.效果二.如何创建选择器selector选择器一.效果点击底部实现切换,底部图片和颜色跟着改变二.如何创建选择器1.创建文字颜色改变选择器:selector1.xml在drawable下面直接生成selector1.xml文件,编写xml文件2.创建图片改变选择器selector2.xmlchat1和c...

2018-12-26 12:10:07 706 3

原创 每天作业

第1天Dialog对话框作业理论1.理论题库2.xmind总结知识点3.晚上说课:几种对话框的实现方式技能技能一:不看代码将这几种对话框写一遍技能二:明天日考题技能三:ListView+对话框+网络请求数据理论1.理论题库2.xmind总结知识点3.晚上说课:几种对话框的实现方式技能技能一:不看代码将这几种对话框写一遍技能二:明天日考题使用ListView显示本班级的任意十个同学...

2018-12-25 13:24:58 1629 2

原创 第16天ViewPager案例4:ViewPager+Fragment嵌套

第16天ViewPager案例4:ViewPager+Fragment嵌套ViewPager一.效果二.思路:三.父Viewpager代码四.首页Fragment代码总结:代码结构:ViewPager一.效果二.思路:(1)父Viewpager:RadioGroup+Viewpager+5个Fragment (Fragment管理者:getSupportFragmentManager)...

2018-12-19 17:01:14 674 2

原创 第11天EventBus和Otto第三方框架

是的

2018-12-19 09:38:56 992

原创 第10天BroadCastReceiver广播

我的

2018-12-19 09:37:24 1116

原创 第9天ContentProvider内容提供者

获取手机联系人获得短信

2018-12-19 09:36:23 1505

原创 第7+8天SQLite数据库操作

待定

2018-12-19 09:34:51 1367

原创 第6天Bitmap三级缓存+二次采样

地方

2018-12-19 08:43:45 1327

原创 第17天Service案例-使用绑定服务完成音乐播放器

第17天Service案例-使用绑定服务完成音乐播放器音乐播放器一.效果二.思路三.代码音乐播放器一.效果二.思路1.创建MusicService,在Service中提供播放音乐、暂停音乐、停止播放、播放上一首、播放下一首、滚动条滚动2.创建Activity:绑定服务,绑定成功直接调用服务中的方法三.代码(1)MusicService的代码:public class MusicS...

2018-12-18 11:30:45 1255 2

原创 第17天Service基础知识

第17天Service基础知识Service一.Service介绍二.Service特点三. 如何创建Service四.Service的生命周期以及启动方式:五.startService和bindService的区别六.startService代码七.bindService代码Service一.Service介绍1.Service,服务,是四大组件之一, 和Activity 非常相似, 一般...

2018-12-18 11:19:52 892 1

原创 第14天ViewPager案例3:ViewPager+Fragment+TabLayout新闻头部标题导航(*****)

第16天ViewPager案例3:ViewPager+Fragment+TabLayout新闻头部标题导航(*****)ViewPager一.效果二.思路:1个ViewPager+5个Fragment+1个FragmentPagerAdapter+TabLayout三.代码ViewPager一.效果二.思路:1个ViewPager+5个Fragment+1个FragmentPagerAd...

2018-12-18 10:50:06 829

原创 第13天ViewPager案例2:Viewpager+Fragment实现微信底部导航(******)

第15天ViewPager案例2:Viewpager+Fragment实现微信底部导航(******)ViewPager一.效果二.思路:1个ViewPager+4个Fragment+1个FragmentPagerAdapter四.代码ViewPager一.效果1.点击底部,Viewpager切换2.滑动ViewPager,底部也变化3.Selector选择器的使用二.思路:1个Vi...

2018-12-18 10:32:10 1196

原创 第13天ViewPager案例1:向导页(***)

第14天ViewPager案例1:向导页(***)ViewPager一.ViewPager介绍二.效果三.思路:1个ViewPager+4个View+1个PagerAdapter四.代码ViewPager一.ViewPager介绍android.support.v4.view.ViewPager特点:继承于ViewGroup, 是一个容器, 添加一系列的View数据填充需要通过...

2018-12-18 10:20:48 896

原创 第12天Fragment基础知识

第12天Fragment基础知识Fragment一.Fragment介绍二.Fragment特点三 如何实现Fragment四.Fragment的生命周期五.Fragment的静态显示六.Fragment的动态显示Fragment一.Fragment介绍Fragment,英文碎片的意思,早期应用在平板设计中二.Fragment特点Android 3.0 后出现, 是Activity 的...

2018-12-18 08:38:25 730

原创 第20天PullToRefreshListView

第20天PullToRefreshListViewPullToRefreshListView一.PullToRefreshListView介绍二.PullToRefreshListView步骤PullToRefreshListView一.PullToRefreshListView介绍实现下拉刷新, 上拉加载的功能二.PullToRefreshListView步骤步骤1:导入第三方moud...

2018-12-17 20:32:04 497

原创 第19天Service-IntentService

第19天Service-IntentServiceIntentService一.IntentService介绍二.IntentService的优点:不用开启线程三.IntentService的缺点:使用广播向activity传值四.案例:使用IntentService网络请求json串,将json串使用广播发送给activity界面IntentService一.IntentService介绍...

2018-12-17 20:23:15 1158

原创 第5天SharedPreferences存储+SD卡存储

第5天SharedPreferences存储安卓的5大存储一.SharedPreferences(******)1.sp介绍2.如何存储数据3.如何读取数据4.记住密码功能5.作业:ListView记住上一次的位置;自动登录功能二.文件存储:内部文件存储+外部文件存储(SD卡)(******)三.SQLite数据库存储:(******)四.ContentProvider存储:(******)五.网...

2018-12-14 16:18:38 1334

原创 第4天Notification通知和自定义Toast

第4天Notification通知常用的通知1.普通对话框2.单选对话框3.多选对话框4.自定义对话框(******)5.水平进度条对话框6.圆形进度条对话框7.日期选择对话框8.时间选择对话框常用的通知通知特殊列表builder.setStyle(new Notification.InboxStyle());大视图builder.setStyle(new Not...

2018-12-14 08:13:19 1465

原创 第3天PopupWindow弹出窗体

第3天PopupWindow弹出菜单PopupWindow1.PopupWindow介绍2.如何自定义窗体3.实现微信QQ支付宝右上角加号弹出窗体1.步骤流程:2.代码:2.上下文菜单ContextMenu3.弹出菜单PopupWindow菜单显示菜单事件监听系统菜单onCreateOptionsMenuonOptionsItemSelected上下文菜单Al...

2018-12-13 18:29:42 1805

原创 第2天Menu菜单

第2天Menu菜单常用的菜单1.系统菜单OptionsMenu2.上下文菜单ContextMenu3.弹出菜单常用的菜单菜单显示菜单事件监听系统菜单onCreateOptionsMenuonOptionsItemSelected上下文菜单AlertDialog.Builder()setSingleChoiceItems()1.系统菜单OptionsMe...

2018-12-13 18:08:01 1516

原创 第1天Dialog对话框

第1天Dialog对话框常用的对话框普通对话框单选对话框多选对话框自定义对话框(******)水平进度条对话框圆形进度条对话框日期选择对话框时间选择对话框设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入常用的对话框对话框类特殊...

2018-12-13 17:05:53 2570

原创 【二】车载FrameWork添加系统服务

此时由于类加载的双亲委托机制,app在运行时实际使用的是framework中的EnjoyManager。app中的EnjoyManager仅仅只是为了编译成功编写的空壳。

2024-01-25 11:14:55 942

原创 [四]rtmp推流核心c代码

Rtmp.cpp:是开发者需要完成。

2024-01-19 15:59:38 522

原创 [三]H264编码和 MediaCodec

使用MediaCodec,开发人员可以将原始的音频和视频数据输入到编码器中进行压缩编码,或者将编码后的数据输入到解码器中进行解码还原。nginx是一款优秀的反向代理工具,通过nginx可以实现搭建高可用的轻量级web服务器,除此之外,通过Nginx自带的rtmp模块,也可以实现rtmp服务器的搭建。总的来说,MediaCodec是Android平台上用于多媒体编解码的重要API,可以帮助开发人员实现高效的音视频处理和传输。1)进入解压后的nginx路径。1)解压nginx文件。2)解压rtmp模块。

2024-01-18 15:39:43 931

原创 [二]rtmp服务器搭建

nginx是一款优秀的反向代理工具,通过nginx可以实现搭建高可用的轻量级web服务器,除此之外,通过Nginx自带的rtmp模块,也可以实现rtmp服务器的搭建。.\ffmpeg.exe -re -i 视频名称.mp4 -vcodec libx264 -acodec aac -f flv。如果没有提示报错,则说明运行成功了。1)进入解压后的nginx路径。1)解压nginx文件。2)解压rtmp模块。

2024-01-18 15:06:50 1107

原创 [一]ffmpeg音视频解码

下载地址( https://developer.android.google.cn/ndk/downloads/index.html)(3)解压NDK(unzip android-ndk-r14b-linux-x86_64.zip)(2)解压Ffmpeg(tar -zxvf ffmpeg-3.3.6.tar.gz)./build_android.sh(执行脚本)(1)下载FFmpeg源码(v3.3.6)(3)编写Android编译脚本。(2)编写Android编译脚本。(2)下载NDK(r14b)

2024-01-18 10:18:21 1111

原创 JIRA敏捷开发+软件缺陷

JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。

2023-06-21 08:47:58 494

原创 LiveData那些事情,看我一篇就够了

总结:方案2要比方案1功能更全。方案二:粘性和非粘性。

2023-06-19 09:37:17 288

原创 MVI设计模式

mvc:activity即是v也是c,代码臃肿mvp:接口太多,p层容易内存泄漏mvvm:databinding生成的代码态度,livedata数据倒灌/粘性mvi:复杂页面,state膨胀面试官问:非常小的项目用什么?MVC。

2023-06-17 08:33:13 1857

原创 性能优化-内存优化

因此GC按照回收的区域又分了两种类型,一种是普通GC(minor GC),一种是全局GC(major GC or Full GC),它们所针对的区域如下。内存空间小,线程私有。将内部类更改为静态内部类,静态内部类不会持有外部类的引用,需要我们自行传入,这时我们用外部类的引用设置为软引用,这个jvm在做垃圾回收时,就会回收掉内部类对于外部类(Activity)的引用,这样Activity就可以正常销毁了(需要注意一点的是,上述例子是一个在后台执行的线程,即使Activity被回收了,线程本身并不会被回收)。

2023-06-16 09:47:24 985

原创 插件化技术

Android插件化技术,可以实现功能模块的按需加载和动态更新,其本质是动态加载未安装的apk。分为宿主apk和插件apk:(1)所谓宿主,就是需要能提供运行环境,给资源调用提供上下文环境,一般也就是我们主 APK ,要运行的应用,它作为应用的主工程所在,实现了一套插件的加载和管理的框架,插件都是依托于宿主的APK而存在的。(2)所谓插件,可以想象成每个独立的功能模块封装为一个小的 APK ,可以通过在线配置和更新实现插件 APK 在宿主 APK 中的上线和下线,以及动态更新等功能。

2023-06-09 10:45:50 849 1

原创 热修复/热更新

当APP发布上线之后,如果出现了严重的bug,通常需要重新发版来修复,但是重新走发布流程可能时间比较长,重新安装APP用户体验也不友好,所以出现了热修复,热修复就是通过发布一个插件,使APP运行的时候加载插件里面的代码,从而解决缺陷,并且对用户来说是无感的(有时候可能需要重启一下APP)。支持加载外部的 APK、Jar 或者 dex 文件,正好符合文件化的需求,所有的插件化方案都是使用 DexClassloader 来加载插件 APK 中的 .class文件的。系统类加载器,当系统启动的时候加载常用类。

2023-06-08 19:52:05 1364 1

原创 MVVM封装

注意:所有的build.gradle配置,配置独立运行的清单文件。

2023-05-25 15:28:41 897

原创 存储框架封装:LruCacheUtils+DiskLruCacheUtils+责任链设计模式+DeepLink

顾名思义,责任链模式(Chain of ResponsibilityPattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

2023-05-23 09:33:53 551 2

原创 图片模块封装:Glide高级使用+使用设计模式图片框架封装+Bitmap尺寸压缩和质量压缩+Bitmap加载大图长图

网络配置:glide默认使用httpUrlConnection完成网络请求,可以改成okhttp。sdk无法满足当前业务需求,故而需要更换原有sdk,为了将更改降到最低,所。入三方框架提示开发效率,对于技术选型后的方案可能后面需求的变更原三方。因为业务依赖的是接口层对应后期代码维护更改量会控制在最小,对于原软件。即定义接口层业务依赖抽象即当前接口,具体实现有不同三方sdk完成。框架设计过程中对于对于架构要求高内聚低耦合,图片加载框架中引。使用设计模式来进一步解耦代码耦合度,来解决隔离风险点的目的,

2023-05-22 20:33:51 1297

原创 日志模块封封装:单例模式+策略模式+构建者模式+bugly

var logger = Logger . Builder() . setLevel(LoggerLevel . Error) . setLoggerType(LoggerType . LOGCAT) . isDebug(false) //true打印 false不打印 . setTAG("2010") . build() logger . e("MainActivity" , "hahaha")可以使用单例模式对log日志的进一步封装。

2023-05-21 17:14:53 735

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除