畢設日誌——016-020

2019-12-09-週一

 

新學習的知識點

學習了Gradle多渠道編譯。

項目進度

設計和完善畢業設計登錄界面的控件和邏輯。實現了動態EditText,完善了獲取驗證碼的邏輯。

項目筆記

學習了Bmob的數據庫使用方法和短信驗證碼功能,提交審覈了自定義的短信驗證碼模板。

瞭解了Bmob的數據關聯功能,並由此設計了畢設的數據庫,暫時只設計了用戶表,且待完善,需要根據產品預想功能繼續完善。

 

2019-12-10-週二

 

新學習的知識點

學習了LiveEventBus的基本使用,並封裝了單獨的類來處理事件傳遞相關邏輯。

項目進度

基本實現了畢業設計的登錄界面,實現了倒計時60s的功能,同時加入了Bmob的短信驗證碼功能,關於短信驗證功能尚未測試,因爲涉及到產品的用戶數據庫問題,需要等相關功能設計完善後再正式加入短信驗證功能並測試。

實現了動態的背景圖,以及複用首頁的ViewPager實現了登錄和註冊功能的切換,使用LiveEventBus實現了消息傳遞功能,暫時用於fragment和activity的通信。

項目筆記

在複用ViewPager實現動態導航欄時遇到一個問題,兩個控件使用同一個資源文件時,調用透明度變化時,竟然一同變化,可能因爲系統只維護了一個對象,暫時還未解決。

 

2019-12-11-週三

 

新學習的知識點

學習了怎麼動態刪除ViewPager中的頁面,遇到了一個比較棘手的問題,最終成功解決。

項目進度

繼續完善登錄界面的邏輯,將公有方法抽象到控件中,由於昨天的登錄界面設計考慮不完善,用戶在註冊後需要再設置登錄密碼,以及關聯另一半的賬號,所以這部分功能還需要重新設計。

實現了重新設計的功能邏輯,將非業務邏輯抽象到控件去處理。

晚上在開會的時候,初步設計了數據庫。

項目筆記

關於重新設計的功能有初步的想法,獲取驗證碼註冊完成後,需要動態移除註冊Fragment,但是在實現這個功能時遇到了問題,再將Fragment從ViewPager中移除,並調用NotifyDateChanged,ViewPager仍然能夠向右滑動,並且還能看到註冊界面,但是不會停留在註冊界面,會強制回到登錄界面,該問題找了很久,最終在stackOverflow上找到了大佬的回答:

The ViewPager doesn't remove your fragments with the code above because it loads several views (or fragments in your case) into memory. In addition to the visible view, it also loads the view to either side of the visible one. This provides the smooth scrolling

from view to view that makes the ViewPager so cool.

To achieve the effect you want, you need to do a couple of things.

  1. Change the FragmentPagerAdapter to a FragmentStatePagerAdapter. The reason for this is that the FragmentPagerAdapter will keep all the views that it loads into memory forever. Where the FragmentStatePagerAdapter disposes of views that fall outside the current and traversable views.

  2. Override the adapter method getItemPosition (shown below). When we callmAdapter.notifyDataSetChanged(); the ViewPager interrogates the adapter to determine what has changed in terms of positioning. We use this method to say that everything has changed so reprocess all your view positioning。

 

大致意思是說:viewpager在加載當前頁的時候已經將pager頁左右頁的內容加載進內存裏了,這樣才保證了viewpager左右滑動的時候的流暢性;

爲了解決徹底刪除fragment,我們要做的是:

1.將FragmentPagerAdapter 替換成FragmentStatePagerAdapter,因爲前者只要加載過,fragment中的視圖就一直在內存中,在這個過程中無論你怎麼刷新,清除都是無用的,直至程序退出; 後者 可以滿足我們的需求。

2.我們可以重寫Adapter的方法--getItemPosition(),讓其返回PagerAdapter.POSITION_NONE即可;

問題解決。

 

2019-12-12-週四

 

新學習的知識點

瞭解了一下LoRa物聯網相關的知識

項目進度

繼續完善登錄頁面邏輯,上午效率有點低,就再蒐集了一些三方庫,和適合的Lottie動畫,隨後開始完善登錄界面,實現了點擊獲取驗證碼後動態添加設置密碼輸入框,學習瞭如何通過修改ViewPager源碼,來解決ViewPager設置WRAPCONTENT失效的問題,通過了解和修改ViewPagerStateAdapetr源碼,修改了getItemPosition的代碼,修復了動態刪除ViewPager第一個頁面時卻刪除第二個頁面的問題。

項目筆記

晚上繼續完善註冊邏輯,發現一個很大的問題,即將獲取驗證碼功能和文本框展開綁定在一起,用戶在獲取驗證碼或者輸入驗證碼超時後,無法複用舊的驗證碼,需要明天重新設計和修復這個問題。

 

2019-12-13-週五

 

新學習的知識點

學習瞭如何使用ViewCompat來實現動畫效果。

項目進度

重新設計並實現了註冊頁面的邏輯,學習瞭如何使用ViewCompat來實現動畫效果,同時添加了註冊頁面的動畫效果,使頁面切換更爲流暢,統一了Toast和Log,整理成單獨的類,並設計了美觀的圖標和顏色。

進一步完善了數據庫,涉及到的詞條更全面了,同時更具拓展性。

項目筆記

晚上通過查閱Bmob的文檔,受到了啓發,意識到了之前設計的數據庫規範性很差,也不符合第三範式,重新設計後好多了。

 

週記

這一週部門沒有分配任務給我,詢問了一下導師,導師說這個版本小任務量不大,暫時也沒有多餘的需求交給我,所以我可以着手做我的畢業設計,早點完成畢業設計,來年也好全心投入到部門項目中來,這一週都在做畢設項目,先從登錄和註冊界面做起,一邊瞭解Bmob的基本使用方法,一邊實現界面和邏輯,由於採用了非傳統的註冊控件,所以在處理註冊邏輯時遇到了比較大的問題,其中的流程非常複雜,但最終還是實現了完美的註冊效果,同時瞭解了更多的好用的第三方庫,對畢設項目起到了很大的助力。

 

編輯於    2019-12-14-週六

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