0.开源控件整合
Android开源库集合(控件) - 博客园小马甲 - 博客园
Android开发不得不收藏的开源库(控件)_hjh200507609的博客-CSDN博客
那些酷炫的RecyclerView开源库整理_chenhuakang的博客-CSDN博客
那些酷炫的RecyclerView开源库整理_chenhuakang的博客-CSDN博客(recyclerview的开源)
1.初始化控件用butterknife
butterknife空指针解决(butterknife配置\初始化)_JMGG的博客-CSDN博客_butterknife 空指针
2.一个应用里都应该有父类,比如activiy的BaseActivity,fragment的BaseFragement(这些都是需要自己定义的),更好的应用java的继承。
3.一个应用中至少要有一个工具包,工具包里会有很多工具类,来减少重复的代码,更好的应用java的封装
4.android的框架选择,mvp?mvc?都会用到,混合开发最好,如果逻辑不太复杂使用mvc,复杂了就mvp啦,mvp可以参考:
浅谈 MVP in Android_鸿洋_的博客-CSDN博客_android mvp
mvc参考(原理)(其实android的设计思想就是mvc,随便写的代码就是mvc的架构,view就是控件,model就是数据,C就是activity。以activity为控制器,将view和damodel连接在一起)
什么是MVC模式?MVC三层架构的含义和作用?_dengit_w的博客-CSDN博客_mvc三层架构是哪三层
5.当看别人代码不知道一个地方什么意思的时候,可以通过包的路径来看看,或者ctrl+左键直接进入内部看。然后在百度百度基本都可以解决。
6.依赖注入框架选Dagger2 配合 MVP使用(可以了解下)
浅析Dagger2的使用 - Android、Boy - 博客园
7.网络请求接口封装Retrofit+RxJava。自己总结封装的一套,网上的看的不是太懂就不推荐了。点击后面进行下载》》》》》》》(下载地址)
8. 简单、强大而且格式美观的日志打印工具 Logger
Logger 基本用法_月漾的博客-CSDN博客_logger用法
9.应用升级版本控制工具-友盟(需要key)
10.单例模式的理解:
单例模式实际应用
JAVA设计模式之单例模式_炸斯特的博客-CSDN博客_单例模式
11.观察者模式的理解:
举例:简单而言就是 1对多。比如微信公众号,公众号发送消息,只要是关注了的用户都可以接受到消息。一个公众号对应多个用户。rxjava就是应用的观察者模式。
观察者模式的实际应用
12.当你看到网上一个很好的例子了,先别急着copy,不如先新建一个项目模拟一遍,说不到有意想不到的收获。
13.装饰者模式(感觉就是多态的应用)2018 12 29日更正(只是包含了多态的应用而已,而不是就是多态的应用。看大话设计模式加深了印象)
14.常用的图片加载框架Glide
15.rxbus在rxjava中的应用
RxBus在rxjava2.0 的基本使用_Donkor-的博客-CSDN博客_rxbus rxjava
背压理解关于RxJava背压 |
16.TypeArray 保存xml设置自定义属性
https://www.colabug.com/2130548.html
17.Space,代替view,android中组件空隙,可以用他来占位用,不能设置背景色。
18.下拉刷新SmartRefreshLayout
https://github.com/scwang90/SmartRefreshLayout
19.android书籍和各种效果框架入口(也可以看开源中国)
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2018/0627/10444.html
Android学习 迷茫了来看看_zhang2222222的博客-CSDN博客
20.平时app的开发中会用到第三方的东西,第三方可能会给我们申请签名,如果生成的签名的话
值得注意的是,生成的签名是debug(没打包的)版本签名还是打包了的版本的签名。
21.如果对recyclerview用着挺好的话 试试LRecyclerView
LRecyclerView是支持addHeaderView、 addFooterView、下拉刷新、分页加载数据的RecyclerView。
新增功能:SwipeMenu系列功能,包括Item侧滑菜单、长按拖拽Item,滑动删除Item等。
它对 RecyclerView 控件进行了拓展,给RecyclerView增加HeaderView、FooterView,并且不需要对你的Adapter做任何修改。
22.对话框加载MaterialDialog
https://github.com/afollestad/material-dialogs
23.标签如图(Chip Group)(Android Design Support Library v28 新增内容)
探索 Android Design Support Library v28 新增内容 - 泡在网上的日子
24.很多功能不要想着自己来实现(比如去网上copy一段代码到项目中去),看看有没有开源库?比如轮播图,下拉刷新等等。
直接百度 android开源库大全记得了解android每一个版本的特效,有可能有些功能可以在一个版本上使用在另外一个版本就回出现问题,列一个地址GitHub上排名前100的Android开源库介绍 - brave-sailor - 博客园
25.和产品经理突然加需求怎么沟通?
http://www.jcodecraeer.com/a/anzhuokaifa/2018/0206/9310.html
26.一些开源库(有可能以后的开发中会用到其中的一个控件)(开源中国)
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2018/0126/9244.html
15个优秀的开源项目,让你轻松应对Android开发 - 泡在网上的日子
http://www.jcodecraeer.com/a/anzhuokaifa/2017/1204/8842.html
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2018/0627/10444.html
27.当规定在一行显示文字时候,如果文字略多有要求一行显示完整可以参考:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2018/0115/9139.html
28.android面试复习app?
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2018/0111/9111.html
郭霖大大开源项目地址
https://github.com/guolindev/giffun
29.android总结篇
30+关于如何成为更好Android开发者的简短而专业的建议 - 泡在网上的日子(这个大力推荐)
2017上半年技术文章集合【Android】—184篇文章分类汇总 - 泡在网上的日子
http://www.jcodecraeer.com/a/anzhuokaifa/2017/1109/8727.html
30.android推荐插件
史上最全的android studio 插件大全整理_hzy670800844的博客-CSDN博客_studio插件包
使Android Studio更高效的几款插件推荐 - 泡在网上的日子
31.在刚开始看app的源码的时候,自己头都大了,从一个一个类文件开始看。到从一个个类的继承关系分析,后面慢慢的打算
从每一个功能开始看,什么叫每个功能(比如说我需要了解他的网络访问是怎么实现的?我就直接从他第一个网络访问成功的代码开始看,慢慢摸索,不要贪心一下看懂所有。把他们分配成模板块)
32.防止用户多次点击button
Android 防止多次重复点击的三种方法_hust_twj的博客-CSDN博客_android防止多次点击
33.TextWatcher(监测键盘输入并根据输入内容展示不同显示效果)
https://blog.csdn.net/qq_28339011/article/details/80154229
34.TimePickerView(时间选择器)
https://blog.csdn.net/weixin_39738488/article/details/78954606
35.ClipboardManager(复制和粘贴)
https://blog.csdn.net/X550756668/article/details/78894804
当接触一个新的东西的时候,发现很多都看不懂,总想着最优的解决方法,其实一开始就错了,
比如说你刚开始炒股就想马上成为股神可能吗?其中要经历很多,慢慢理解,后面就懂了。
当第一次接触时候就要实现这个东西带来的功能,不必想最优的,先运行成功即可。如果运行
成功了,那么就可以优化了,从自己想的开始。后面再看看大神们写的例子,看觉得那个地方
很厉害很优美,可以借鉴一下加深理解。(记录那些年我踩过的坑2018.10.31)
36.convenientbanner图片轮播开源框架
https://github.com/Bigkoo/Android-ConvenientBanner
37.BGABanner图片轮播开源框架(比上面好些,可以做引导页,也可以做轮播)
https://blog.csdn.net/wangwangli6/article/details/72865402
38.CountDownTimer简单的倒计时实现
https://www.cnblogs.com/SomnusLove/p/4000500.html
39.在使用rxjava的observer的时候,该类会生成4个方法,而有些方法不必要每次都用上,这样导致的结果就是看上去代码多余。有时候我可能只会用到这个类的1个方法,其他3个方法我不想他每次都出现。解决方法还是有的,思路大致和base类(统一管理的父类如:BaseActivity)有关。就是抽象一个方法出来,其他的3个方法都直接在base类里面实现了,后面再用到的地方继承或实例化base类就行了,到时候只会要求实现你的抽象方法。而其他3个自己有特殊需求的时候,也可以重写。可以参考
rxjava2线程调度及Observer的封装_XeonYu的博客-CSDN博客_observer 封装
40.dialog的弹出方式,上弹出,中间弹出,底部弹出
https://github.com/orhanobut/dialogplus
41.乱在as上面装插件(uml类图),导致程序代码乱码,不能运行,解决办法重装as,或者删除c盘里面as的文件
42.在搜索框里面输入内容后在下面添加tag
https://github.com/whilu/AndroidTagView
43.筛选项(PopupWindow)
https://github.com/pinguo-zhouwei/CustomPopwindow(可以在一个控件上方或其他位置显示对话框)
Android新特性之筛选菜单_旺仔哥的博客-CSDN博客_android 筛选菜单
安卓下拉列表样式筛选组件(仿美团,popwindow实现方式)_Imported的博客-CSDN博客_android 筛选组件
侧栏筛选
Android 商品筛选功能实现_SinPingWu的博客-CSDN博客_android 筛选
44.角标实现
史上最全 Android 应用角标适配方法_孙强 Jimmy的博客-CSDN博客_android 三星角标
45.跑马灯的各种效果实现
46.状态布局管理器(没网络页面)
使用时候如果导入依赖不行,就只有导入modul了,下载项目文件找到library目录,拷贝到自己的项目中去即可。
https://github.com/Bakumon/StatusLayoutManager
https://github.com/chenpengfei88/StatusLayout(上面那个好像不能解决刷新)
47.在编写代码的时候如果发现,继承一个类在很多地方都重复了这个继承的操作那就请你想办法把继承的这个类封装好,不然你的代码看上去会显示的很臃肿。举例Recyclerview的Adapter复用
基于Recyclerview的万能适配器封装-结合实际开发项目碰到的诸多问题的总结_王茂波的博客-CSDN博客
48.如果觉得以前写的代码真的很烂,自己花点时间来改改吧,别光说不做---2018-12-29
49.java里面方法的命名很重要,别和系统的一些方法命名重复了,不然可能导致无法解决的问题如:方法无法被正常调用等。---2019.01.03
50.webview中视频无法播放问题解决,一些附加内容
https://www.jianshu.com/p/d6d379e3f41d
android--------WebView 实现缓存网页数据 - 切切歆语 - 博客园
51.加载过渡动画
https://github.com/team-supercharge/ShimmerLayout
52.状态栏颜色改变字体改变--2019.1.28
https://github.com/hexiaochun/SystemBarTint
小米或魅族可能需要适配,参考文章
53.汉字转拼音
https://github.com/promeG/TinyPinyin(这个会在重音的时候有问题而只能转换为大写字母,下面地址可以解决。但是执行速度会慢很多)
https://github.com/stuxuhai/jpinyin(可以查看声调,重音字等)--2019.2.13
54.MPAndroidChart详细讲解和封装的文章 19-3.15
Android图表控件MPAndroidChart的简单介绍(MPAndroidChart3.0)_xhu_ww的博客-CSDN博客_mpandroidchart简介
55.git登录账户密码输入错误,不在提示登录框解决
git config --system --unset credential.helper
56.微信支付步骤:
https://www.jianshu.com/p/7b50b7baac12
57.checkbox在recyclerview中的用法
Android Checkbox详解_一叶飘舟的博客-CSDN博客_android checkbox tag
58.recyclerview的对某一个item进行操作
Android-RecyclerView实现Item添加和删除_秦子帅的博客-CSDN博客_android recyclerview
59.如果还不会添加recyclerview的header和footer那可以了解一下NestedScrollView,虽然不推荐使用,但是有时候救急一下还是可以。
Material Design系列教程(5) - NestedScrollView - 简书
60.tablayout、fragment、viewpager结合使用,很好理解
Android:使用TabLayout详解 - 西红柿里没有番茄 - 博客园
61.高德地图通过输入的地址获取经纬度(值得注意的是这里的key是web的key),如图:
地理/逆地理编码-API文档-开发指南-Web服务 API | 高德地图API
62.在使用时间到时间戳的转换的时候,值得注意事项:
java时间戳与Date相互转换、日期格式化、给日期加上指定时长、判断两时间点是否为同一天_饭一碗的博客-CSDN博客_java 日期转时间戳
63.RxPermissions使用入门(运行时权限开源框架)
64.遇到多个抽象的地方,可以考虑泛型。
比如:a类进行初始化操作,a类的一部分类容需要拿到c类去实现,而a类还会在b类进行已到实例化操作。如果全部用接口的话,会写两个或者多个接口类。实现方式如:a类实现接口抽象,然后在b类实例化的时候会要求实现接口,然后b类还需接口抽象一个方法供c类使用,b类抽象的作用是将a类抽象的东西带到c类中实现。
如果用泛型的话,就是a类有泛型,b类直接实例化但是不需要进行任何操作,在c类实现的时候,实现泛型接口就行。
65.保存界面为图片
https://www.jianshu.com/p/6193d30e15cb
66.当项目中无法导入依赖的时候,可能是你没有添加这段代码
maven { url 'https://jitpack.io' }
67.图片视频混合选择框架 图片视频压缩的解决方案和思路(git里面的doc文件夹下面),
https://github.com/sucese/phoenix
68.图片动态添加框架
https://github.com/linglongxin24/GridViewAddImage
69.shareSdk,使用微信登录的时候出错,回调方法onComplete只执行方法里面的一部分,一部分不执行。
后面发现是自己使用的mvp,网络请求必须拿到里面来写,可能是异步除了问题。然后就是HashMap返回的
数据是有数据类型的。不然也会导致一部分方法不会执行。
70.android design,你想要的动画效果
Android Design Support Library使用详解(一)_四级五次郎的博客-CSDN博客
Android Design Support Library使用详解(二)_四级五次郎的博客-CSDN博客
71.addView的使用
Android动态添加View之addView的用法 - 简书
72.设计 模式的理解
代理模式代理模式在Android中的应用_三眼卡夫卡的博客-CSDN博客_android 代理模式使用场景
原型模式Android中的原型模式 - 简书
73.android ui框架
QMUI 腾讯QMUI Android - 致力于提高项目 UI 开发效率的解决方案
74.相机裁剪开源
Android 系统自带图片裁剪功能(适配7.0、8.0、对了还有小米手机)_码虫韩小呆的博客-CSDN博客_android 系统图片裁剪
75.java爬虫
抓包 fiddler(有些大公司加密,可能导致抓去不到)
76.android各种优化,面试可能会问到
Android性能优化(一)闪退治理、卡顿优化、耗电优化、APK瘦身_艾阳Blog的博客-CSDN博客_安卓手机性能优化
77.viewpager和NestedScrollView一起使用会出现viewpager里面内容无法显示问题。
78.九宫格图片实现,微信、qq动态
https://github.com/jeasonlzy/NineGridView
79.在使用recyclerview进行多重布局的时候,在编写onBindViewHolder时,每个Bean必须写在对应的下面,不能写在外面。
//值得注意的是这几个bean不能写在外面,不然每条数据只能按照第一条来算(默认一条)如:HeaderBean bean1 = list1.get(realPosition);
80.android录音实现
81.短视频实现(仿微信)
https://github.com/junerver/VideoRecorder
82.图片视频选择器(仿微信)推荐第二个
Android多图片,视频选择器全是干货值得你收藏!!!_合抱之木,生于毫末,九层之台,起于累土的博客-CSDN博客
83.图片压缩
NativeUtil.compressBitmap(path, file.getAbsolutePath(), 50);
84.最近在导入library到项目中来的时候,导致自己项目报错,和很多文件找不到,总结了以下可能:
1⃣️。现在的包都是用的androidx,v7和v4相续被淘汰。所以看一下是否是被淘汰的包,如果是然后对其被调用的包进行修改,如果项目中有控件也调用那也别忘记了对xml布局的更改。
2⃣️。libray的版本最好和项目的使用版本一致,不然也可能造成错误。
85.mp4在线转换gif网址:
86.下载列表进度问题解决:
RecyclerView复用机制浅析:从实现下载列表入手 - 简书
87.接外包
https://blog.csdn.net/xiyue001/article/details/102816596
88.环信使用案例:
https://github.com/lzan13/VMMatch
89.app抓包工具
想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,这里可以为你解决。 - 零度风格 - 博客园
90.富文本编辑器
https://github.com/sendtion/XRichText
https://github.com/Gennki/QRichText
91.当在使用本地ip地址和手机连接的时候,可能会连接不起。(必须在同一局域网下)
这种情况下可以通过ping 手机的地址,如果ping不起,就需要将电脑连接wifi才行。
一般情况下 电脑于电脑之间连接必须都是处于同一状态下成功几率大,比如大家都用wifi或者大家都用网线即可。
ip地址192开头一般为网线连接,ip地址172开头,要保证大家开头都一样才行。
92.当activity和adpater涉及到值的传递的时候,建议用公开的静态方法来传递。比如我只能在activity里面获取的一个值,而在adapter里面恰好会用上,而adpater不能直接获取就只能通过activity里面定义一个静态方法,将值返回给adpater里面就好。如图:
activity中:
adapter中的调用:
如果adapter中的值需要在activity中使用,也是同理。这样适用于大部分场景,不在乎两者之间。
93.android文件下载库
https://github.com/MindorksOpenSource/PRDownloader
推荐一个开源文件下载库PRDownloader_庄宗的博客-CSDN博客_android文件下载开源库
https://github.com/lingochamp/FileDownloader
94.使用anroid studio自带的tablayout时候要注意,外层布局不要更换。不然会导致主题内容不显示。
tablayout外层是个appbarlayout,再外层点就是coordinatorlayout,如果不换成了其他的布局,viewpager就不会显示该显示的内容。
95.当你苦思冥想想实现一个功能的时候,而刚好这个功能比较复杂,怎么快速实现尼,肯定第一步就是先百度,如果能解决最好,如果不能解决,第二步就在github上搜索,假设我现在需要 标题栏 这个功能,自己就先把 标题栏 转换城英语, toolbar 然后去github上搜索,如果用java写就搜java分支下的,其他的同理。 肯定会有一大堆开源,现在就是改变排序方式,可以按照star排序,选择star多的即可。
96.m3u8下载器
https://github.com/Jay-Goo/M3U8Downloader
97.超级强大的视频播放器
https://github.com/CarGuo/GSYVideoPlayer
98.android清空缓存
android 实现清理缓存功能_代码界的大叔i的博客-CSDN博客_android 清理缓存
99.b类的值(实时)必须拿到a类来使用时的处理方法。
在开发的时候,当a类启动一个方法c,b类会在a类启动方法c的时候返回一个值,但是不能直接去b类拿值,而是要想办法让值出现在a类必须是实时的拿到值。
这样说 有两种思路一种是通过广播,一种是通过线程+定时器。
线程+定时器的实现方式是:在b类定义一个方法d。当执行a类的方法c,b类的值得到直接返回给方法d,在a类执行方法c过后,通过timer定时器启动间隔一秒的定时刷新,然后在定时器里调用b类的方法d,判断值是否为空,如果不为空,想将值取出,然后结束定时器。
100.遍历一个循环,当满足条件的时候退出,不满足的时候执行其他操作。
先是一个for循环,假设遍历的数据有 1, 3,5,7. 而我这里有个判断当等于5时退出循环,如果将整个都遍历完了还没有等于5.再执行其他操作。
实现思路是 先定义一个全局变量a=false。然后再for循环中if(需要满足的条件){a=ture} ,再for循环后面再加一个判断 if(a=false){//执行条件满足的操作。 a=false;}else{//不满足执行的操作。}
101当android studio里面报错,错误报告不在log里面,而是再build里面的时候,查找错误的具体原因: 在terminal中执行以下命令 gradlew processDebugManifest --stacktrace 根据该命令查看具体错误日志
102.android9过后,sd卡内写数据有问题可以看下面文章:
Android 9.0 SD卡写入权限问题_这是一个秘密的博客-CSDN博客_android写入sd卡的权限
103.在没有特殊要求的时候建议 app内需要保存的数据存入 应用内,不然后期适配很麻烦。如下:
通过Context.getExternalFilesDir(String type)方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据 (type传入你需要保存的文件夹如:)
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
104:fragment重叠问题解决
fragment重叠的完美解决方案_XeonYu的博客-CSDN博客_fragment重叠
105:Nginx绑定域名。1.安装,然后更改配置文件,然后启动,绑定过后的域名不需要跟配置文件后面的端口,假设文件我设置的是8885,在调用接口绑定过后的地址时不需要这样,端口改是多少还是多少,比如我这里是8080。配置文件参考:
106:flutter json_serializable 的正确使用方法
Flutter 结合json_serializable将json转model - doubletcjs - 博客园
107.一个recycleview实现复杂排版的首页,GridLayoutManager的妙用
这么用GridLayoutManager,你可能还真没尝试过 - 简书
108.fragment存在的坑的解决,包括重叠、getActivity控指针等等
109.下拉图片放大
JMGG的博客_CSDN博客-错误大全,入门,技巧篇领域博主
110.ScrollView嵌套ViewPager自适应高度
ScrollView嵌套ViewPager自适应高度_二货_3050849067的博客-CSDN博客_scrollview viewpager高度
111.一个图标如何快速改变颜色
布局中 android:tint="#fff"可以将图标改成自己想要的颜色
112.viewpager在自定义view中不显示,设置固定高度无效
RecyclerView嵌套ViewPager不显示 - 简书
113.android无限调试 针对android 11
114.app搭建本地服务器andServicer
https://www.jianshu.com/p/6d2f324c8f42