2014/08/12

Cast menu, while casting

























前陣子在看 Google Cast Design Checklist 的時候,他推薦當你正在投射螢幕時,可以在 cast menu 上實作一些細節及簡單的功能操作,不過在 Android Sender App Development 沒有看到關於這方面的補充,所以好奇去翻了一下要如何做出這樣的效果,最後發現只要在 MediaRouteActionProvider 加上自訂的 MediaRouteControllerDialog 就可以了。

於是參考這張圖練習寫了個 sample :D

2014/07/31

Playing HTML5 video on fullscreen in Android WebView

















Android WebView 如果碰到 HTML5 的 <video> tag 時,雖然可以正常播放影片,但是點選 fullscreen 卻沒有反應。目前找到的解法是先到 AndroidManifest,在要播放影片的那一面加上 HardwareAccelerate,

接著覆寫 WebChromeClient 的 Method: onShowCustomView, onHideCustomView

主要目的是在 onShowCustomView 時,將得到的 View 放到最上層;在 onHideCustomView 時把剛才的 View 移掉,將原本的 WebView 放回來。

Reference: Android Webview app won't let video player go full screen

2014/06/25

.gitignore

最近同事不小心將 project 的 .idea 設定 commit 了,我才認真思考了一下要如何避免這種問題,為什麼我們在 .gitignore 忽略了 .idea 也沒效果,那是因為我們在那之前有先將 .idea push 上去過才會發生這種無法忽略的情況。於是我翻了一下 Google 在 GitHub 上的 Android project,參考了他們的 .gitignore

接下來我們還需要移除在 GitHub repo 上不需要的檔案,以 .idea 為例,

這樣以後這些非必要檔案就不會再出現在異動清單中,造成 commit 手誤了。
另外還可以參考 .gitignore 產生器:gitignore.io

2014/05/10

Save ArrayList to SharedPreferences

如果我們想要將 ArrayList 物件儲存到 SharedPreferences 裡,該如何做呢?
在 API level 11 之後,可以利用 Set 達到目的。

但如果需要同時支援以下的版本,可以對 ArrayList 做 serialize 及 de-serialize 後存取,


這裡使用到了 ObjectSerializer (Apache Pig project),下面是稍作修改的版本。

Reference: Save ArrayList to SharedPreferences

2014/04/17

View.isInEditMode()

今天參加 Android 高雄開發者社群聚會,聽到了一個好用的 method,當你在使用自己的 Custom View 時,常會碰到無法在 GUI Design 的介面中正常顯示的問題,並且會看到下面這段提示,

Tip: Use View.isInEditMode() in your custom views to skip code or show sample data when shown in the IDE

因為預覽時只會根據 xml layout 建立物件但不會初始化,所以 context  會是 null,這時只要在會用到 context 的地方運用這個 method,就可以正常顯示 UI 了。