博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 组件内部实现触摸事件,更改背景
阅读量:6818 次
发布时间:2019-06-26

本文共 1957 字,大约阅读时间需要 6 分钟。

当我们需要实现触摸事件的时候,通常就会想到OnTouchEvent这个方法,它能够获取触摸点的坐标,而组件同样也有这样的一个功能,使用这个功能,可以实现组件在父布局界面上移动,缩放,更改背景图片。这里通过一个小例子来实现利用组件的onTouchEvent事件实现点击组件左半部分更改左边图片,点击组件右半部分更改右边图片。

 

if (v == CamMove_UD_Btn) {	if (event.getAction() == MotionEvent.ACTION_DOWN) {		if (event.getX() <= btn_in_bottom_width_center) { //这个是组件宽度的一半			CamMove_UD_Btn.setBackgroundResource(R.drawable.cam_up);		}else {			CamMove_UD_Btn.setBackgroundResource(R.drawable.cam_down);								}		CamMove_UD_Btn_Click = true;//使用这个变量的目的就是:有时手指从水平位置滑动到组件到,没有检测到Down事件,但是松开手后就会检测到UP	}else if (CamMove_UD_Btn_Click && event.getAction() == MotionEvent.ACTION_UP) {		CamMove_UD_Btn.setBackgroundResource(R.drawable.cam_off);		CamMove_UD_Btn_Click = false;	}}

 

其实思路是很简单的。获取手电级的位置,如果组件是横向的,获取X坐标,如果小于组件的一半则认为是左边,如果大于一般则认为是右边。

下面是对于组件自己的移动

 

imagebutton.setOnTouchListener(new OnTouchListener() {              int[] postion = new int[] { 0, 0 };              @Override              public boolean onTouch(View v, MotionEvent event) {                  int x = (int) event.getRawX();                  int y = (int) event.getRawY();                  int left = v.getLeft();                  int top = v.getTop();                  switch (event.getAction()) {                  case MotionEvent.ACTION_DOWN:                      postion[0] = (int) event.getX();                      postion[1] = y - v.getTop();                      break;                    case MotionEvent.ACTION_MOVE:                      v.layout(x - postion[0], y - postion[1], x + 1024                              - postion[0], y - postion[1] + 768);                      v.postInvalidate();                      default:break;                  }                  return false;              }            });

 

下面是布局的移动

 

x=x+10;              y=y+10;              LayoutParams layoutParams=mIconPinpu.getLayoutParams();  //获取布局的布局参数            layoutParams.height=x;              layoutParams.width=y;              mIconPinpu.setLayoutParams(layoutParams);

 

 

转载地址:http://puszl.baihongyu.com/

你可能感兴趣的文章
vs code 快捷键中英文对照
查看>>
systemd的运行级别与服务管理命令简介
查看>>
Linux下的两个经典宏定义 转
查看>>
报错stale element reference: element is not attached to the page document结局方案
查看>>
【感悟】——人生路,昂首走
查看>>
Testbench
查看>>
推荐系统
查看>>
HoloLens | 世界的每一次变化,其实都提前打好了招呼
查看>>
seq命令
查看>>
线性表接口的实现_Java
查看>>
利用安卓手机搭建WEB服务器
查看>>
小巧玲珑:机器学习届快刀XGBoost的介绍和使用
查看>>
intellij开发安卓与genymotion配合
查看>>
jmeter大神博客笔记
查看>>
java.lang.NoClassDefFoundError: javax/annotation/Priority
查看>>
springmvc-mvc:resource标签使用
查看>>
Ubuntu 16.04安装IntelliJ IDEA时快捷键冲突设置
查看>>
Ubuntu界面重新安装图形界面
查看>>
去哪儿网支付系统架构演进
查看>>
Spring框架最简单的定时任务调用
查看>>