2014年5月14日 星期三

[Android] dp轉pixel(使用官方Method)



在開發Android Custom View的時候,常需要在程式碼中去設定View的大小,而Android程式碼的設定值,只能以pixel為單位,可是根據官方建議,元件大小用dp為主,而文字大小則用sp為主,因此需要一個將dp傳換成pixel的工具,不過還好官方有提供各種類型專換至pixel的函式:TypedValue.applyDimension (在android.util這個package下),這樣一來,就可以不用自己寫啦而且是官方提供的,所以可以安心服用XD。
以下是簡單的範例:


 
private float dpToPixel(Context context,int dp) {
  
  Resources resources = context.getResources();//取得系統資源
  
  float pixel = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, // 轉換單位:dp值
  dp, // 輸入的dp值
  resources.getDisplayMetrics());
  
  return pixel;
}

2013年12月13日 星期五

[Android]使用ScorllView解決裝置解析度差異過大問題

解決裝置解析度差異過大問題

Android裝置相容性問題,最常遇到的就是不同的螢幕解析度,因此官方文件建議Layout上使用的距離單位盡量使用dp,能部分解決多解析度上的問題,但裝置的解析度差異過大時,還是會出現操作介面上的缺陷,雖然在這種情況下要兼顧介面美觀會有困難,但至少要維持操作上不能有缺陷,評估這樣的原則,因此選擇使用ScrollView來解決解析度相容性的問題,雖然不能保有一致美觀,但至少不會有功能上的缺陷。


以Login畫面為例,處理解析度上的問題。
如下圖為高解析度裝置顯示的畫面,介面完整顯示,功能操作上正常。



[Android]操作鍵盤,造成畫面元件擠壓的問題

操作鍵盤,造成畫面擠壓問題

在Android畫面要輸入資訊時,會彈出模擬鍵盤,此時可能造成畫面擠壓,讓背景或元件變形,解決方法是在AndroidManifest.xml中,將輸入畫面的activity加入:

android:windowSoftInputMode="adjustPan"


如此一來就能解決這樣的狀況。

2013年12月11日 星期三

Google Analytics SDK for Android v3(一)-使用EasyTracker

開發Web系統的人,一定知道Google Analytics工具,Google Analytics提供Web SDK,開發人員者將程式碼埋在各功能或頁面中,取得使用者回饋,上傳至Google Analytics平台上,再進一步分析使用者的行為,讓系統設計師,利用此依據來改善系統的設計,Google Analytics也提供了Android的SDK,讓Android開發者也可以很容易的分析使用者的行為,以下是Android App 加入 Google Analytics步驟說明:

2013年9月1日 星期日

[Android]改變Layout發生後,卻ClassCastException的問題

在開發Android APP的過程中,有時候因為需求改變,常常需要改變元件的位置,在改變XML的Layout後,重新build App,卻發生 java.lang.ClassCastException,只動Layout的位置,沒有新增或刪除,卻發生ClassCastException,要解決此狀況,只要在Eclipse中執行clean可以解決這個問題 。

解決方法:

STEP1 :Eclipse選取 Project選項,執行Clean

STEP2: 重新執行Run As -> Android Application

如果Layout的設計沒有問題的話,就不會發生ClassCastException的例外錯誤了。

2013年8月30日 星期五

[Android] 錯誤排除 :Activity ActivityName has leaked window ...

Window Leaked

Activity ActivityName has leaked window ...若出現類似的錯誤訊息,代表Window Leaked的錯誤發生,Window Leaked通常是因為有Dialog或其他元件還在執行,但Activity已經被關閉了。

常見的情境:
  • 1. Dialog或其他元件還在執行,但此時使用者將螢幕翻轉,造成Activity重新執行,就會造成Window Leaked
  • 2. Dialog或其他元件還在執行,使用者將Activity關閉。