"Little things make big things happen." – John Wooden
TouchDelegate 触摸委派,android提供了这么一个精巧的类,实在让人喜爱。当我们需要放大或缩小一个view的触摸区域时,可以用到它。
注意:
1:不能放大到这个view的父控件之外去。不然父控件之外的区域就无效了。
2:一个父控件只能设置一个触摸委派到子view上,设置多个的话,最后一个设置生效。
代码和布局如下,很简单,就不需要多讲解了。
public class Main3Activity extends Activity {
private LinearLayout ll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
ll= (LinearLayout) findViewById(R.id.ll);
ll.post(new Runnable() {
@Override
public void run() {
Button button = (Button) findViewById(R.id.button);
Rect rect=new Rect();
//获取button的触摸区域,传入一个空的矩形对象,该方法会对空的矩形对象进行赋值
button.getHitRect(rect);
rect.right+=200;
rect.bottom+=200;
// 创建TouchDelegate 对象,触摸矩形区域,和view
TouchDelegate touchDelegate=new TouchDelegate(rect,button);
// 通过父布局设置view的触摸委托
ll.setTouchDelegate(touchDelegate);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("--->","test");
}
});
}
});
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="button"
android:id="@+id/button"
android:layout_gravity="center"
android:layout_width="40dp"
android:layout_height="40dp" />
</LinearLayout>
网友评论