分享一下最近實作Android App的一些小經驗, 手法都不是新的, 但還是記錄一下, 希望能夠幫上有同樣需求的人
特效 (1) CrossFade
一個很常見的特效, 簡單來說就是利用動畫效果讓A View切到B View時視覺效果不要太突兀, 比如說A View 漸出(Fade out) B View 漸入(Fade in), 讓切換的畫面是連續的.
Tech Fantasy
2013年1月24日 星期四
2012年4月5日 星期四
Android decompile and recompile
最近在用一些Free Android App發現有廣告十分的礙眼, 加上之前有報導這些Ad時相當的耗電, 於是有了自行將Ad拿掉的念頭, 以下的紀錄都是實驗性質, 進行非法行為本人既不負責, 謝謝.
- 反組譯(Decompile) :
工具其實比想象的多, 之前因為工作需要也碰過幾種, 剛好翻到一篇文章列出有名的幾種. 大部分都能夠取得apk內res目錄下的資源, 如圖案, 字串, xml等. - Apktool : 本篇文章使用此種, 將apk轉換成android的組語smali格式.
- dex2jar + jdgui : 這個超強, 只要程式不要太複雜, 可以看到完整的java code.
- baksmali : 也能產生smali code.
- dexdumptest : 沒用過, 不過是原生提供的工具.
2011年12月29日 星期四
如何編譯Android Ice Cream Sandwich
此篇文章主要記錄在Macbook Pro(mbp), OSX Lion上編譯ICS的Android source code的步驟, 不過應該Linux系統上也相同, 而且簡單許多, OSX上需要多做一些修改.
基本步驟
基本步驟
- 按照官網下載source code並設定環境
- 設定ccache, 原因是能夠加速c/c++的compiler速度(官網)
$ export USE_CCACHE=1 $ export CCACHE_DIR=/<path_of_your_choice>/.ccache $ prebuilt/linux-x86/ccache/ccache -M 20G
- 下載廠商提供的binary檔案, 我的手機是Nexus S, 所以Google提供
- 準備編譯
- 先將環境清乾淨
make clobber
- 設定環境變數
source build/envsetup.sh
- 設定編譯選項
lunch
- 編譯
make -j 4
2011年11月2日 星期三
2011年10月28日 星期五
Change KKBOX download path in OSX
自從我把電腦的硬碟換成SSD後, 就很在意APP資料的儲存位置, 分享一下如何把KKBOX的下載位置換到其他地方.
就大功告成啦, 其實只要知道下載的位子在那邊就好辦了
ps:/Volumes/Data/music/kkbox/Downloaded\ Music 是我的hdd位子, 有參考的朋友們自行換成想要放的位子喔
cd ~/Library/Application Support/KKBOX/
mv Downloaded\ Music /Volumes/Data/music/kkbox/Downloaded\ Music
ln -s /Volumes/Data/music/kkbox/Downloaded\ Music .
就大功告成啦, 其實只要知道下載的位子在那邊就好辦了
ps:/Volumes/Data/music/kkbox/Downloaded\ Music 是我的hdd位子, 有參考的朋友們自行換成想要放的位子喔
2011年8月2日 星期二
Android dpi / px / dp / 研究
最近工作上剛好遇到Android dpi 相關的問題, 紀錄一下研究筆記.
1. http://developer.android.com/guide/practices/screens_support.html
2. http://developer.android.com/guide/topics/resources/providing-resources.html
3. http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html
4. DPI Caclulator
- 基本觀念:
- Resolution(px): 就是我們熟知的解析度, 如1024x600.
- Size(dp/dip): 在Android上實際看到的大小, 若定義100dp, 實際在各種尺寸, dpi定義正確的裝置上, 看起來的實際大小應該要差不多.
- Density(dpi): Dot Per Inch, 每一英寸有幾個點.
- px = dp * (dpi / 160) Android官方公式
- 問題: DPI設定錯誤會發生什麼事情
- 在開發Android Platform時必須要決定dpi的數值, 錯誤的dpi會讓程式UI比例呈現異常, 如Galaxy Tab 7". (該device設定dpi為240, 表示螢幕每一英寸應該要能夠顯示240個點, 但根據DPI Calculator, 7" 1024x600每一英寸只能顯示169個點, 所以當ui resource是用dp定義width/ length的話, 經過公式換算後, 實際看到都會被放大約1.5倍)
- 研究 : 今天如果我們有個裝置是7" 1280x800解析度, 那我們的dpi到底該定義多少?
- 若根據DPI Calculator, 該裝置每一英寸能看到215個點, 反推螢幕上能顯示的大小
- 寬1280 = dp * (215/160), dp約為 952dp
- 高 800 = dp * (215/160), dp約為 595dp
- Android Developer - Configuration Example, 直接定義了各尺寸螢幕該容納的dp大小
- 320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
- 480dp: a tweener tablet like the Streak (480x800 mdpi).
- 600dp: a 7” tablet (600x1024 mdpi).
- 720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
- 若為7"裝置, 所以就用600 dp來反推dpi
- 高 800 = 600 * (dpi/160), dpi約為 213dp
- 之所以是用寬度width反推, 而不是高度height反推是因為, 在操作畫面的時候, 垂直空間不足時, 上下滑動是很直覺的操作, 但左右移動卻比較罕見, 寬度width定義大小必須要比較注意.
- 所以Android Developer新增了Declaring Tablet Layouts for Android 3.2, 優先考慮smallest width dp(layout-swXXXdp)
- 因此得知7" 1280x800的顯示空間為961dp * 600dp, 須設定為213dpi
- 個人結論
- UI到底要用怎麼設計?
- 目標裝置解析度是1280x800就畫1280x800 px的圖.
- 在定義layout resource時, 要用dip/dp指定長寬, 而非px. (利用px = dp * (213/160)可推出dp)
- 使用Relative Layout, 而非Absolute Layout
- 想要支援dp較小的裝置要怎麼辦?
- 定義不同的layout吧, 如layout-normal.
Ref:
1. http://developer.android.com/guide/practices/screens_support.html
2. http://developer.android.com/guide/topics/resources/providing-resources.html
3. http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html
4. DPI Caclulator
Synergy 多電腦分享輸入裝置好工具
Synergy讓你能夠用延伸桌面的方式來操作兩台不同的電腦
當有兩台螢幕分別接到不同電腦時, 你的滑鼠可以自由來去之間爽度是非常高的!!(不過當然要在同一區域網路XD)
官網: http://synergy-foss.org/
支援很多平台, 我是使用Ubuntu + OSX
Ubuntu 可以用 aptitude 安裝
附上我的設定檔跟簡單說明
電腦名稱在OSX/Ubuntu的 ternimal下輸入hostname就可以知道, windows好像就是系統名稱
設定檔弄好之後在控制端電腦輸入
遙控端輸入
Special Thanks: Yuren ju
我本來用很蠢的遠端桌面超痛苦, 這樣好用多了
當有兩台螢幕分別接到不同電腦時, 你的滑鼠可以自由來去之間爽度是非常高的!!(不過當然要在同一區域網路XD)
官網: http://synergy-foss.org/
支援很多平台, 我是使用Ubuntu + OSX
Ubuntu 可以用 aptitude 安裝
sudo aptitude install synergyOSX可以用 brew
brew install synergy裝好之後在鍵盤滑鼠所接到的那台電腦上(簡稱控制端)還需要加入config檔案, 看官網好像很複雜, 其實沒有要設定什麼特殊功能的話, 只要指定好hostname跟相對方位而已
附上我的設定檔跟簡單說明
section: screens
#指定你的電腦名稱
jason-mbp.local: #這台是我的mac
jason-pc: #Ubuntu
end
section: links
#指定你的螢幕相對位置, 我的ubuntu在左邊, mac在右邊
jason-mbp.local:
left = jason-pc
jason-pc:
right = jason-mbp.local
end
電腦名稱在OSX/Ubuntu的 ternimal下輸入hostname就可以知道, windows好像就是系統名稱
設定檔弄好之後在控制端電腦輸入
synergys -c /usr/local/Cellar/synergy/1.3.6/bin/synergy.conf -a 192.168.1.122設定檔位置跟本機ip記得換成自己的
遙控端輸入
synergyc 192.168.1.122就可以享受偽雙螢幕啦lol
Special Thanks: Yuren ju
我本來用很蠢的遠端桌面超痛苦, 這樣好用多了
訂閱:
文章 (Atom)