2013年10月28日 星期一

專案潛在殺手

專案潛在殺手
小型

特徵:.Button up規格設計
  • 較為保守,安全
  • 完全利用已能掌握之技術
  • 通常時程內能完成
  • 有充裕時間做測試及局部最佳化
2.風險:人員易閒置,規格規模較同類產品低

中型
特徵:以Top-down設計為多
  • 包含已知與未知技術項目
  • 通常邊做邊學其中部分技術
  2.風險:容易執著於技術的深入,忘記整體專案的各功能完整呈現

大型
特徵:以Top-down/Button up設計兼具
  • 求好心切,以致規格無法定義,或是定了之後又再新增
  • 缺點:程式人員人心惶惶不敢動手,深怕又要改規格

2013年10月20日 星期日

已知轉接器(adapter)可應用的GUI元件

  1. ListView
  2. Gallery
  3. AutoCompleteTextView
  4. MultiAutoCompleteTextView
  5. Spinner
  6. GridView
 當用到BaseAdapter時,在getView複寫時要注意:
  1. 此 getView為動態式呼叫,即畫面用到時才會呼叫
  2. 換言之可能造成重複new的情況:
    解法一:利用if (convertView == null) 做判斷
    解法二:利用ArrayList<所要NEW的View>事先做好

利用第三方Parse.com之推播軟體移植要點

(一)最基礎:僅能收到PUSH訊息
  1. 註冊帳號,並login到Parse.com,在下載SDK
  2. 依照QuickStart標籤之指示,實作相關程式於.java.xml
  3. 切換到Dashboard-->Push--->Send a push去新增Message
    • 少於180character
    • 可利用JSON格式
    • 可侷限群組收訊(利用Subscribe、subscription
(二)進階一:讓APP攔截到所Push的訊息(JSON格式)
1.要新增receiver於xml(PS.name要改成你的package name,action則可不改)
2.可考慮【訂閱頻道】 (Subscribe channel)練習:將SMS叫醒unlock改成push叫醒
(三)進階二: 讓APP能發出訊息給其他APP

2013年10月19日 星期六

Service+Receiver練習

四組程式互相對照:
V1:Activity自行發出Notification //此為對照用,因為Notification一般用在背景程式
V2: Activity+Receiver:由 Activity廣播給【自家】的Receiver,然後由Receiver發出Notification
//美中不足之處,此Activity並非結束(finish)
//而是移到後面(move To Back(true))
 V2-1: Activity無Receiver:由另一個 Activity發出廣播給【別家】的Receiver的示範方法
 V3:Activity+Service+Receiver:解決V2的缺點,讓Activity交出主控權給Service之後就finish();

2013年10月18日 星期五

Adapter(轉接器)相關重點

  1. 意義:可供3C產品的Adapte做比喻
    -->電的形式"轉變"  -->"資料形式"轉變
  2. Adapter常見的有:
    • ArrayAdapter:專精於字串資料
    • BaseAdapter:所有Adapter的基礎,專精於"複合式"資料(EX:圖文並茂)
    • Simple Adapter:專精於"靜態式(static)"表單
  3. ArrayAdapter的建構方式
    • 資料形式的決定
      1. String[ ]   -->利用new ArrayAdapter()建構子傳遞參數
      2.  list  -->利用new ArrayAdapter()建構子傳遞參數
      3.  resource的R.array  -->利用ArrayAdapter.createFromResource()參數傳遞
    • 版面形式的決定
      1. 自訂R.layout.mytext
      2. 官方定的android.R.layout.simple
      3. 其中android.R.layout.simple_list_item_2需特別處理
  4.  ListView的變化重點
    • Android為ListView特製一個ListActivity,可以省略調色盤步驟。也可以省略findView動作,改用getListView()
    • 資料的來源多樣化,例如
      1. DB:內定位置 or SDCard位置 or 來自internet
      2. File:內部空間 or SDCard or 來自internet
      3. Resource:StringArray
      4. 程式內宣告:String【】,List
    • ArrayAdapter之版面調整
      1. 必須回到父類別"BaseAdapter"複寫getView(...)方法,才能達成
      2. 首先要以super.getView(...)取得原版面之view
      3. 再以此view做findViewById抓出要修改的元件id
      4. 最後加以修改

2013年10月9日 星期三

關於Screen OFF -->On的一些應用

  1. Level-1:透過getWindow().setFlag()中的相關參數
    能讓Screen OFF -->On時,讓App Unlock。
    弱點:若此程式未被執行,則無法作用。
  2. Level-2:透過攔截Screen On的Receiver啟動Level-1的App,達成Unlock。
    弱點:若沒有人按下power鍵,使休息中的Screen OFF -->On,則無法作用。
  3.  Level-3:透過--遠端訊息(如簡訊、來電等等)之攔截,並以程式將Screen OFF -->On,則能啟動Level-2的App,連鎖反應,達成Unlock。
    優點:不須人為操作power OFF -->On。

2013年10月3日 星期四

Custom View-客製化視圖

  1. 隨你的喜好製作View元件
  2. 作法
    • New一個class,繼承View(或其子類別)
    • 需選取其【雙參數】建構子(Context、AttributeSets)
      Why三參數不可以,原因待查,第二個參數為傳遞相關屬性
    • 基本上都會複寫(overide) onDraw(Canvas canvas)或Draw(Canvas canvas)
    • 其Canvas參數(意指【畫布】可用來進行繪圖,EXcanvas.drawCircle
    • 其中會用到Paint物件,是作為畫筆()內定屬性有黑色、填滿模式
    •  
  3. 用法:
    • 回到調色盤,其歸類為【Custom & Library View】,按下refresh應能找到此文件。
    • 凡view所提共知相關方法都可以使用EX:visibility、OnClick、background color等
    • 甚至改寫Button可放文字上去。
    • 可以註冊onTouch,能對手是有更細分解:【按壓、滑動、離手】
  4. 客製元件的應用主要有兩類,一是整張畫布填滿畫面;二是將它視為一個元件
    因此,若要當成元件,通常會以onMeasure()複寫,並在其中以setMeasuredDimension(W,H)來規範其大小。
  5. 常見的畫筆用法有
    • 設定顏色
    • 設定筆粗
    • 設定筆觸風格【填滿或外框】
    • 設定消除鋸齒狀
  6. 圖示滑動Custom View之原理
    • 步驟一:按壓在(X0,Y0)->(10,10);
    • 步驟二:移動在(X,Y)->(11,10);
    • 步驟三:取得移動量(X-X0,Y-Y0)=(1,0);
    • 步驟四:取得View所在視窗的位置(v.getX(),v.getY());
    • 步驟五:加上移動量(v.setX(v.getX()+1),v.setY(v.getY()+0));