[Mooc][Android]Programming Mobile Aplication on Android Platform(week6) - Graphic/Multiple Touch/Multiple Media

前言: 到了第六週,也只剩下三週,要好好努力了. 感覺這個禮拜的內容有點多,看來得仔細把筆記做一下,也希望都能熟悉各個元件的用法. 筆記: Graphic 有兩種畫的方式: Draw on canvas: 比較複雜,需要變動的繪圖. Draw on view: 比較簡單,不需要變動的部分. Draw on View: 可以有兩種方式來達成,將所有需要的外觀用xml來敘述,或是寫在程式碼裡面的MainActivity的OnCreate也是可以. xml 可以是引用其他的xml,比如說顏色敘述可以是另外一個xml // In main.xml android:background="@drawable/sq2" // In drawable/sq2.xml < ?xml version="1.0" encoding="utf-8"?> < shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > < solid android:color="#FFFFFF00" /> < stroke android:width="25dp" android:color="#FFFF0000" /> < /shape> Draw on Canvas: 透過View 來達成: (比較少更新) 透過Canvas 提供的View 來使用 透過 OnDraw 來更新畫面 透過SurfaceView 來達成: (需要常更新) 具有比較好的效能來更新UI 不是屬於UI Drawing Thread來更新畫面. 更新方式: (透過Surface callback) surfaceCreated() surfaceChanged() sufaceDestroyed() 使用流程: SufaceHolder.lockCanvas() 先把UI resource 鎖定 透過類似CCanvas.drawBitmap 來更新畫面 SufaceHolder.unlockCanvasAndPost() 來歸還UI resource View Animation: TransitionDrawable: 用於兩個Drawable資源的切換,不過僅支援fade in/out的過場特效 Animation: 可以做許多不同的Animation,比如說Alpha 變換(也就是fade in/out) 或是 rotate , translate與 scale(大小). ValueAnimator: 可以透過onAnimationUpdate callback 來調整每個animation 要改變的數值 ViewPropertyAnimator: 每個view本身都有一個 .animate() 的ViewPropertyAnimator可以取用 可以透過 Runnable去串接下一個Runnable來達成連續Animation的效果 // TransitionDrawable Drawable[] layers = new Drawable[2]; //Two drawable in list layers[0] = new ColorDrawable(Color.TRANSPARENT); layers[1] = new BitmapDrawable(bitmap); TransitionDrawable drawable = new TransitionDrawable(layers); image.setImageDrawable(drawable); drawable.startTransition(300); // Animation java code // Create animation mAnim = AnimationUtils.loadAnimation(this, R.anim.view_animation); // Set Animation in ImageView when...
繼續閱讀

[MOPCON2014]蒐集一些有趣的MOPCON場次(1)

前言: 雖然我沒有去MOPCON2014,但是還是有去看一些有趣的題目,順便找找他的slide出來分享一下. 這裏有全部議題. 有趣的題目: 講個秘訣之:離開新手村後也可以順便聽一下的程式「設計」指南 Slide: http://www.slideshare.net/excusemejoe/programming-x-design-mopcon-2014 內容與心得: 要提到程式設計中”設計”的思維.既然我們都稱自己是程式設計師,那麼你的作品是不是真的符合所謂”設計”的概念? 裡面提到的設計心理學,如果將它應用到程式設計: 預設用途: 設計任何程式之前,對於他的預設用途必須要先想清楚. 指意: 要能讓別人一看就能了解並且不容易搞混的API設計. 使用侷限: 設計各種功能與API要注意到可能會有許多使用上的侷限.不論是[物理][文化][意義]或是[邏輯]上. 對應性: 設計的時候要有好理解的對應性,才能讓人馬上上手. 回饋: 設計適當的回饋,可以讓使用的人了解到目前的狀況. 概念模型: 高度簡化下,對於事物的如何運作的解釋. 如同講者提到的,其實任何一種設計都是圍繞著人走.所以就算是程式設計也要圍繞者使用的人為出發點去思考,能能算是比較好的設計觀念. in in der 響應式編程 Slide: http://www.slideshare.net/jingtw/in-in-der 內容與心得 FRP (Functional Reactive Programming) FP + RP 賦予 RP 有 FP 的函式 // Impreative Programming int x,y,z; x=1; y=2; z= x+y; //1+1 y= 2; print("%d", z); //z=2 // Reactive Programming int x,y,z; x=1; y=2; z= x+y; //1+1 y= 2; print("%d", z); //z=3 Best software architecture in app development Slide: http://www.slideshare.net/anistarsung/mopcon-2014-best-software-architecture-in-app-development 內容與心得: 如何容易地展現內容? 建議使用 ListView其中 UICollectionView是功能強大的部分. 優點: UICollectionView 可以自訂顯示方式,並且可以對應到不同的大小顯示方式. Cell 可以重複用,具有彈性的顯示方式 具有自動更新與記憶體管理的部分 修改一次可以同時變更許多地方: (主要提到將一些常用到的顯示部份抽取出來) 顏色: 將顏色變成類別內的變數[參考下面的程式碼(1)] UI Layout 建議使用Xib 而不是Stroyboard 原因: Storyboard 不易閱讀,而且開很大的時候相當耗費時間,並且時常有衝突不好修改. Unit Test: 建議使用XCTest Framework 可以使用內建的Automation 來達成自動測試,就算是GPS相關的問題也可以透過GPX Creator 來測試. 顯示你的內容 利用CoreData ,最好用MagicalRecord Lazy Loader 來顯示image 而不去阻擋UI thread https://developer.apple.com/Library/ios/samplecode/LazyTableImages/Introduction/Intro.html Data Model 來表現MVC //(1) + (UIColor *) themeBackGround { return [UIColor colorWithHexString:@"dedede"]; } 大規模網路服務管理的起點 - Docker and Consul Slide: https://docs.google.com/presentation/d/1s_BawQeZq-ZwI-ULTvLdHBFmJpUeybY7LDWzP28lr-A/edit#slide=id.g4d878b993_00 Hack & Go! Redefining API Slide: http://www.slideshare.net/BenLue/hack-go?qid=55bdb182-e70c-4d52-8f3a-d4cb9eff5ccd&v=default&b=&from_search=3
繼續閱讀

[MOPCON2014]蒐集一些有趣的MOPCON場次(1)

前言: 雖然我沒有去MOPCON2014,但是還是有去看一些有趣的題目,順便找找他的slide出來分享一下. 這裏有全部議題. 有趣的題目: 講個秘訣之:離開新手村後也可以順便聽一下的程式「設計」指南 Slide: http://www.slideshare.net/excusemejoe/programming-x-design-mopcon-2014 內容與心得: 要提到程式設計中”設計”的思維.既然我們都稱自己是程式設計師,那麼你的作品是不是真的符合所謂”設計”的概念? 裡面提到的設計心理學,如果將它應用到程式設計: 預設用途: 設計任何程式之前,對於他的預設用途必須要先想清楚. 指意: 要能讓別人一看就能了解並且不容易搞混的API設計. 使用侷限: 設計各種功能與API要注意到可能會有許多使用上的侷限.不論是[物理][文化][意義]或是[邏輯]上. 對應性: 設計的時候要有好理解的對應性,才能讓人馬上上手. 回饋: 設計適當的回饋,可以讓使用的人了解到目前的狀況. 概念模型: 高度簡化下,對於事物的如何運作的解釋. 如同講者提到的,其實任何一種設計都是圍繞著人走.所以就算是程式設計也要圍繞者使用的人為出發點去思考,能能算是比較好的設計觀念. in in der 響應式編程 Slide: http://www.slideshare.net/jingtw/in-in-der 內容與心得 FRP (Functional Reactive Programming) FP + RP 賦予 RP 有 FP 的函式 // Impreative Programming int x,y,z; x=1; y=2; z= x+y; //1+1 y= 2; print("%d", z); //z=2 // Reactive Programming int x,y,z; x=1; y=2; z= x+y; //1+1 y= 2; print("%d", z); //z=3 Best software architecture in app development Slide: http://www.slideshare.net/anistarsung/mopcon-2014-best-software-architecture-in-app-development 內容與心得: 如何容易地展現內容? 建議使用 ListView其中 UICollectionView是功能強大的部分. 優點: UICollectionView 可以自訂顯示方式,並且可以對應到不同的大小顯示方式. Cell 可以重複用,具有彈性的顯示方式 具有自動更新與記憶體管理的部分 修改一次可以同時變更許多地方: (主要提到將一些常用到的顯示部份抽取出來) 顏色: 將顏色變成類別內的變數[參考下面的程式碼(1)] UI Layout 建議使用Xib 而不是Stroyboard 原因: Storyboard 不易閱讀,而且開很大的時候相當耗費時間,並且時常有衝突不好修改. Unit Test: 建議使用XCTest Framework 可以使用內建的Automation 來達成自動測試,就算是GPS相關的問題也可以透過GPX Creator 來測試. 顯示你的內容 利用CoreData ,最好用MagicalRecord Lazy Loader 來顯示image 而不去阻擋UI thread https://developer.apple.com/Library/ios/samplecode/LazyTableImages/Introduction/Intro.html Data Model 來表現MVC //(1) + (UIColor *) themeBackGround { return [UIColor colorWithHexString:@"dedede"]; } 未完待續…..
繼續閱讀

[Mooc][Android]Programming Mobile Aplication on Android Platform(week5) - 2 Assignments

前言: 由於這個是我的有繳學費的課程,其實我很認真每天都把進度跑完.誰知道,本週竟然有兩個程式作業,一個是電腦評分,一個是同學們之間的互評. Program Assignment: 這次的是Notification的作業,其實並不會太困難.要填上的程式碼也不多.只是原先題目拼字有先錯誤,所以找了一下. Peer Assignment: 這次Peer Assignment 我覺得比較困難,是因為要搞UI的layout,幾個重點分享給大家. 如何在 Andorid 上面做出分割的塊狀? 主要就是利用 Linear Layout 然後記得要設定weight (他會幫你用分割,舉例而言: 兩個button 都設定weight 為1 的話就是平分) Seekbar 的設定顏色部分,可以透過 setBackgroundColor 並且使用 Color.argb() 來調整顏色 最後,如果要繳交Video Snapshot 在Mac上面可以直接透過QuickTime Player來使用 [檔案] -> [新增螢幕錄製] 點下錄影 然後用滑鼠勾勒出你要的部分就可以. 參考這段說明: http://www.wikihow.com/Record-Your-Screen-on-Mac 以上就是這次的Peer Assignment 的影片 http://youtu.be/NMd7Tw5aKL4 參考: 如何用Quicktime Player 來做桌面錄影 http://www.wikihow.com/Record-Your-Screen-on-Mac
繼續閱讀

[Mooc][Android]Programming Mobile Aplication on Android Platform(week5) - Notification and Threads

前言: 來到第五週,其實作業已經越來越花時間.需要好好把握時間趕快做完才行. 筆記: 關於 Broadcast: 可以是有順序的(利用setPriority來設定),其中Priority 越高順序越前面. 一個broadcast 可以同時被多個broadcast receiver 接收. 其中一個Broadcast receiver 可以透過abortBroadcast 來強迫其他receiver來收取broadcast. 關於sticky broadcast 比較需要注意的是: 接收 sticky broadcast可以收到在註冊前發生的變動. 關於 Threads: Java的thread 建立之後不會馬上執行.需要跑start() 背景的thread無法執行UI的相關動作.(這個地方跟 WinApp 跟 iOS App都一樣) 需要執行要跑 runOnUIThread() 或是每一個UI物件都有自己的View的post函式.View.post(Runnable action) 關於AsyncTask: 流程: OnPreExecute -> doInBackground() -> publishProgress() -> OnPostExecute() 其中如同上圖,有相對應的UI thread method OnProgressUpdate()最後 ObPostExecute() 也可以執行UI的更新. 關於Alarm: 註冊後,就送機器進入睡眠模式一樣可以收到.(除非關機) 要取用Alarm需要使用 getSystemService(Context.ALARM_SERVICE) 來取得. Kitkat (API 19) 之後,Alarm的使用變成inexact,也就是說他會盡量把幾個差不多時間的Alarm收集起來一起發送,即時他們時間有些許的差異.透過這個方式來節省電源的使用. (詳細可以參考這段) 關於Networking: (Socket, JSON, URLRequest) 要做網路溝通使用 HttpURLConnection 而不要使用 AndroidHttpClient 跟 DefaultHttpClient,由於Android team在 Android 2.3之後就不太積極開發. JSON的取用方式: 要先用ResponseHandler 接回 client的 response 之後再逐一分解. data array 可以用 JSONObject.getJSONArray 每個mapping key/value 可以使用JSONObject.get(key) XML的取用方式: 主要有三種存取的方式: (DOM, SAX, PULL) 其中記憶體消耗最高的是DOM,因為讀取的時候會把所有的XML樹狀資料全部載入. SAX與PULL都是屬於event callback的方式,而PULL提供更多的彈性可以逐一的存取,並且可以控制event的結束. 參考資料: 關於broadcast的一些整理 http://blog.csdn.net/way_ping_li/article/details/8016688 Broadcast 種類整理: http://lazyjames.logdown.com/posts/147044-broadcast-receiver 關於Threads Oracle上面的Toturial http://docs.oracle.com/javase/tutorial/essential/concurrency/threads.html O’reilly 有專門的書籍介紹 Java Threads http://www.oreilly.com.tw/product_java.php?id=a159 [Android] Android 官方document [http://developer.android.com/reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver](http://developer.android.com/reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver) [Android]關於AlarmManager的使用 http://developer.android.com/reference/android/app/AlarmManager.html 關於 HttpRequest 的挑選與基礎教學 http://android-developers.blogspot.tw/2011/09/androids-http-clients.html 關於 Android XML 分析方式的講解(DOM, SAX, pull) http://www.cnblogs.com/xiaoluo501395377/p/3444744.html http://www.cnblogs.com/JerryWang1991/archive/2012/02/24/2365507.html
繼續閱讀

[iOS][Python]手機掃描條碼下載相關的登入帳號數據

記錄一些關於開發這個的一些心得,主要就是手機會透過掃QR-code的方式,來讀取一些帳號資料讓手機可以登錄到相關的服務. 也就是說, 其實手機不用再透過手動的輸入帳號與密碼.而是使用QR-Code掃描. 所以流程就是: 手機打開App 掃描QR-code 連接到某個Json網頁 分析json 資料變成登入帳號密碼 登入某些服務. 剛好遇到我切換到xcode6.1,這裡有一些筆記: Xcode 6.1 GM似乎不太穩定,遇到問題有以下兩個: Random crash: 而且Mac App會收起來(?)真百思不得其解. 主要發生crash 在用滑鼠去點執行或是停止,但是用快捷鍵 Cmd + R 跟 Cmd + . 是沒問題的. Storyboard 物件,變更大小的時候,某些物件會消失. 關於使用的PAAS Server 之前架設django的資料庫管理,當然還沒有連到外在的資料庫,而是使用SQLlite.所以當服務被重啟(PAAS每個30分鐘到一個小時會把你的服務設定維修棉.需要重啟大概要30 sec的啟動時間). 服務重啟~檔案會恢復當初上傳的狀態. 暫時解決方式,先把需要測試的資料上傳SQLlite檔案上去. 之後會把資料移到MongoDB HQ XCode 6.1使用到不知道 X64的toolkit 會出現錯誤 :”Undefined symbols for architecture arm64” http://stackoverflow.com/questions/19213782/undefined-symbols-for-architecture-arm64 建議處理方式: 需要到以下地方修改 “Build Setting-> Architectures”那邊去修改,先看看原先的設定是什麼,由於我使用 Zbar code reader http://zbar.sourceforge.net/,所以他的用法是“$(ARCHS_STANDARD_32_BIT)” “Build Setting-> Valid Architectures” 改成 “arm64, armv7 armv7s” 相關資料: 掃描許多qrcode或是barcode 的toolkit Zbarcode http://zbar.sourceforge.net/ 解決沒有x64 module編譯錯誤 http://stackoverflow.com/questions/19213782/undefined-symbols-for-architecture-arm64 受不了xocde 6.1? 這裏有 xcode 5.1 http://stackoverflow.com/questions/10335747/how-to-download-xcode-4-5-6-and-get-the-dmg-file 如果快速把iphone storyboard搬到iPad上? 但是我反之似乎不成功 http://stackoverflow.com/questions/8465769/converting-storyboard-from-iphone-to-ipad Django MongoDB 連接方式 https://django-mongodb-engine.readthedocs.org/en/latest/topics/setup.html MongoDB HQ(改名為compose.io) 免費的線上MongoDB host 服務 https://www.compose.io/
繼續閱讀