發表文章

目前顯示的是 五月, 2012的文章

利用TouchDelegate設定元件的觸控區域

開始前請先看看這篇文章~

您是否有同樣的經驗,想點擊Listview item中的Checkbox時,卻常常意外點到整個item,而造成預期外的動作? 嚴格來說這好像也不能怪開發者,誰叫預設的Checkbox就是那麼小,更不可能怪使用者說你手指怎麼那麼肥...。

但若想保有優良的使用者體驗,這個小細節是可以被解決的。處理的方法有很多種,比如放大Checkbox本身的Drawable或從Layout下手...但由於這樣做可能擠壓到其他的元件,再加上Checkbox本身的缺限,讓過程也有些麻煩。

因此我們可以考慮另一個方法,使用TouchDelegate來增加元件的觸控響應區域。

程式範例:
final View parent = (View) delegate.getParent(); //delegate是想擴大觸控範圍的元件 parent.post( new Runnable() { public void run() { final Rect r = new Rect(); delegate.getHitRect(r); r.top -= 10; //觸控範圍往上增加 r.bottom += 10; //觸控範圍往下增加 r.left -= 10; //觸控範圍往左增加 r.right += 10; //觸控範圍往右增加 parent.setTouchDelegate( new TouchDelegate( r , delegate)); } }); 簡單來看就是透過父容器setTouchDelegate,以調整觸控響應區域。這樣就不必動到元件本身或Layout,一來讓元件維持小巧精美,二來又有足夠的響應區域。

參考連結:
http://developer.android.com/reference/android/view/TouchDelegate.html
http://www.daggie.be/?p=1006
http://android.cyrilmottier.com/?p=574