`
johnnycmj
  • 浏览: 36775 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Android 实现拖动按钮效果

 
阅读更多

      思路:首先获取屏幕的宽度和高度,当移动Button 在ACTION_DOWN 的时记录下控件当前的位置坐标,在移动ACTION_MOVE时记录相对上次的坐标,然后算出相对于parent 的View上下左右位置,最后重新layout就可以。

public class DraftTest extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		DisplayMetrics dm = getResources().getDisplayMetrics();
		//获取屏幕宽和高
		final int screenWidth = dm.widthPixels;
		final int screenHeight = dm.heightPixels - 50;

		final Button b=(Button)findViewById(R.id.btn);
		
		b.setOnTouchListener(new OnTouchListener(){
			//上次view的坐标位置
			int lastX, lastY;

			@Override
			public boolean onTouch(View v, MotionEvent event) {
				// TODO Auto-generated method stub
				int ea=event.getAction();
				Log.i("TAG", "Touch:"+ea);

				switch(ea){
				case MotionEvent.ACTION_DOWN:
					//按下记录view坐标
					lastX = (int) event.getRawX();
					lastY = (int) event.getRawY();
					break;

				case MotionEvent.ACTION_MOVE:
					
					//移动时记录相对上次的坐标
					int dx =(int)event.getRawX() - lastX;
					int dy =(int)event.getRawY() - lastY;
				
					//相对于parent 的View上下左右位置
					int left = v.getLeft() + dx;
					int top = v.getTop() + dy;
					int right = v.getRight() + dx;
					int bottom = v.getBottom() + dy;
					
					//如果left < 0,则是左移,右边框上次位置加上左移部分
					if(left < 0){
						left = 0;
						right = left + v.getWidth();
					}
					
					//
					if(right > screenWidth){
						right = screenWidth;
						left = right - v.getWidth();
					}
					
					//如果top < 0,则是上移,下边框上次位置加上移部分
					if(top < 0){
						top = 0;
						bottom = top + v.getHeight();
					}
					
					if(bottom > screenHeight){
						bottom = screenHeight;
						top = bottom - v.getHeight();
					}
					
					//重新layout
					v.layout(left, top, right, bottom);
					
					Log.i("", "position" + left +", " + top + ", " + right + ", " + bottom);
   
					lastX = (int) event.getRawX();
					lastY = (int) event.getRawY();
					
					break;
				case MotionEvent.ACTION_UP:
					break;        		
				}
				return false;
			}});
	}
}

 

分享到:
评论

相关推荐

    Android按钮拖拽效果

    在适配器中,我们需要为每个按钮设置我们的自定义拖拽按钮,并确保在布局文件中,每个单元格具有足够的空间供按钮拖动。 5. **动画效果**: 为了使拖拽更流畅,可以添加一些动画效果。例如,当按钮移动时,可以...

    android按钮拖拽指定位置效果

    在Android开发中,创建一个可拖动的按钮并实现特定...总的来说,实现Android按钮拖拽效果涉及触摸事件处理、动画应用以及可能的回调接口设计。通过合理地组合这些技术,我们可以为用户提供更加丰富和有趣的交互体验。

    Android拖动Button按钮显示效果

    在Android开发中,实现按钮(Button)的拖动显示效果是一项常见的交互设计需求。这个实例主要探讨如何在Android应用中创建一个可以被用户拖动的Button,并在拖动过程中展示特定的效果。首先,我们需要理解Android的...

    Android 拖拽悬浮按钮

    综上所述,实现Android拖拽悬浮按钮涉及到自定义View、触摸事件处理、位置限制、动画效果以及权限管理等多个知识点。理解并掌握这些技术,可以让你在Android应用开发中创造出更加友好的用户界面。

    Android 拖动按钮效果源码.zip

    通过学习和研究这个源码,开发者不仅可以掌握如何在Android中实现拖动按钮,还可以了解如何自定义View、处理手势事件以及创建流畅的动画效果。这对于提升个人技能和开发出更富有创意的Android应用是非常有帮助的。

    Android 拖动按钮效果源码.rar

    本项目提供的"Android 拖动按钮效果源码"是一个实现此类功能的示例代码,可以帮助开发者了解如何在自己的应用中实现类似的效果。 首先,我们要明白拖动按钮的核心机制。这种效果通常基于触摸事件(MotionEvent)...

    Android 拖动按钮效果源码

    下面我们将深入探讨如何实现这样的功能,以及在这个"Android拖动按钮效果源码"中可能包含的关键知识点。 首先,我们需要理解Android中的触摸事件处理机制。在Android中,触摸事件通过MotionEvent类进行传递。当用户...

    Android拖动按钮效果源码.zip

    这个"Android拖动按钮效果源码.zip"包含了实现这一功能的源代码,对于开发者来说,是一个很好的学习和参考资源。下面将详细解析这一技术及其相关知识点。 首先,我们要理解Android中的触摸事件处理机制。在Android...

    Android 拖动按钮效果源码.zip源码资源下载

    本资源提供的是一个实现Android拖动按钮效果的源码示例,可以帮助开发者更好地理解和实现这种功能。 在Android应用中,通常我们使用的按钮是静态的,用户只需点击即可触发相应的操作。然而,拖动按钮增加了用户的...

    安卓Android源码——拖动按钮效果源码.zip

    在安卓(Android)开发中,实现拖动按钮的效果是一种常见的交互设计,它可以增强用户的操作体验。这个压缩包“安卓Android源码——拖动按钮效果源码.zip”包含了实现这一功能的相关资源,包括图像文件和源代码说明。...

    Android源码——拖动按钮效果源码.zip

    这个"Android源码——拖动按钮效果源码.zip"文件包含了一个实现这种效果的示例代码,我们可以从中学到如何在Android应用中创建可拖动的按钮。以下是对这个源码的详细解析: 1. **拖动事件处理**: Android系统通过...

    android 拖拽图片 拖动浮动按钮到处跑

    对于拖拽图片的效果,可以创建一个名为`DragSample01`的Activity,与拖动浮动按钮类似,只需要替换视图类型为ImageView,并设置其布局。在`onTouch`方法中,我们可以使用相同的方式来处理图片的拖动: ```java img ...

    Android 拖动按钮效果源码-IT计算机-毕业设计.zip

    本项目“Android拖动按钮效果源码”提供了一个创新的交互元素,即一个可拖动的按钮,这对于毕业设计或论文研究具有很高的参考价值。下面我们将详细探讨这个项目中的关键知识点。 首先,拖动按钮的核心在于手势识别...

    Android代码-拖动按钮效果源码.zip

    "拖动按钮效果源码"是一个专注于Android平台上的交互设计示例,它展示了如何通过编程技术实现用户可以通过拖动按钮来执行特定操作的功能。这样的设计使得用户界面更加直观且富有吸引力,尤其适用于需要用户进行连续...

Global site tag (gtag.js) - Google Analytics