Android 代碼動態設置 layout_centerHorizontal:RelativeLayout.LayoutParams.addRule 方法
需求:Java/Kotlin 代碼中動態設置 View 的 `android:layout_centerHorizontal=true` 效果。 核心 API
Android TextView 僅顯示左、上、底三邊邊框實現:負 margin 技巧與 Layer-list 方案
需求:TextView 邊框僅顯示左、上、底三邊,**右邊框隱藏**。 方案一:負 margin 偏移隱藏右邊框(快速修補) <TextView
Android 九宮格圖片實現 TextView 折疊/氣泡背景:.9.png 制作與屬性設置
需求:TextView 顯示類似對話氣泡/折疊效果的背景,內容自適應、邊框不變形。 核心技術:NinePatch (.9.png) 一張標記了**可拉伸區域*
Java 解析 XML 數據提取指南:DOM4J 替代方案與 XmlPullParser 原生實現
需求:解析特定格式 XML,提取 Animation 屬性、Module 幾何數據、Frame/Sprite 變換矩陣、Action/Sequence 時長等。
Android ImageView 往復旋轉動畫實現:AnimationListener 鏈式播放兩個 RotateAnimation
需求:ImageView 先順時針旋轉 20°→50°,再逆時針 50°→20°,無限循環,模擬搖擺效果。 方案:兩個 RotateAnimation + A
Android ListView 自定義圖片適配器實現:ViewHolder 模式與異步加載最佳實踐
需求:ListView 顯示 10 項,每項包含標題文本 + 左側圖片 + 背景圖。自定義 Adapter 實現高性能渲染。 核心模式:ViewHolder
iOS 截止日期判斷實現:NSDate timeIntervalSinceNow 比較當前時間與目標日期
需求:應用有截止日期(如 2013-01-31),啟動時判斷是否已過期,顯示不同提示。 核心方法:NSDate.timeIntervalSinceNow
Android Dialog 獲取根視圖 ListView 空指針修復:View.inflate 替代 getCurrentFocus()
現象:Dialog 使用 XML 佈局(根節點為 ListView),在 onCreateDialog 中嘗試 d.getCurrentFocus().getR
Android 自定義可旋轉控件實現:onDraw 中 Canvas.rotate + 觸摸角度計算完整方案
需求:自定義 View 實現類似旋鈕的旋轉交互,手指拖動邊緣旋轉,支持動態設置角度、獲取當前角度。 核心思路 onDraw 中 canvas.rot
Android 拍照保存至自定義目錄:FileProvider 適配 Android 7+ 與 MediaStore 插入相冊
需求:拍照後保存至 SD 卡自定義目錄 /MyFolder/,並出現在系統相冊中。需適配 Android 7.0+ FileProvider 強制規範。 核心
iOS 字符串插入後綴名處理:pathExtension 与 stringByDeletingPathExtension 組合實現文件名中插入字符
需求:文件名 DSC004.jpg → 在擴展名前插入 -Add → DSC004-Add.jpg。需處理多點文件名(如 image.v1.2.png)。 標
Android SimpleCursorAdapter 填充 ListView 崩潰排查:DBAdapter 初始化順序與異常捕獲補全
現象:使用 SimpleCursorAdapter 顯示數據庫查詢結果,應用啟動崩潰,Logcat 未直接顯示業務異常。 核心問題:DBAdapter 實例化
Android 代碼動態修改 Selector (StateListDrawable) 單態圖片:重建替換而非修改現有對象
需求:ImageView 背景為 Selector (XML 定義),運行時需根據條件替換 state_pressed、state_focused、defaul
Android 線程中更新 UI 卡頓優化:Handler sendMessageDelayed 頻率設置錯誤導致主線程阻塞
現象:使用 Handler 定時更新 SeekBar,但 UI 其他元素凍結、響應極慢。 問題代碼 private Handler mHandler = ne
Android BroadcastReceiver 中使用 AlarmManager:保存 Context 獲取系統服務
痛點:BroadcastReceiver 無 getSystemService() 方法,直接調用編譯報錯。 解決方案:onReceive 參數 Contex
Android UserManager.isUserAGoat() 彩蛋方法解讀:永遠返回 false 的遙測占位符
發現:Android 4.2 新增 UserManager.isUserAGoat() 方法,文檔稱「判斷用戶是否為山羊(以確定是否傳送)」。 源碼真相 pu
Android musicFx 音效作用機制深度解析:從 SharedPreferences 到 AudioFlinger 混音管道
背景:Android 2.3+ 引入 musicFx 應用,提供均衡器、低音增強、虛擬化等音效,設置持久化至 SharedPreferences。本文追蹤數據流
Android 計算用戶輸入時間與系統時間差:Calendar.getTimeInMillis() 毫秒級精確 Diff
需求:比較用戶通過 DatePicker/TimePicker 選擇的日期時間與系統當前時間,獲取差值(天/時/分/秒/毫秒)。 核心方法:Calendar.