技术标签: Android
用于更改View的触摸区域,在平常开发中遇到一个问题就是因为图标太小导致老是点击不中,用户体验不太好,TouchDelegate可以改变可点击区域的大小。
Layout如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="demo.cn.com.demo.SecondActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal"
android:id="@+id/parent"
android:weightSum="2">
<Button
android:id="@+id/btn1"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="Hello World !" />
<Button
android:id="@+id/btn2"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="Hello World !" />
</LinearLayout>
</RelativeLayout>
java code如下
package demo.cn.com.demo;
import android.graphics.Rect;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.TouchDelegate;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second2);
final LinearLayout parent = (LinearLayout) findViewById(R.id.parent);
final Button btn1 = (Button) findViewById(R.id.btn1);
Button btn2 = (Button) findViewById(R.id.btn2);
parent.post(new Runnable() {
@Override
public void run() {
Rect rect = new Rect();
btn1.getHitRect(rect);
rect.top -= 100;
rect.left -= 100;
rect.bottom += 100;
rect.right += 100;
TouchDelegate touchDelegate = new TouchDelegate(rect,btn1);
((View)btn1.getParent()).setTouchDelegate(touchDelegate);
}
});
}
}
此时btn1能够点击的区域就是下面的红线框区域
采用此方法需要注意:
1、若View的自定义触摸范围超出Parent的大小,则超出的那部分无效。
2、一个Parent只能设置一个View的TouchDelegate,设置多个时只有最后设置的生效。
3、如果点击区域延伸到了兄弟控件,那么还是兄弟控件响应。
文章浏览阅读1.8k次。class mate_class meta:
文章浏览阅读1.8k次。FM: ZF_FI_ACC_DOC_REV_POSTFUNCTION ZF_FI_ACC_DOC_REV_POST.*"----------------------------------------------------------------------*"*"本地接口:*" IMPORTING*" REFERENCE(IV_BUKRS) TYPE BKPF-BUK..._abap bapi_acc_document_rev_post
文章浏览阅读301次。JAVA-字符串过滤类package cn.com.hbivt.util;/*** Title: ** Description: ** Copyright: Copyright (c) 2005** Company: ** @author not attributable* @version 1.0*/public class StringUtils {//过滤通过页面表单提交的字符private..._java防止命令注入代码
文章浏览阅读825次。Java中的框架基础面试知识(一)spring mvc 工作机制(原理):DispatcherServlet主要用作职责调度工作,本身主要用于控制流程Spring mvc运行原理 1.springmvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping..._java学到框架需要了解什么知识
文章浏览阅读436次。Vue2项目中使用 ElementUI 的 el-select 实现下拉框多选功能_el-select 选择一个后,右边弹出下级目录
文章浏览阅读518次,点赞4次,收藏2次。C#上位机调试经验_c#上位机怎么调试
文章浏览阅读421次。您的转发和吐槽是我们前进的动力今日要闻 监管要闻·俄罗斯军方将利用区块链技术追踪黑客攻击的来源·日本计划更改加密货币累进税为统一税率·四川省委全体会议决定积极探索区块链发..._波洛莱物流 阿里巴巴
文章浏览阅读908次。不管是大型虚拟化云网络,还是嵌入式物联网系统,Linux网络都扮演着重要的角色。借用一句话说,如果说网络是信息系统的基石,那么Linux网络系统就是基石中的钢筋。它经过几十年的发展,它千锤百炼,几乎包含了市面上所有的网络通讯功能,要想一下子把学透是不容易的,只能顺着代码脉络看着前辈们写的文章,边分析边总结吧。先来看一下整体结构:Linux网络基本结构我把它分成几个层次,每个层次只是一个逻辑上的概念,并没有严格的定义,只是为了理解上的方便,而且很多模块的代码都是交织混用的,要统一来划分也不容易的。况且,通讯技_linux 内核 网络收发包函数
文章浏览阅读2.7k次。树莓派常用的工具,截图工具,性能查看器,vscode等_树莓派安装软件
文章浏览阅读1.1k次。Arduino 也是是接触了下,程序挺简单的,与C语言类似。LED 小灯实验是比较基础的实验之一,上一个“Hello World!”实验里已经利用到了Arduino 自带的LED,这次我们利用其他I/O 口和外接直插LED 灯来完成这个实验,我们需要的实验 器材除了每个实验都必须的Arduino 控制器和USB 下载线以外的 其它器件如下: 红色M5 直插LED*1 220Ω直插电阻*1 面包板*..._arduino和面包板接多个灯
文章浏览阅读525次。图2展示了分组查询注意力和多头/多查询注意力的比较。适中数量的组导致插值模型的质量高于MQA,但比MHA更快,正如我们将展示的那样,这代表了一个有利的权衡。然而,更大的模型通常会按比例增加头的数量,使得多查询注意力在内存带宽和容量上都表现出更激进的削减。此外,较大的模型受到注意力的内存带宽开销相对较小,因为键值缓存随着模型维度的增加而增加,而模型的FLOPs和参数随模型维度的。此外,我们引入分组查询注意力,它是多查询注意力和多头注意力的插值,既能够在与多查询注意力相当的速度下实现接近多头注意力的质量。_gqa:谷歌提出分组查询注意力
文章浏览阅读4k次,点赞5次,收藏12次。今天和大家分享一个使用Notepad++配置C语言编译环境的方法,因为本人是一个C语言新手,一般写个小程序用文本编辑器就够用。前提: 下载mingw 或者 Cygwin 或 tdm-gcc 里面有C语言编译器,然后配置环境变量。 https://sourceforge.net/projects/mingw-w64/files/?source=navbar首先: ...