原创 序列化原理(一):從源碼理解Serializable

前言 就在昨天和同事聊天聊起了序列化,我們熟知並且使用最方便的就是Serializable。 那麼爲什麼要序列化呢? 有些朋友會說:序列化主要是爲了數據持久化。 我們都知道Serializable是一個空接口,不需要我們實現任何的

原创 自定義View:Android 仿 PS 選色板

前言 今天突然發現年前的文章竟然沒有寫完,略微有點尷尬。今天分享的主題是Android仿PS選色板。 記得我剛開始學習Android的時候,就一直對PS選色板有一種執着,終於在今年找到了理想的解決方案。首先動圖鎮樓: 正文 我們

原创 MVVM最新學習心得

前言 在前幾年興起了MVVM架構設計模式,最具有代表的框架就是DataBinding,雖然這種設計架構非常新穎,但是在使用中仍然還有很多痛點,所以我當時覺得短時間這個設計架構可能不會太流行。 最近接手了新項目,使用的就是MVVM,

原创 Android音視頻系列(五):使用MediaCodec播放視頻文件

前言 本片博客我們一起來研究Android系統音視頻api中,應該算是最難、最複雜的類:MediaCodec。 相對於之前介紹過的MediaPlayer,AudioRecod等等來說,MediaCodec用法稍微複雜了一些,而且有

原创 自定義View:秀一個音樂app的歌詞變色TextView

前言 從2014年開始從事安卓的工作,就一直關注郭霖大神的博客,慢慢的到微信公衆號,再到第三行代碼。不得不說書中介紹的非常詳細,幫助我們把平時接觸到的碎片知識整合到一起,書中摒棄了市面上大部分Android書籍大篇幅的講解系統AP

原创 自定義View:可伸展摺疊的ExpandTextView

前言 最近工作比較多,寫了幾個小控件跟大家分享一下。首先看圖: 這種可以顯示展開和摺疊的TextView非常常見,如果全文要當作一個按鈕處理的話,就沒辦法和文字混排,所以以前就和產品商量折中方案,就沒太細細研究這個效果。今天算是補

原创 Android音視頻系列(八):瞭解音頻格式WAV以及與PCM的轉換

前言 之前我們已經瞭解了PCM音頻數據,我們理解爲最原始的數據,雖然他的音質是最棒的,但是同時也暴露出兩個很重要的問題: 普通播放器無法播放,數據裏不包含任何跟音頻格式有關的信息(聲道,採樣率等等); 體積過大,傳輸效率低;

原创 Android音視頻系列(七):PCM音頻單聲道與雙聲道的相互轉換

前言 上一篇我們已經學習了PCM音頻的保存格式,這一篇我們通過掌握的知識,完成PCM音頻的單聲道和雙聲道的互相轉換。 正文 首先我們把上一篇的最核心部分貼出來: 我們首先完成單聲道轉雙聲道的操作。 單聲道轉雙聲道 單聲道轉雙聲道

原创 Android音視頻系列(六):PCM音頻的存儲格式

前言 我們已經瞭解瞭如何使用AudioRecord錄製pcm音頻,所以我們要了解pcm數據的存儲格式,才能對其進行轉換。 正文 首先看一下圖片: 以上圖爲例,在初始化AudioRecord的時候可以設置錄製的格式: publi

原创 LifeCycle在Fragment中的使用

前言 今天在瀏覽技術大牛的公衆號文章,看到一篇文章講解了如何使用LifeCycle實現懶加載的新思路,經過學習和總結寫一篇播放博客分享給大家。 原文作者博客:https://juejin.im/post/5e085dafe51d4

原创 線性佈局和相對佈局的實現原理

前言 對於中高級的工程師來說,有一定的閱讀源碼的經驗已經必備技能之一了,尤其是 LinearLayout 和 RelativeLayout,我們先準備一下要掌握的知識點: LinearLayout 的 Weight 是如何實現的?

原创 新一代的Fragment管理庫:Navigation

前言 在以往的Fragment使用中,我們都是使用Fragment的事務進行添加,刪除,替換等操作,爲了快速開發,我們也會自行封裝一個FragmentController。在去年,Google推出了Navigation庫,目標是更

原创 MotionLayout:一個可以直接寫動畫的ConstraintLayout

前言 前幾天在逛公衆號的時候偶然看到了關於MotionLayout的文章,效果確實非常的神奇,所以在網上查看了相關的資料,可能是比較新的東西,所以資料上介紹的並不是很全,就自己嘗試了一下,寫一個筆記記錄一下心得。本文是爲了快速入門

原创 常見 Android 代碼兼容性問題及解決方案

前言 感謝大家對這篇文章的支持,我們將深入研究安卓中常見的兼容性問題的原因以及解決方案,主要目錄如下: 如何回調 Fragment 的 onActivityResult()方法; 監聽 ScrollView 滑動底部的兼容問題;

原创 SlidingUpPanelLayout:可以上下滑動的菜單佈局

前言 這幾天正在研究幾個比較有名的開源項目,偶然發現了SlidingUpPanelLayout這個神器,經過一番研究,和大家一起分享一下學習心得。 如果要使用滑動菜單,目前最流行的應該是DrawerLayout,這個由谷歌開源的控