原创 AnimatorSet.setStartDelay在Android4.4上運行問題

先上代碼: ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(textView1, "translationY", 0, 200, 0); ObjectAnimator o

原创 自定義蜘蛛網狀圖

運行效果: 繪製分爲三步: 1、繪製蜘蛛網格線 2、繪製格中線 3、繪製數據 獲取中心點想x,y座標和半徑: @Override protected void onSizeChanged(int w, int h, int oldw

原创 Android佈局優化

include標籤:用來複用佈局 比如標題欄等一些多個頁面含有同一個佈局的情況,可以把公用佈局單獨寫成一個xml,在需要用的時候使用incude標籤引用這個佈局文件。 例:activity_main_xml <?xml versi

原创 虛擬機對象的創建

1、對象的創建 流程圖: 虛擬機遇到一條new指令時,首先將去檢查這個指令的參數是否能在常量池中定位到一個類的符號引用,並檢查這個符號引用代表的類是否已經被加載、解析和初始化過。如果沒有先執行相應的類加載過程。接下來虛擬機爲新生對象

原创 Java運行時數據區域

運行時數據區域。 1、程序計數器 是一塊較小的內存空間。可看做當前線程所執行的字節碼的行號指示器。在虛擬機的概念模型裏,字節碼解釋器工作時就是通過改變這個計數器的值來選取下一條需要執行的字節碼指令,分支、循環、跳轉、異常處理、線程恢

原创 ANR的產生及日誌分析

ANR產生原因: 1、View的按鍵事件或者觸摸事件在特定的時間(5秒)內無法得到響應。 2、BroadcastReceiver的onReceive()方法運行在主線程中,在特定的時間(10秒)內無法完成處理。 3、Service的各

原创 AsyncTask源碼閱讀

AsyncTask使用 Android中的耗時操作需要放到子線程異步處理,除了使用Thread,Android提供了一個封裝好的組件AsyncTask。 使用方法代碼如下: public class AsyncTaskActivity e

原创 Android Volley框架的幾種post提交請求方式

From:  http://www.open-open.com/lib/view/open1407727047207.html 先簡單描述一下Google的Android開發團隊在2013年推出的一個網絡通信框架Volley.它的

原创 仿微信圖片選擇器

1、概述 圖片選擇器也是在APP開發中常見的一個功能,檢索手機本地的所有圖片以GridView的形式顯示在界面上,看起來一個簡單的功能,但是要想要儘量避免內存溢出,還想要UI操作儘可能的流暢圖片加載儘可能的快速,也不是簡單的一個s

原创 貝塞爾曲線繪製波浪

效果圖: 關於貝塞爾曲線的介紹可以參照文章 https://www.cnblogs.com/wjtaigwh/p/6647114.html 瞭解完貝塞爾曲線就來完成波浪自定義View 大體思路就是先繪製一條超出屏幕長的二階貝塞爾曲線,

原创 Java中的信號量Semaphore

1、信號量概念 信號量(Semaphore),有時被稱爲信號燈,是在多線程環境下使用的一種設施,是可以用來保證兩個或多個關鍵代碼段不被併發調用。在進入一個關鍵代碼段之前,線程必須獲取一個信號量;一旦該關鍵代碼段完成了,那麼該線程必須

原创 okHttp源碼閱讀

使用方法 okhttp基本使用方法: // 1、創建OkHttpClient對象 OkHttpClient okHttpClient = new OkHttpClient(); //2、創建Request對象 Request reques

原创 Android Notification 通知

這是Android 通知相關的內容的總結 android中通知用到的地方很多,經常有的例如推送消息,下載時的提示等。 Android 3.0 (API level 11)之前: 使用new Notification()方式創建通知: N

原创 Volley源碼閱讀

從Volley的使用步驟來看源碼,首先是new一個RequestQueue,來看Volley.java的newRequestQueue方法: 通過重載方法的調用最終會調用執行這個方法: 在這個方法裏首先初始化cacheDir,然後根據

原创 自定義View——簡單的圓點進度條

  說是進度條,更像是刻度條,先看效果。   再下來是代碼: import android.content.Context; import android.graphics.Canvas; import android.graphic