原创 安卓使用aidl進行進程間通信,使用自定義對象

1.server端 Aidl文件創建,創建後rebuild項目會生成對應的java文件如下: 定義AIDLBean文件 // Person.aidl package com.aiyuba.serverclient; // De

原创 點擊箭頭隱藏摺疊view

自定義ViewGroup,對設置layoutParam的bottomMargin不太理解 package com.aiyuba.animateview; import android.animation.Animator; im

原创 mac查看android源碼:Sublime Text

詳情:https://jingyan.baidu.com/article/48206aeafba820216ad6b3f5.html mac下也自帶一個Ctags, 使用Sublime Text安裝的Ctag不行, 採用一下方式

原创 自定義安卓拖拽動畫排序ViewGroup

本代碼通過OnDragListener實現安卓的拖拽。 OnDragListener API 11 加⼊入的⼯工具類,⽤用於拖拽操作。 使⽤用場景:⽤用戶的「拖起 -> 放下」操作,重在內容的移動。可以附加拖拽數據 不不需要寫⾃自

原创 仿微信朋友圈的可支持多點觸摸的彈性滑動Scrollview

彈性滑動scrollview,支持多點觸摸的接力型下拉滑動,動畫回彈。 package com.aiyuba.uiview; import android.animation.ValueAnimator; import andr

原创 安卓平滑曲線的實現:三次貝塞爾曲線

參考鏈接 https://www.jianshu.com/p/c4601bab860a 理論知識: 座標計算 令 A0和B3連線的斜率 k = (B3Y - A0Y) / (B3X - A0X) 常數 b = A3Y - k *

原创 flutter run提示Operation not permitted

錯誤 ProcessException: Operation not permitted Command: /Users/macbook/Developer/rembon/customer/android/gradlew -v m

原创 flutter運行項目掛在 "Resolving dependencies

直接跑項目掛在Resolving dependencies,然後也沒錯誤提示 1.嘗試修改了安卓下面的gradle版本,即gradlew。然後運行在termial運行./android/gradlew 錯誤還是無法得到解決 2.t

原创 Activity 從啓動到佈局繪製的流程分析

這篇文章主要是配合源碼簡單的介紹一下,程序的加載過程,Activity 中佈局的加載過程,能夠大體的瞭解整個過程。不過過度的追究細節,因爲裏面任何一個細節可能都夠你研究一段時間的!先了解掌握大體過程,再慢慢來! 開始啓動 我們都知

原创 自定義taglayout,記二擼自定義view

自定義標籤佈局 效果如下: package com.iyuba.pratice.view; import android.content.Context; import android.graphics.Rect; impor

原创 handler機制+ThreadLocal + 主線looper

handler涉及的4個對象,Looper,MessageQueue,Message,Handler。外加一個ThreadLocal 實現一個可以往子線程發消息的thread * <pre> * class Loope

原创 安卓AIDL的使用

一.AIDL的使用 服務端 1.服務端新建AIDL文件,點擊app直接新建AIDL文件 2.rebulid項目,在build文件夾下生成對應的java文件 3.新建一個service,重寫onBind()方法,並返回Binder

原创 sqlite事務介紹

應用程序初始化時需要批量的向sqlite中插入大量數據,單獨的使用for+Insert方法導致應用響應緩慢,因爲 sqlite插入數據的時候默認一條語句就是一個事務,有多少條數據就有多少次磁盤操作。我的應用初始5000條記錄也就是

原创 activity的啓動流程

簡單總結下 Activity 的啓動流程: 從用戶應用進程開始啓動,如果從桌面啓動,則爲 launcher 進程,用戶進程通過 Binder 機制與 system_server 進程進行通信 ActivityManagerServ

原创 安卓TimeZone,Locale

1.Calender設置時區 Date date = new Date(1359641834000L); System.out.println(date); Calendar calendar = Calendar.getInst