原创 讓預覽 RecyclerView 效果更方便的一個小技巧

讓預覽 RecyclerView 效果更方便的一個小技巧 簡評:使用 “@tools:sample/*” 資源來讓 RecyclerView(或 ListView)的效果預覽更方便。 相信在大多數的 Android 開發中都會和 Rec

原创 從google todo-mvp示例再次學習MVP

## 一、MVP簡介 ![](https://user-gold-cdn.xitu.io/2018/2/28/161db3be446574b5?imageView2/0/w/1280/h/960/form

原创 Android插件化完美實現代碼資源加載及原理講解 附可運行demo

Android插件化完美實現代碼資源加載及原理講解 附可運行demo 原創 2017年03月01日 18:02:15 <ul clas

原创 Android 快速實現自定義控件

自定義控件之繪圖篇(一):概述及基本幾何圖形繪製 原創 2014年08月27日 19:39:20 <ul class="article

原创 Android Virtualview:淘寶、天貓 又一個動態化、高性能的UI框架力作

Android Virtualview:淘寶、天貓 又一個動態化、高性能的UI框架力作 前言 淘寶、天貓一直致力於解決 頁面動態化的問題 在2017年的4月發佈了v1.0解決方案:Tangram模型 及其對應的 Android庫 vl

原创 2018 年初值得關注的 15 個新 Android 庫和項目

2018 年初值得關注的 15 個新 Android 庫和項目 這是我最新收集的 25 個 Android 庫和項目列表,你也許會發現它們有用,有趣,並值得查看一下。所有的都在最近 3 個月發佈的,排序不分先後。 開始查閱吧! 1. tr

原创 Android 快速實現7.0的Shortcuts效果

Android 7.1 App Shortcuts使用 Android 7.1已經發了預覽版, 這裏是API Overview: API overview. 其中App Shortcuts是新提供的一種快捷訪問方式, 形式爲長按應用圖標出

原创 徹底理解 Android 中的陰影

徹底理解 Android 中的陰影 如果我們想創造更好的 Android App,我相信我們需要遵循 Material Design 的設計規範。一般而言,Material Design 是一個包含光線,材質和投影的三維環境。如果我們想要

原创 內網穿透工具——ZeroTier One的使用

# 內網穿透工具——ZeroTier One的使用 雷哥哥是個愛折騰的人,爲了省幾個錢吧捨不得租個服務器,然後小煙還抽着。 咱們廢話也不多說了,直接上吧。 ### 一、爲啥用ZeroTi

原创 Android 快速解決Listview與ScrollView嵌套的問題,與分析解決問題原理

1、手動設置ListView高度 經過測試發現,在xml中直接指定ListView的高度,是可以解決這個問題的,但是ListView中的數據是可變的,實際高度還需要實際測量。於是手動代碼設置ListView高度的方法就誕生了。 /**

原创 Android 快速使用View的setSelected用法

一、概述 作用: setSelected() 方法是 Android 系統層級 View 類的方法,可以說所有的顯示控件,都有這個方法! 它的作用,是用來切換背景顯示的 運用: 日常開發中,經常會遇到一個控件 點擊 和 未點擊 是

原创 Android 快速給ListView去掉上下半月形效果

android:fadingEdge="none" android:overScrollMode="never" 添加這2行即可搞定

原创 Android 趣味發現-HorizontalScrollView的祕密

一、setMinimumWidth() 給 HorizontalScrollView 設置了 setMinimumWidth()之後,它的子view的weight屬性就會生效! 否則將無效! MainActivity.java mHs

原创 Android 快速掌握Fragment生命週期與使用技巧

一、概述 非常簡單的一副圖,記住就可以了,與Activity差不多 Activity生命週期==>點擊這裏 二、場景切換過程 下面簡單介紹下Fragment在不同場景的情況下,生命週期是如何進行切換的 1、打開/切換到該Fragment

原创 Android 快速用RxJava2做倒計時

繞過概述原理,直接上代碼: public class RxCountDown { public static Observable<Integer> countdown(int time) { if (time