android-触摸移动时移动一个视图 (ACTION_MOVE)

问题描述

触摸移动时移动一个视图 (ACTION_MOVE)
我想做一个简单的控件:容器中有一个视图。如果我触摸容器移动手指,我想让视图跟着我的手指移动。我应该使用什么样的容器(布局)?我不需要使用一个界面,只要一个简单的布局。如何做到这一点呢?

解决方案

在main.xml用""@+id/root""来设置RelativeLayout

public class MyActivity extends Activity implements View.OnTouchListener {TextView _view;ViewGroup _root;private int _xDelta;private int _yDelta;@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    _root = (ViewGroup)findViewById(R.id.root);    _view = new TextView(this);    _view.setText(""TextView!!!!!!!!"");    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(150 50);    layoutParams.leftMargin = 50;    layoutParams.topMargin = 50;    layoutParams.bottomMargin = -250;    layoutParams.rightMargin = -250;    _view.setLayoutParams(layoutParams);    _view.setOnTouchListener(this);    _root.addView(_view);}public boolean onTouch(View view MotionEvent event) {    final int X = (int) event.getRawX();    final int Y = (int) event.getRawY();    switch (event.getAction() & MotionEvent.ACTION_MASK) {        case MotionEvent.ACTION_DOWN:            RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();            _xDelta = X - lParams.leftMargin;            _yDelta = Y - lParams.topMargin;            break;        case MotionEvent.ACTION_UP:            break;        case MotionEvent.ACTION_POINTER_DOWN:            break;        case MotionEvent.ACTION_POINTER_UP:            break;        case MotionEvent.ACTION_MOVE:            RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();            layoutParams.leftMargin = X - _xDelta;            layoutParams.topMargin = Y - _yDelta;            layoutParams.rightMargin = -250;            layoutParams.bottomMargin = -250;            view.setLayoutParams(layoutParams);            break;    }    _root.invalidate();    return true;}}
时间: 2024-09-14 16:18:37

android-触摸移动时移动一个视图 (ACTION_MOVE)的相关文章

android ExpandListView 再次回到上一个页面时,仍是在第10条位置

问题描述 android ExpandListView 再次回到上一个页面时,仍是在第10条位置 activity A:ExpandLitView点击child中的任意一条item,比如点击的是第10条,此时会开启一个新的 activity B,再次回到activity A时,仍是在第10条位置,而不是第一次加载时默认的 状态,如何实现? 解决方案 设置一个全局变量private int position = -1;在点击事件中记录当前点击的Item,复写onResume(),并在onResum

android在添加手机联系人(一个联系人多个号码)的时,当手机号码改变时,会生成另一个相同联系人

问题描述 android在添加手机联系人(一个联系人多个号码)的时,当手机号码改变时,会生成另一个相同联系人 //添加联系人名字 String target_name = name; values.put("raw_contact_id", contactId); values.put(ContactsContract.RawContacts.Data.MIMETYPE, "vnd.android.cursor.item/name"); values.put(&qu

Android触摸事件传递分析与实践

设计UI时,亲爱的交互设计师们总会有一些天马行空的想法,大多数情况下原生的控件已不能支持这些"看似简单"的交互逻辑,需要继承ListView.ViewPager.ScrollView甚至直接继承View来自定义一些特性来支撑.在处理触摸事件时,无可避免的需要重写onInterceptTouchEvent与onTouchEvent这两个方法.本文将从源码的角度,从这两个棘手的函数为切入点,对触摸事件在View中的传递逻辑进行梳理. 1.概述 本文中只简单的考虑单指触摸事件.一次触摸事件通

Android触摸事件的应用详解

前言 上一篇讲了Android触摸事件的传递机制,具体可以看这里初识Android触摸事件传递机制.既然知道Android中触摸事件的传递分发,那么它能解决什么样的问题,在我们实际开发中如何应用,这点很重要,知道原理是为了解决问题而准备的.这篇文章的核心讲的如何解决View的滑动冲突,这个问题在日常开发中很常见,比如内部嵌套Fragment视图是左右滑动,外部用一个ScrollView来包含,可以上下滑动,如果不进行滑动冲突处理的话,就会造成外部滑动方向和内部滑动方向不一致. 目录 常见的滑动冲

Android应用开发中自定义ViewGroup视图容器的教程_Android

一.概述在写代码之前,我必须得问几个问题:1.ViewGroup的职责是啥?ViewGroup相当于一个放置View的容器,并且我们在写布局xml的时候,会告诉容器(凡是以layout为开头的属性,都是为用于告诉容器的),我们的宽度(layout_width).高度(layout_height).对齐方式(layout_gravity)等:当然还有margin等:于是乎,ViewGroup的职能为:给childView计算出建议的宽和高和测量模式 :决定childView的位置:为什么只是建议的

Android右滑返回上一个界面的实现方法

Android右滑返回上一个界面的实现方法 public class BaseActivity extends Activity implements OnTouchListener { public ProgressDialog progressDialog; public String states; public RequestQueue mQueue; /** 触摸时按下的点 **/ PointF downP = new PointF(); /** 触摸时当前的点 **/ PointF

Android实现为Notification加上一个进度条的方法_Android

本文实例讲述了Android实现为Notification加上一个进度条的方法.分享给大家供大家参考,具体如下: package com.notification; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent;

android中给view添加一个按着才触发的事件 要一直按着 松开触发功能关闭事件

问题描述 android中给view添加一个按着才触发的事件 要一直按着 松开触发功能关闭事件 如题,android中给view添加一个按着才触发的事件 要一直按着 松开触发功能关闭事件 ,一个图片 按着可以开启录音功能 松开就关闭录音 这个事件怎么添加 解决方案 你需要按下图片的时候开始录音,松开的时候停止录音,可以监听图片的触摸事件,按下的时候开始,抬起的时候结束. 代码如下: view.setOnTouchListener(new OnTouchListener() { @Override

Android程序启动时出现黑屏问题的解决方法_Android

本文实例讲述了Android程序启动时出现黑屏问题的解决方法.分享给大家供大家参考,具体如下: 关于黑屏: 默认的情况下,程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初始化列表数据.向服务器发送请求获取数据等等. 去除方法: 1.在style里面添加一个style: <style name="ContentOverlay"parent="@android:style/Theme.Light"> <itemname