原创 kotlin協程

協程是什麼 協程並不是 Kotlin 提出來的新概念,其他的一些編程語言,例如:Go、Python 等都可以在語言層面上實現協程,甚至是 Java,也可以通過使用擴展庫來間接地支持協程。 在使用協程之前,我們需要在 build.gradl

原创 gradle自定義plugin實踐之360多渠道加固打包

項目地址 使用AndroidStudio新建一個工程或者新建一個module, 在src/main下新建兩個文件夾,groovy、resources, PS:這裏的名字其實叫什麼都可以,之前的java、res我們可以直接刪除。 修改app

原创 熱修復技術實踐之類加載方案

項目地址 類加載方案的原理是在app重新啓動後讓Classloader去加載新的類。因爲在 app運行到一半的時候,所有需要發生變更的類已經被加載過了,在Android上是 無法對一個類進行卸載的。如果不重啓,原來的類還在虛擬機中,就無法

原创 Android動畫總結——佈局動畫、轉場動畫

之前一篇文章總結了View動畫、屬性動畫、幀動畫,這篇文章繼續總結佈局動畫、轉場動畫。 一、佈局動畫 佈局動畫的作用於ViewGroup,執行動畫效果的是內部的子View。佈局動畫在android中可以通過LayoutAnimation

原创 深入理解 Dijkstra 算法實現原理

迪傑斯特拉(Dijkstra)算法是典型最短路徑算法,用於計算一個節點到其他節點的最短路徑。 它的主要特點是以起始點爲中心向外層層擴展(廣度優先搜索思想),直到擴展到終點爲止。 (嗯,第一段是抄的,由於本人算法的基礎比較薄弱,我會

原创 我所經歷的Android面試

概述 筆者15年畢業一直在小公司,覺得完全靠自學已經到了自己的天花板,然後想進大型互聯網公司發展,所以年前辭職,放棄了年終獎,年後就直接來的北京,面試的公司有穩定的大公司,也有創業型公司,有些創業型的公司面試質量也挺高的,不輸於一些大公

原创 動腦高級UI預習資料——NestedScrolling滑動機制

1,如今NestedScrolling運用到很多地方了,要想好看一點的滑動變換,基本上就是使用這個來完成的,讓我們來簡單的瞭解一下。 2,NestedScrolling機制能夠讓父View和子View在滾動式進行配合,其基本流程如下:

原创 Android 音樂播放器

一個本地&在線播放器,聚合QQ音樂、網易雲音樂、百度音樂、蝦米音樂等多平臺音樂api實現,音樂播放多功能支持。 支持Android 5.0+ 支持在線歌曲下載 歌詞播放、桌面歌詞、桌面小控件 通知欄控制、線控播放、音頻焦點控制 QQ登錄

原创 如何給老婆解釋什麼是RPC

一個陽光明媚的早晨,老婆又在翻看我訂閱的技術雜誌。 “老公,什麼是RPC呀,爲什麼你們程序員那麼多黑話!”,老婆還是一如既往的好奇。 “RPC,就是Remote Procedure Call的簡稱呀,翻譯成中文就是遠程過程調用嘛”,我一

原创 View爲什麼會至少進行2次onMeasure、onLayout

前言 郭前輩的ListView源碼解析一文,曾提到View至少會進行2次onMeasure、onLayout,但限於篇幅,並未解釋原因,好奇就嘗試找了找原因。 原因猜想 害怕.jpg 由於不知道具體原因,只能結合已有的知識,

原创 精準計算RecyclerView滑動距離

小專欄 前去小專欄查看更多分享 前言 最近遇到需求,要計算RecyclerView滑動距離,用提供的computeVerticalScrollOffset()方法得到的值不是很準確。是基於item的平均高度算得,如果列表中item高度一

原创 Android高級動畫(1)

目錄 Android高級動畫(1)http://www.jianshu.com/p/48554844a2db Android高級動畫(2)http://www.jianshu.com/p/89cfd9042b1e Android高級動畫

原创 Glide V4使用指南

Glide的強大和靈活相信不需要多介紹了 本文使用Glide版本爲4.8.0,因爲使用的Java語言進行開發,涉及到使用Kotlin的部分還請參考官方文檔 SDK要求 最小SDK版本需要使用API 14(或者更高版本)

原创 Flutter Plugin開發流程

這篇文章主要介紹了Flutter Plugin開發流程,包括如何利用Android Studio開發以及發佈等。 今天這篇文章,給大家介紹如何開發Flutter Plugin中Android的部分。有關Flutter以及Flutte

原创 Shell腳本學習

1. 第一行必須是"#!/bin/sh" 它不是註釋,"#!/bin/sh"是對shell的聲明,說明你所用的是那種類型的shell及其路徑所在; 如果沒有聲明,則腳本將在默認的shell中執行,默認shell是由用戶所在的系統定義爲執