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就不會顯示該顯示的內容。

  95.當你苦思冥想想實現一個功能的時候,而剛好這個功能比較複雜,怎麼快速實現尼,肯定第一步就是先百度,如果能解決最好,如果不能解決,第二步就在github上搜索,假設我現在需要 標題欄  這個功能,自己就先把 標題欄  轉換城英語, toolbar   然後去github上搜索,如果用java寫就搜java分支下的,其他的同理。 肯定會有一大堆開源,現在就是改變排序方式,可以按照star排序,選擇star多的即可。

96.m3u8下載器

https://github.com/Jay-Goo/M3U8Downloader

97.超級強大的視頻播放器

https://github.com/CarGuo/GSYVideoPlayer

98.android清空緩存

https://blog.csdn.net/Awangzhanqin/article/details/82983457

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卡內寫數據有問題可以看下面文章:

https://blog.csdn.net/qq_36467463/article/details/88691726

103.在沒有特殊要求的時候建議 app內需要保存的數據存入 應用內,不然後期適配很麻煩。如下:

通過Context.getExternalFilesDir(String type)方法可以獲取到 SDCard/Android/data/你的應用的包名/files/ 目錄,一般放一些長時間保存的數據   (type傳入你需要保存的文件夾如:)


通過Context.getExternalCacheDir()方法可以獲取到 SDCard/Android/data/你的應用包名/cache/目錄,一般存放臨時緩存數據

104:fragment重疊問題解決

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

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章