2014年8月20日 星期三

[Android] Clean Master "遊戲"捷徑的圖標是怎做的?

著名的工具軟體Clean Master有一項遊戲加速的功能, 它會放一個捷徑在桌面上, 而它的長得就像是跟資料夾一樣:



之前沒仔細去看它, 一直以為它是個小工具(AppWidget), 但其實它只是個捷徑而已, 點選它會跳出一個透明背景的對話窗, 所以很容易誤以為是桌面上的資料夾(如圖右)


這用了個小技巧, 雖然有點唬人, 但其實不難, 以下就如法炮製一個類似的吧!



在這實驗, 就把Youtube, Google plus, Google map三個app的圖示放一起, 邊框, 麻煩就先省略



利用”com.android.launcher.action.INSTALL_SHORTCUT”這個Intent可以在桌面上創建捷徑, 應該幾乎所有的桌面軟體都有支援, 關鍵點在於這Intent裡會帶的Intent.EXTRA_SHORTCUT_ICON, 這可以帶一個Bitmap來當作這個捷徑的圖示, 沒意外的, 就是從這邊動手


因為我們需要把四個圖示畫到一個上面, 所以每個圖示變成原本的1/4, 因此, 在用BitmapFactory.decodeResource載入圖示時, 可以把sample size設成2(也就是1/4大小), 這樣可以減少一些記憶體的使用, 取得了圖示後就可以把它們畫到另一個新的Bitmap了


要注意的是, 要用INSTALL_SHORTCUT的話, 要在AndroidManifest.xml裡加上:



<uses-permission android:name=”com.android.launcher.permission.INSTALL_SHORTCUT” />



這方法的缺點是, 一旦捷徑被創建好後, 就沒機會改它的圖示了




from Tumblr http://ift.tt/1peFiu7

via IFTTT

2014年8月19日 星期二

[Android] 土製Play store API

認真說的話, 這也算不上啥非官方API, 算是一個為了抓取Play store上資訊的一個小小工具: PlaystoreUtil


現在很多網路的服務, 大多有提供開放的REST API來供人寫原生的程式使用, 當然也有非常多並沒有, 像是Play store, 目前就沒開放的API可供存取, 剛好想要有個東西可以查詢某個app在play store上是屬於啥分類的, 所以就乾脆自己自製一個囉…


現在的網頁, 大多結構性很好, 所以就算沒有REST API, 其實也不難處理, 搭配上 jsoup , 可以說輕而易舉


jsoup是一個可以用css selector來解析html的Java函式庫, 有了這個, 解析html可以不用辛苦的爬dom tree, 只要幾行簡單的程式即可:




Document doc = Jsoup.connect("http://example.com/").get;

Elements links = doc.select("a[href]"); // a with href
Elements pngs = doc.select("img[src$=.png]");

再來看看play store


先看看每個app的資訊畫面, 以Facebook為例, 它的url是 —



http://ift.tt/1vdf2kb



很明顯的, id後面是package name, 另外如果加上”&hl=”可以指定語言, 然後再看到頁面上:



在Facebook (公司名稱)下方有個分類, 可以使用Chrome的開發人員工具(我比較習慣這個), 找到這個連結的css class名稱是”document-subtitle category”,而名稱則在它底下的一個span, 這span有個屬性itemprop, 值是genre



因此, 透過以下這段code就可以取到類別名稱囉




Document doc = Jsoup.connect("http://ift.tt/OQdlpn" + packageName + "&hl=" + locale.getISO3Language()).get();
Elements elements = doc.select("span[itemprop=genre]");

當然, 這方法不只適用於play store, 其他網頁也可以嘗試用這個方法來取得資料


詳細的範例在: http://ift.tt/1oNXmMj




from Tumblr http://ift.tt/1oNXnQw

via IFTTT

2014年2月12日 星期三

馬來西亞樂高樂園

過完年, 趁著轉換工作的空檔, 去了新加坡玩, 也順便去了馬來西亞的樂高樂園(Lego Land)


這樂園算是蠻新的, 2012年的九月才開幕的, 至今也不過一年多, 地點蠻偏僻的, 但從新加坡搭巴士過去(我們是搭WTS的車, 門票也是透過他們買的)大約一小時吧, 中途要出入海關(新加坡, 馬來西亞)



論設施來說, 這樂園可能有點不及其他著名的主題樂園, 玩樂的設施比較偏年紀小的小朋友, 但對樂高迷來說, 也算是一個天堂


這邊隨處可見樂高拼成的人物, 建築, 尤其是在中間miniland的建築, 相當的逼真



像這棟馬來西亞的KLCC, 拍起來的照片真的很像如臨現場, 感覺不出來這是一片片樂高堆積起來的作品


不過這邊的缺點是, 販賣店賣得樂高其實價格偏高, 不太適合樂高迷來這掃貨




from Tumblr http://ift.tt/1m6hZCp

via IFTTT