原创 Android TouchEvent處理機制

1,佈局結構: Activity→ViewGroup→View 2,TouchEvent觸發到的主要方法如下: 層級 用到的方法 Activity dispatchTouchEvent(MotionEvent ev

原创 裁減jar包

        控制android app的體積,一直是開發者無法繞開的問題。尤其是當我們接入第三方sdk時,常常只是用到其中很少的功能,卻要接入完整的sdk,導致apk體積增大(如google的GMS,完整jar包有5.9MB,但通常a

原创 實用的Android開源工具(持續更新)

1,fresco GitHub: https://github.com/facebook/fresco fresco是來自Facebook的圖片處理工具, 與傳統的圖片緩存工具相比,其強大的內存管理特性一度被認爲是黑科技,使得它一經問世

原创 APK瘦身方案

一、圖片壓縮 1,使用tinypng對圖片進行有損壓縮 詳細資料見:https://tinypng.com/ 2,png換成jpg 不需要透明層的背景圖片、宣傳圖片等大圖使用jpg格式 3,圖片使用webp格式 android 4

原创 使用mount掛載system目錄爲讀寫權限

1,獲取system分區全名: 命令入下: adb shell mount | grep “system” 執行結果如下(當前權限爲ro,即read only): /dev/block/platform/sdhci-tegra

原创 常用排序算法

1. 冒泡排序 1.1 算法原理: S1:從待排序序列的起始位置開始,從前往後依次比較各個位置和其後一位置的大小並執行S2。 S2:如果當前位置的值大於其後一位置的值,就把他倆的值交換(完成一次全序列比較後,序列最後位置的值即此序列最

原创 單例模式的最佳實現(Java)

public class Singleton { /** * Private constructor prevents instantiation from other classes */ priv

原创 Android的各種零碎知識點(持續補充)

1,將EditText的光標放在尾部: editText.setSelection(editText.getText().length()); 2,使用SparseArray<E>替換HashMap<Integer,E>可以提升查找效率。

原创 從Message生產到消費的過程理解Handler消息機制

Handler消息機制用於實現同一進程的線程間通信,其本質就是在A線程生產Message,然後在B線程消費掉Message。 1,Message生產流程: Message的生產流程是指將Message加入到MessageQueue的消息隊

原创 Android APK打包流程

1,使用aapt編譯資源文件,生成R.java和編譯後的資源文件 2,處理aidl文件,生成對應Java文件 3,將上兩步生成的Java文件和項目源代碼一起編譯生成class文件 4,使用dex工具將第3步生成的class文件和引用

原创 android設備常用屏幕參數

level resolution densityDpi density fontScale ldpi 320*240 120 0.75 - mdpi 480*320 160 1.0 - hdpi 800*480 240

原创 常用查找算法

1. 順序查找 1.1 算法原理:   順序查找是在一個已知無(或有序)序隊列中找出與給定關鍵字相同的數的具體位置。原理是讓關鍵字與隊列中的數從第一個開始逐個比較,直到找出與給定關鍵字相同的數爲止,它的缺點是效率低下。 1.2 算法實現(

原创 ListView設置EmptyView

ListView以及其他繼承自AdapterView的類可以通過setEmptyView(View)方法很簡單地處理空狀態。當需要繪製AdapterView時,如果適配器爲null或者適配器的isEmpty()方法返回true,此時會顯示

原创 Android經典Exception彙總

1,android.view.WindowManager$BadTokenException: Unable to add window — token android.os.BinderProxy@447a6748 is not val

原创 自定義Dialog

1,自定義style:res/values/style.xml <style name="customDialog" parent="android:style/Theme.Dialog"> <item name="andro