2014年11月5日 星期三

[Android] 同時使用 long click listener 和 click listener


ListView 與 GridView 常常都有需要 long click 的需求
但可能一不小心會將 long click 和 click 同時觸發

要怎麼避免這個情況呢?
可以依照下面的這個方法
注意紅色的地方

 gridView.setOnItemLongClickListener(new OnItemLongClickListener() {  
     @Override  
     public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long arg3) {  
         // do what u want to do  
         return true;  
     }  
 });  
 gridView.setOnItemClickListener(new OnItemClickListener() {  
     @Override  
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {  
         // do what u want to do  
     }  
 });  

假如 return false; 的話
長按時,兩者會同時觸發!!

所以如果要正常使用這兩個功能
必須要寫 return true;
才會符合需求唷!!

2014年11月4日 星期二

[Android] GridView update/refresh


查了很多 StackOverflow 上的解說
都說要使用

 adapter.notifyDataSetInvalidated();  
 gridView.invalidateViews();  
 gridView.setAdapter(adapter); 

這樣的方法

但不知道為什麼一直不會成功 (請高手指點

[Android] WebView methods must be called on the same thread error


所有 android View 相關的方法必須要在 UI Thread下被呼叫才能正確執行

以 WebView 為例

可以用以下的方式來解決

 mWebView.post(new Runnable() {  
   @Override  
   public void run() {  
     mWebView.loadUrl(...).  
   }  
 });  

就可以正常使用了~

2014年3月9日 星期日

[Android] 怎麼讓不同螢幕大小與解析度都有相同比例的UI介面? dpi, ppi, dp, px 的換算與關係

在開發 UI 介面時,會遇到一些單位上換算的問題
對於初學者來說,很難釐清這些單位之間的關係

1. dpi? ppi?

  dpi(dot per inch),每英吋多少點。用於表示印刷產品點密度。
  ppi(pixel per inch),每英吋多少像素。用於螢幕的像素密度。

  針對螢幕做設計時,dpi = ppi。

 

2. dp? px?

  px 為實際長度
  dp 為 Android 自己的長度運算單位

  並規定 在 160ppi 時 1dp = 1px長度
  公式:px = (ppi/160)*dp

舉幾個例子來說明
在螢幕上,組成圖片的單位是 pixel(單位 px)