改变控件的点击范围
来源:互联网 发布:为什么网络电视不清晰 编辑:程序博客网 时间:2024/05/18 13:26
TouchDelegate它可以帮助我们让某个控件处理比它实际占用空间更大的触摸消息。
首先我们要设置一个rect 扩大后的点击范围 然后将其设置到view上
package com.mnyzhao.checkviewclickrect;import android.graphics.Rect;import android.view.TouchDelegate;import android.view.View;/** * Created by MnyZhao on 2017/7/20. * 设置view 的点击区域通过TouchDelegate * TouchDelegate 可以指定一个范围 来委托给自身控件 */public class TouchRect { private String TAG = "TouchRect"; private View view; private int rect; /** * @param view 要改变点击区域的控件 * @param rect 改变的范围 数值随意设 */ TouchRect(View view, int rect) { this.view = view; this.rect = rect; setViewTouchRect(view, rect); } /** * 改变控件的点击范围 通过TouchDelegate 设置自身的范围 * * @param view 要改变点击区域的控件 * @param rect 扩大的点击区域范围 */ private void setViewTouchRect(final View view, final int rect) { view.post(new Runnable() { @Override public void run() { // 构造一个 "矩型" 对象 Rect delegateArea = new Rect(); View delegate = view; // Hit rectangle in parent's coordinates delegate.getHitRect(delegateArea); // 扩大触摸区域矩阵值 delegateArea.left -= rect; delegateArea.top -= rect; delegateArea.right += rect; delegateArea.bottom += rect; /** * 构造扩大后的触摸区域对象 * 第一个构造参数表示 扩大范围 * 第二个构造参数表示 被扩大的View对象 */ TouchDelegate expandedArea = new TouchDelegate(delegateArea, delegate); if (View.class.isInstance(delegate.getParent())) { // 设置视图扩大后的触摸区域 ((View) delegate.getParent()).setTouchDelegate(expandedArea); } } }); }}
调用方式就比较直接了
点击的view 点击范围 new TouchRect(View,200);
阅读全文
0 0
- 改变控件的点击范围
- Android控件捕获点击事件的范围
- 使用 TouchDelegate 扩大控件的点击范围
- 如何随意改变和拓展button的点击范围
- 不改变button大小,扩大点击范围
- Android控件背景点击改变
- 点击FrameLayout,使其里面的控件TextView改变颜色
- jquery鼠标点击改变控件的背景颜色
- Android ListView中子控件的状态保存以及点击子控件改变子控件状态
- Android ListView中子控件的状态保存以及点击子控件改变子控件状态
- Android ListView中子控件的状态保存以及点击子控件改变子控件状态
- 扩大UIButton的点击范围
- Android小技巧1——扩大控件的点击范围
- VC 05中改变for的范围
- 怎么改变CO的成本控制范围
- delphi自定义鼠标移入移除和点击后控件的图片改变
- Android 自定义控件 改变图片颜色来实现类似selector点击更改颜色的效果
- 解决点击cell 使其他cell里的控件改变思路
- 使用 Jenkins 实现 Android 项目的持续集成
- OC语言学习13-Copy和MutableCopy
- C语言 基本数据类型
- HttpURLConnection上传文件(客户端)
- java-CollectionDemo
- 改变控件的点击范围
- 浅谈ThreadPool 线程池
- 零售业如何用Hadoop开启大数据之门?
- 主机Ping不通Linux虚拟机
- 将数组A中的内容和数组B中的内容进行交换
- HTTP协议详解(真的很经典)
- vuex学习二
- IO多路转接之select、poll、epoll
- 正则化方法:L1和L2 regularization、数据集扩增、dropout