Android控件拖动

Android控件的拖动,主要是通过设置控件的setOnTouchListener()方法,重写它的onTouch()方法。然后通过MotionEvent的不同事件,进行判断,主要是在MotionEvent.ACTION_MOVE中不断重绘控件在画布中的位置,而实现拖动的效果。
public class DragViewActivity extends AppCompatActivity {
private Button btn_drag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drag_view);
// 获取屏幕的宽高
DisplayMetrics dm = getResources().getDisplayMetrics();
final int screenWith = dm.widthPixels;
final int screenHeight = dm.heightPixels;
btn_drag = (Button) findViewById(R.id.btn_drag);
btn_drag.setOnTouchListener(new View.OnTouchListener() {
int lastX;
int lastY;
boolean isDraging = false;
@Override
public boolean onTouch(View v, MotionEvent event) {
int ee = event.getAction();
switch (ee){
case MotionEvent.ACTION_DOWN:
isDraging = true;
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
if (isDraging){
// x轴方向的位移差
int dx = (int) event.getRawX() - lastX;
// y轴方向的位移差
int dy = (int) event.getRawY() - lastY;
int l = v.getLeft() + dx;
int t = v.getTop() + dy;
int r = v.getRight() + dx;
int b = v.getBottom() + dy;
// 判断超出屏幕
if (l < 0){
l = 0;
r = l + v.getWidth();
}
if (t < 0){
t = 0;
b = t + v.getHeight();
}
if (r > screenWith){
r = screenWith;
l = r - v.getWidth();
}
if (b > screenHeight){
b = screenHeight;
t = b - v.getHeight();
}
// 重绘view
v.layout(l, t, r, b);
v.postInvalidate();
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
}
break;
case MotionEvent.ACTION_UP:
isDraging = false;
break;
default:
break;
}
return false;
}
});
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android控件拖动
# Android控件拖动详解及实例代码
# Android
# 实现控件拖动
# Android UI控件之Gallery实现拖动式图片浏览效果
# Android中SeekBar拖动条控件使用方法详解
# Android通过自定义ImageView控件实现图片的缩放和拖动的实现代码
# Android基于widget组件实现物体移动/控件拖动功能示例
# Android 仿淘宝、京东商品详情页向上拖动查看图文详情控件DEMO详解
# Android使用WindowManager制作一个可拖动的控件
# Android编程之控件可拖动的实现方法
# Android如何创建可拖动的图片控件
# 拖动
# 是在
# 希望能
# 重写
# 谢谢大家
# 主要是
# savedInstanceState
# Override
# setContentView
# super
# protected
# void
# Bundle
# onCreate
# getDisplayMetrics
# getResources
# int
# final
# activity_drag_view
# layout
相关文章:
北京的网站制作公司有哪些,哪个视频网站最好?
如何通过智能用户系统一键生成高效建站方案?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何在橙子建站中快速调整背景颜色?
青岛网站建设如何选择本地服务器?
如何自定义建站之星网站的导航菜单样式?
建站之星安装后如何自定义网站颜色与字体?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
c++ stringstream用法详解_c++字符串与数字转换利器
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
建站之星如何快速生成多端适配网站?
如何高效完成自助建站业务培训?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
宁波自助建站系统如何快速打造专业企业网站?
在线制作视频的网站有哪些,电脑如何制作视频短片?
家庭建站与云服务器建站,如何选择更优?
免费网站制作appp,免费制作app哪个平台好?
如何选择PHP开源工具快速搭建网站?
如何在云服务器上快速搭建个人网站?
建站之星代理如何获取技术支持?
建站之星安装模板失败:服务器环境不兼容?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何挑选高效建站主机与优质域名?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
南京网站制作费用,南京远驱官方网站?
如何在云主机上快速搭建多站点网站?
小型网站建站如何选择虚拟主机?
,交易猫的商品怎么发布到网站上去?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
网站制作公司,橙子建站是合法的吗?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
学校免费自助建站系统:智能生成+拖拽设计+多端适配
如何快速搭建高效香港服务器网站?
如何在自有机房高效搭建专业网站?
如何在IIS中新建站点并解决端口绑定冲突?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
教程网站设计制作软件,怎么创建自己的一个网站?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
安云自助建站系统如何快速提升SEO排名?
建站VPS选购需注意哪些关键参数?
无锡营销型网站制作公司,无锡网选车牌流程?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何解决ASP生成WAP建站中文乱码问题?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
建站上传速度慢?如何优化加速网站加载效率?
建站之星好吗?新手能否轻松上手建站?
*请认真填写需求信息,我们会在24小时内与您取得联系。