原创 Android UI 利用Seekbar模擬Iphone滑塊解鎖

之前項目裏涉及到的,網上找實現方案沒找到。後來自己用SeekBar模擬出來了。 原理很簡單。註冊SeekBarChangeListener,再回調函數裏控制滑塊的變化。當把滑塊移到0-70的範圍的時候,向下移動一個常量值,直到0。當在7

原创 Android 推送之原理與初觸Androidpn(Android Push Notification)

由於最近項目中涉及到了android推送,所以看了一些關於android推送方面的東西,總結到後面我們知道android推送的實現可以歸結爲3種: 1、POLL,拉。大致思路爲向服務器定時的發送請求,然後自己讓服務器返回信息。 優點:實現

原创 Android AlarmManager

Android開發中除了使用Timer和TimerTask開發定時任務外,還可以使用系統自帶的Alarm服務。之前有比較一下Timer和AlarmManager來刷新界面數字,發現用Timer的休眠了手機後時間會變慢,所以如果要開發時間精

原创 Android 開發技巧之Log寫入文件

在Android開發的時候經常會遇到手機offline,影響日誌的查看與分析。爲此,我寫了一個簡單的類用於將日誌寫入文件中,便於以後調試的時候可以拿來使用: package org.test; import java.io.Buffe

原创 Android UI 利用Drawable Shape給控件加邊框/立體效果

在軟開中,經常需要對原生的控件UI進行修改,最近項目由於UI沒到位,所有有些帶邊框的有立體效果的UI要自己實現,實現方法是用XML寫Shape。 關於Drawable Shape XML的詳細內容官方API doc提供的還是挺詳細的:ht

原创 組合模式(Composite Pattern)

組合模式:允許你將對象組合成樹形結構來表現“整體/部分”層次結構。組合能讓客戶以一致的方式處理個別對象以及對象組合 本質上就是以樹形的數據結構來完成數據的存儲, 而對其的遍歷就是對樹形結構的遍歷。 案例:帶有子菜單的菜單 爲了可以讓客戶

原创 使用 Jenkins 優化打包提測流程

涉及知識點 Jenkins Android Studio(Gradle) 蒲公英 Jenkins 我的理解,就是可以幫我們減少重複工作的一個流程化執行工具。詳見百度 安裝 Jenkins 我使用了最簡單方式,下載純的 war 文件,然

原创 解決 Android N requires the IDE to be running with Java 1.8 or later

最近升級了一下IDE,升級到了AS 2.1.1,打開Layout Editor的時候遇到這個問題: Android N requires the IDE to be running with Java 1.8 or later AS裏面我

原创 策略模式(Strategy Pattern)

設計原理1:找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起 設計原理2:針對接口編程,而不是針對實現編程 設計原理3:多用組合,少用繼承 選自《Head First 設計模式》: 策略模式(Strate

原创 Android ListView 第一次設置Adapter時候getView調用多次

之前遇到這個奇怪現象,記錄一下: 使用Listview並設置Adapter時, 會回調多次getView,比如我有4個items,按理說getView應該是調用一次(打出4個log),結果回調有4次(4*4個log)。 原因: Listv

原创 Activity、Window、View的關係

荒了兩年多不寫blog,開篇就來點基礎的吧。 這個問題很早之前看別人的文章提到過一次,但是也記不清了,下面是我自己整理的: 其實如果從圖上看,關係其實已經很明朗了 分析方法說明: 在寫App的時候,這兩者直接的關係似乎是最明瞭的。

原创 迭代器模式(Iterator Pattern)

迭代器模式:提供一種方法順序訪問一個聚合對象中的各個元素,而又不是暴露其內部的表示 案例:菜單項目的打印 代碼: public interface Menu { public Iterator createIterator(); }

原创 狀態模式(State Pattern)

狀態模式:允許對象在內部狀態改變時改變它的行爲,對象看起來好像是修改了它的類 類圖本質上和策略模式一樣 差別就在於策略模式偏重於外部或者是對象本身對行爲的改變,而狀態模式是在於對象內部隨着時間的變化,事件的發生,對象狀態發生變化後而導致

原创 命令模式(Command Pattern)

命令模式:將“請求”封裝成對象,以便使用不同的請求、隊列或者日誌來參數化其他對象。命令模式也支持可撤銷的操作 案例:用戶和多調節燈案例,並且用棧實現多撤銷 代碼:圖裏面沒有畫出棧,我在User里加了記錄命令執行的棧,然後Light裏

原创 模板方法模式(Template Method Pattern)

模板方法模式:在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟 代碼: public abstract class CaffeineBeverage {