android之解锁新技能,平常的应用开发会用到的东东(持续更新)android工作经验总结

0.开源控件整合

https://www.cnblogs.com/abao0/p/6726763.html

https://blog.csdn.net/hjh200507609/article/details/77508842

https://blog.csdn.net/chenhuakang/article/details/76687653

https://blog.csdn.net/chenhuakang/article/details/76687653(recyclerview的开源)

1.初始化控件用butterknife

https://blog.csdn.net/ai1362425349/article/details/81354991

2.一个应用里都应该有父类,比如activiy的BaseActivity,fragment的BaseFragement(这些都是需要自己定义的),更好的应用java的继承。

3.一个应用中至少要有一个工具包,工具包里会有很多工具类,来减少重复的代码,更好的应用java的封装

4.android的框架选择,mvp?mvc?都会用到,混合开发最好,如果逻辑不太复杂使用mvc,复杂了就mvp啦,mvp可以参考:

http://blog.csdn.net/lmj623565791/article/details/46596109

mvc参考(原理)(其实android的设计思想就是mvc,随便写的代码就是mvc的架构,view就是控件,model就是数据,C就是activity。以activity为控制器,将view和damodel连接在一起)

https://blog.csdn.net/qq_36969411/article/details/78027735

5.当看别人代码不知道一个地方什么意思的时候,可以通过包的路径来看看,或者ctrl+左键直接进入内部看。然后在百度百度基本都可以解决。

6.依赖注入框架选Dagger2  配合 MVP使用(可以了解下)

https://www.cnblogs.com/all88/p/5788556.html

7.网络请求接口封装Retrofit+RxJava。自己总结封装的一套,网上的看的不是太懂就不推荐了。点击后面进行下载》》》》》》》(下载地址)

8.  简单、强大而且格式美观的日志打印工具    Logger

https://blog.csdn.net/yy1713/article/details/80027171

9.应用升级版本控制工具-友盟(需要key)

10.单例模式的理解:

https://zhidao.baidu.com/question/553422958232666852.html

  单例模式实际应用

https://blog.csdn.net/jason0539/article/details/23297037/

11.观察者模式的理解:

     举例:简单而言就是  1对多。比如微信公众号,公众号发送消息,只要是关注了的用户都可以接受到消息。一个公众号对应多个用户。rxjava就是应用的观察者模式。

观察者模式的实际应用

https://www.cnblogs.com/luohanguo/p/7825656.html

12.当你看到网上一个很好的例子了,先别急着copy,不如先新建一个项目模拟一遍,说不到有意想不到的收获。

13.装饰者模式(感觉就是多态的应用)2018 12 29日更正(只是包含了多态的应用而已,而不是就是多态的应用。看大话设计模式加深了印象)

https://www.jianshu.com/p/6dcff4449f99

14.常用的图片加载框架Glide

15.rxbus在rxjava中的应用

https://blog.csdn.net/donkor_/article/details/79709366

背压理解http://flyou.ren/2017/04/05/%E5%85%B3%E4%BA%8ERxJava%E8%83%8C%E5%8E%8B/?utm_source=tuicool&utm_medium=referral

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

https://blog.csdn.net/zhang2222222/article/details/51312364

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 新增内容)

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2018/0426/9644.html

24.很多功能不要想着自己来实现(比如去网上copy一段代码到项目中去),看看有没有开源库?比如轮播图,下拉刷新等等。

直接百度 android开源库大全记得了解android每一个版本的特效,有可能有些功能可以在一个版本上使用在另外一个版本就回出现问题,列一个地址https://www.cnblogs.com/Free-Thinker/p/7423033.html

25.和产品经理突然加需求怎么沟通?

http://www.jcodecraeer.com/a/anzhuokaifa/2018/0206/9310.html

26.一些开源库(有可能以后的开发中会用到其中的一个控件)(开源中国)

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2018/0126/9244.html

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/1225/8991.html

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总结篇

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0827/8423.html(这个大力推荐)

http://www.jcodecraeer.com/a/anzhuokaifa/2017/1129/8813.html

http://www.jcodecraeer.com/a/anzhuokaifa/2017/1109/8727.html

30.android推荐插件

https://blog.csdn.net/hzy670800844/article/details/80335156

http://www.jcodecraeer.com/a/anzhuokaifa/2017/0827/8424.html

31.在刚开始看app的源码的时候,自己头都大了,从一个一个类文件开始看。到从一个个类的继承关系分析,后面慢慢的打算

     从每一个功能开始看,什么叫每个功能(比如说我需要了解他的网络访问是怎么实现的?我就直接从他第一个网络访问成功的代码开始看,慢慢摸索,不要贪心一下看懂所有。把他们分配成模板块)

32.防止用户多次点击button

https://blog.csdn.net/hust_twj/article/details/78742453

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个自己有特殊需求的时候,也可以重写。可以参考

https://blog.csdn.net/yuzhiqiang_1993/article/details/79036982

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(可以在一个控件上方或其他位置显示对话框)

https://blog.csdn.net/wangwangli6/article/details/70210694

https://blog.csdn.net/w1085541827/article/details/79309355

https://www.jianshu.com/p/2fce520b2d0d

侧栏筛选

https://blog.csdn.net/wxpqqa/article/details/79367585

44.角标实现

https://blog.csdn.net/u013541140/article/details/84822317

45.跑马灯的各种效果实现

https://www.jianshu.com/p/2b6c9a82d973

46.状态布局管理器(没网络页面)

使用时候如果导入依赖不行,就只有导入modul了,下载项目文件找到library目录,拷贝到自己的项目中去即可。

https://github.com/Bakumon/StatusLayoutManager

https://github.com/chenpengfei88/StatusLayout(上面那个好像不能解决刷新)

47.在编写代码的时候如果发现,继承一个类在很多地方都重复了这个继承的操作那就请你想办法把继承的这个类封装好,不然你的代码看上去会显示的很臃肿。举例Recyclerview的Adapter复用

https://blog.csdn.net/qq_20089667/article/details/81162881

48.如果觉得以前写的代码真的很烂,自己花点时间来改改吧,别光说不做---2018-12-29

49.java里面方法的命名很重要,别和系统的一些方法命名重复了,不然可能导致无法解决的问题如:方法无法被正常调用等。---2019.01.03

50.webview中视频无法播放问题解决,一些附加内容

https://www.jianshu.com/p/d6d379e3f41d

https://www.cnblogs.com/zhangqie/p/6171012.html

51.加载过渡动画

https://github.com/team-supercharge/ShimmerLayout

52.状态栏颜色改变字体改变--2019.1.28

https://github.com/hexiaochun/SystemBarTint

小米或魅族可能需要适配,参考文章

https://www.jianshu.com/p/7392237bc1de

53.汉字转拼音

https://github.com/promeG/TinyPinyin(这个会在重音的时候有问题而只能转换为大写字母,下面地址可以解决。但是执行速度会慢很多)

https://github.com/stuxuhai/jpinyin(可以查看声调,重音字等)--2019.2.13

54.MPAndroidChart详细讲解和封装的文章 19-3.15

https://blog.csdn.net/ww897532167/article/details/77334345

55.git登录账户密码输入错误,不在提示登录框解决

git config --system --unset credential.helper

56.微信支付步骤:

https://www.jianshu.com/p/7b50b7baac12

57.checkbox在recyclerview中的用法

https://blog.csdn.net/jdsjlzx/article/details/50654395

58.recyclerview的对某一个item进行操作

https://blog.csdn.net/qq_34908107/article/details/77847985

59.如果还不会添加recyclerview的header和footer那可以了解一下NestedScrollView,虽然不推荐使用,但是有时候救急一下还是可以。

https://www.jianshu.com/p/f55abc60a879

60.tablayout、fragment、viewpager结合使用,很好理解

https://www.cnblogs.com/lyd447113735/p/8693931.html

61.高德地图通过输入的地址获取经纬度(值得注意的是这里的key是web的key),如图:

https://lbs.amap.com/api/webservice/guide/api/georegeo/

62.在使用时间到时间戳的转换的时候,值得注意事项:

https://blog.csdn.net/fanrenxiang/article/details/80531649

63.RxPermissions使用入门(运行时权限开源框架)

https://www.jianshu.com/p/c3546e5cd2ff

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,你想要的动画效果

https://blog.csdn.net/sinat_36668731/article/details/74007695

https://blog.csdn.net/sinat_36668731/article/details/74220950

71.addView的使用

https://www.jianshu.com/p/760573e1964f

72.设计 模式的理解

    代理模式https://blog.csdn.net/i7788/article/details/75083632

    原型模式https://www.jianshu.com/p/8388ebb363ba
73.android ui框架

QMUI 腾讯https://qmuiteam.com/android

74.相机裁剪开源

https://blog.csdn.net/xiangshiweiyu_hd/article/details/82779619

75.java爬虫

https://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/index.html

抓包 fiddler(有些大公司加密,可能导致抓去不到)

76.android各种优化,面试可能会问到

https://blog.csdn.net/csdn_aiyang/article/details/74989318

77.viewpager和NestedScrollView一起使用会出现viewpager里面内容无法显示问题。

78.九宫格图片实现,微信、qq动态

https://github.com/jeasonlzy/NineGridView

79.在使用recyclerview进行多重布局的时候,在编写onBindViewHolder时,每个Bean必须写在对应的下面,不能写在外面。

//值得注意的是这几个bean不能写在外面,不然每条数据只能按照第一条来算(默认一条)如:HeaderBean bean1 = list1.get(realPosition);

80.android录音实现

https://www.jianshu.com/p/6bbb51ac4938

81.短视频实现(仿微信)

https://github.com/junerver/VideoRecorder

82.图片视频选择器(仿微信)推荐第二个

https://blog.csdn.net/u014133119/article/details/80936588

83.图片压缩

NativeUtil.compressBitmap(path, file.getAbsolutePath(), 50);

84.最近在导入library到项目中来的时候,导致自己项目报错,和很多文件找不到,总结了以下可能:

     1⃣️。现在的包都是用的androidx,v7和v4相续被淘汰。所以看一下是否是被淘汰的包,如果是然后对其被调用的包进行修改,如果项目中有控件也调用那也别忘记了对xml布局的更改。

     2⃣️。libray的版本最好和项目的使用版本一致,不然也可能造成错误。

85.mp4在线转换gif网址:

https://convertio.co/zh/

86.下载列表进度问题解决:

https://www.jianshu.com/p/504e87089589

87.接外包

https://blog.csdn.net/xiyue001/article/details/102816596

88.环信使用案例:

https://github.com/lzan13/VMMatch

89.app抓包工具

https://www.cnblogs.com/542684416-qq/p/10916445.html

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

https://blog.csdn.net/qq_25486413/article/details/79802733

https://github.com/lingochamp/FileDownloader

94.使用anroid studio自带的tablayout时候要注意,外层布局不要更换。不然会导致主题内容不显示。

tablayout外层是个appbarlayout,再外层点就是coordinatorlayout,如果不换成了其他的布局,viewpager就不会显示该显示的内容。

  

 
发布了29 篇原创文章 · 获赞 44 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/ai1362425349/article/details/83052362