Android 简单实现控件的拖动
控件的拖动,使用到一个监听事件
setOnTouchListener:XML代码:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:app="http://schemas.android.com/apk/res-auto" 5 xmlns:tools="http://schemas.android.com/tools" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 tools:context=".MainActivity"> 9 10 <ImageView 11 android:id="@+id/textview" 12 android:src="@drawable/ic_launcher_foreground" 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:background="@color/colorPrimaryDark" 16 android:text="www.baidu.com"/> 17 18 </LinearLayout>
JAVA代码
1 package com.example.a11658.textviewdrag; 2 3 import android.annotation.SuppressLint; 4 import android.os.Bundle; 5 import android.support.v7.app.AppCompatActivity; 6 import android.view.MotionEvent; 7 import android.view.View; 8 import android.widget.ImageView; 9 10 public class MainActivity extends AppCompatActivity { 11 private ImageView tv; 12 private int x; 13 private int y; 14 15 @SuppressLint("ClickableViewAccessibility") 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_main); 20 21 tv = findViewById(R.id.textview); 22 tv.setOnTouchListener(new View.OnTouchListener() { 23 @Override 24 public boolean onTouch(View v, MotionEvent event) { 25 switch (event.getAction()) { 26 case MotionEvent.ACTION_DOWN: 27 //手指按下 28 //获取第一次接触屏幕 29 x = (int) event.getRawX(); 30 y = (int) event.getRawY(); 31 break; 32 case MotionEvent.ACTION_MOVE: 33 //手指拖动 34 //获取距离差 35 int dx = (int) event.getRawX() - x; 36 int dy = (int) event.getRawY() - y; 37 //更改Imageview在窗体的位置 38 v.layout(v.getLeft() + dx, v.getTop() + dy, 39 v.getRight() + dx, v.getBottom() + dy); 40 //获取移动后的位置 41 x = (int) event.getRawX(); 42 y = (int) event.getRawY(); 43 break; 44 case MotionEvent.ACTION_UP: 45 //手指弹起 46 x = (int) event.getRawX(); 47 y = (int) event.getRawY(); 48 break; 49 } 50 return true; 51 } 52 }); 53 } 54 }
view.layout(left, top, right, bottom)实现拖动。
1.按下图搞懂几个坐标
视图宽度 view.getWidth();
视图高度 view.getHeight()
橘色线:view.getLeft()
蓝色线:view.getRight()
红色线:view.getTop()
粉色线:view.getBottom()
上下左右的偏移都是相对于(0.0)来说
这是Demo地址:https://pan.baidu.com/s/1LBEFP2zA0txQnNSJKxxbFw
转载于:https://www.cnblogs.com/MrChen-/p/10304188.html
Android 简单实现控件的拖动相关推荐
- Android 自定义组合控件小结
Android 自定义组合控件小结 引言 接触Android UI开发的这段时间以来,对自定义组合控件有了一定的了解,为此小结一下,本文小结内容主要讨论的是如何使用Android SDK提供的布局和控 ...
- 004 Android之其他控件
文章目录 ListView ListView常用属性 ListView基本使用 ListView动态插入数据 ListView实现图文混排 Adapter Adapter(适配器种类) 自定义Adap ...
- android 动态修改控件的宽高
今天,简单讲讲android如何动态设置控件的宽高. 这个其实也比较简单,但是之前做的时候出现了问题,代码里设置的宽高是dx,需要先转成dp.下面以RelativeLayout作为例子,简单记录一下. ...
- android 画布裁剪,一种基于Android系统对UI控件进行轮廓剪裁及美化的方法与流程...
本发明涉及Android应用的技术领域,特别涉及一种基于Android系统对UI控件进行轮廓剪裁及美化的方法. 背景技术: 目前,随着智能电视的普及,Android应用层出不穷,而那些表现形式单一.传 ...
- Android中ExpandableListView控件基本使用
本文採用一个Demo来展示Android中ExpandableListView控件的使用,如怎样在组/子ListView中绑定数据源.直接上代码例如以下: 程序结构图: layout文件夹下的 mai ...
- android通过代码设置铃声_第六十四回:Android中UI控件之SeekBar
各位看官们,大家好,上一回中咱们说的是Android中UI控件之ProgressBar的例子,这一回咱们的例子是UI控件之SeekBar.闲话休提,言归正转.让我们一起Talk Android吧! 看 ...
- android md 控件,Android基本UI控件.md
# Android基本UI控件 ## *TextView 文本框* ### TextView常用用法 | 主要方法 | 功能描述 | | :----------: | :--------------- ...
- android按钮控件常见问题,Android的基本控件和Activity的应用总结
Android的基本控件 常用界面控件 TextView 显示文本信息 button 普通按钮 EditText 可编辑的文本框组件(输入框) ImageView 用于显示图片 ImageBUtton ...
- android 自定义view控件,Android 自定义View——自定义View控件
Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,有时候开发所需要的控件形式是在Android提供的控件中是不存在,这就需要我们自己去定义一个.那么如何自定义控件? 学习自 ...
最新文章
- 收藏 | 应对程序员面试,你必须知道的8大数据结构
- [JZOJ P1311] [DP]邮局设置问题
- RPC创建API 模块
- sql 视图嵌套视图_SQL视图
- 7.Reverse Integer (INT; Overflow)
- easyui控件事件监听委托给jquery事件监听,keyup取最新值问题
- python编程(pyqt5的使用)
- c语言 static变量和函数
- 安装mysql查看随机密码命令_centos7/8 yum安装mysql8并查看默认root密码
- netty源码阅读之编码之flush刷新buffer队列
- Servlet 三大作用域
- linux设置字符编码gbk,CentOS修改默认字符编码为GBK
- 程序人生|毕业一年有感
- 第四百九十一章 战利品
- Oracle11g在虚拟机win7上的详细安装过程(包括win7在虚拟机上的安装)
- python获取鼠标的当前坐标
- Mac删除多余的输入输出设备,删除EasyConnectAudio
- 探究KVO的底层实现原理
- Mac上doc 转docx
- c++重写卷积网络的前向计算过程,完美复现theano的测试结果
热门文章
- adaboost java_Adaboost的java实现 | 学步园
- python实践项目(七)
- C++中内存分配方式、空指针及野指针的区别
- 一文彻底搞懂App的Monkey稳定性测试
- php工程师用的到高等数学吗,学习Python解决高等数学问题
- 井字棋小游戏c语言简单编码,C语言实现井字棋小游戏
- 云服务器查看服务端口,云服务器如何查看端口是否连通
- java方法不写访问权限_【JAVA小白】 问关于访问权限的问题,写接口遇到错误
- java怎么录入4位会员号_[Java源码]键盘输入会员卡号,对其格式、位数进行判断,不符合规则会跳转重新输入 | 学步园...
- vue获取url中ip_Kubernetes 集群中这样获取客户端真实 IP