`
亚当爱上java
  • 浏览: 706110 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 实现可拖动的Button

阅读更多
实现效果,Buttton在屏幕范围内到处拖动,但不会拖出屏幕,代码如下:

public class DraftTest extends Activity {
   
    @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(){   
   
   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:           
           
           lastX=(int)event.getRawX();//获取触摸事件触摸位置的原始X坐标
           lastY=(int)event.getRawY();           
           break;
         
          case MotionEvent.ACTION_MOVE:
           int dx=(int)event.getRawX()-lastX;
           int dy=(int)event.getRawY()-lastY;           
           
           int l=v.getLeft()+dx; 
           int b=v.getBottom()+dy;
           int r=v.getRight()+dx;
           int t=v.getTop()+dy;

      //下面判断移动是否超出屏幕
           if(l<0){
            l=0;    
            r=l+v.getWidth();
           }
           
           if(t<0){
            t=0;
            b=t+v.getHeight();
           }
           
           if(r>screenWidth){
            r=screenWidth;
            l=r-v.getWidth();
           }
          
           if(b>screenHeight){
            b=screenHeight;
            t=b-v.getHeight();
           }
           v.layout(l, t, r, b);
           
           lastX=(int)event.getRawX();
           lastY=(int)event.getRawY();
           Toast.makeText(DraftTest.this,
             "当前位置:"+l+","+t+","+r+","+b, 
             Toast.LENGTH_SHORT).show();
           v.postInvalidate();           
           break;
          case MotionEvent.ACTION_UP:
           break;          
          }
    return false;
   }});
    }
}

运行效果如下:




  • 大小: 16.8 KB
  • 大小: 17.2 KB
  • 大小: 16.8 KB
分享到:
评论
5 楼 亚当爱上java 2014-08-01  
midsummer 写道
亲测,其他控件一动,这个按钮又回来原来的位置了,将按钮放到frameLayout下面也是一样

统一回复一下,javaeye上发表的文章很多是我初学阶段的心得体会,难免有不少理解错误的地方,有空我会做一个系统性的修复,以免误导大家。加油,骚年们!
4 楼 midsummer 2014-07-30  
亲测,其他控件一动,这个按钮又回来原来的位置了,将按钮放到frameLayout下面也是一样
3 楼 gundumw100 2011-10-12  
我始终觉得,采用v.layout(l, t, r, b);这种方式去实现拖动表面上看是没问题,但实际是有问题的。
当界面上还有一个EditText,点击EditText弹出输入法的时候问题就来了,原本拖动了的Button回到了初始化的位置。呵呵
2 楼 亚当爱上java 2011-10-12  
bear1122ccc 写道
我用的是楼主的代码,但是为什么走的是Z字型路线呢?

没有呀,我刚拿这个代码试了下,可以任意拖动,一切OK.
1 楼 bear1122ccc 2011-10-09  
我用的是楼主的代码,但是为什么走的是Z字型路线呢?

相关推荐

    安卓Android源码——拖动Button显示效果.zip

    本项目"安卓Android源码——拖动Button显示效果.zip"聚焦于如何通过编程技术让Button控件在用户的手势操作下产生独特的视觉反馈。在深入探讨这个主题之前,我们需要了解Android开发的基本知识,包括Activity、布局...

    android中可以拖动的Button DEMO

    在Android开发中,实现一个可拖动的Button是一项有趣且实用的功能,这通常涉及到自定义View的技巧。本文将深入探讨如何在Android中创建这样一个功能,以及涉及的相关知识点。 首先,我们要理解Android的触摸事件...

    安卓Android源码——拖动 Button 显示效果.zip

    在安卓(Android)开发...总结,这个项目展示了如何在Android中通过自定义View和手势检测实现拖动Button的功能,并通过动画和布局更新提供视觉反馈。理解并实践这些技术,将有助于提升Android应用的交互性和用户体验。

    Android拖动Button按钮显示效果

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

    Android 拖动 Button 显示效果.rar

    Android 拖动 Button 显示效果,在Android测试机上是按住鼠标拖动按钮,和其它的拖动操作方法一样,不过在手机上运行的时候,用手触摸屏幕按钮住屏幕移动,就可移动按钮,代码注释英文,来自国外Android网站的源码。

    Android应用源码之拖动 Button 显示效果.zip

    本项目"Android应用源码之拖动Button显示效果"着重于如何在Android应用程序中实现一个可拖动的Button,并在拖动过程中展示出丰富的视觉效果。下面将详细解析这一知识点。 首先,我们需要了解Android中的触摸事件...

    Android 可拖动浮动工具条(菜单)Demo

    这个“Android 可拖动浮动工具条(菜单)Demo”就是一个很好的示例,展示了如何实现这样的功能。下面我们将深入探讨这个Demo中的关键知识点。 1. **Draggable Views**: 在Android中,实现拖放功能主要依赖于`...

    Android应用拖动 Button 显示效果_安卓源码.zip

    通过以上步骤,你可以实现一个可拖动的Button,当用户在屏幕上滑动时,Button会跟随手指移动。这个简单的功能展示了Android应用开发中的自定义视图和事件处理能力,对于学习Android UI编程具有很好的实践意义。记得...

    Android应用源码之拖动 Button 显示效果-IT计算机-毕业设计.zip

    在Android应用开发中,拖动Button显示效果是一个常见的交互设计,尤其在移动开发App的毕业设计项目中,这种功能能够提升用户体验,使用户界面更具吸引力。这个"Android应用源码之拖动 Button 显示效果"的项目,显然...

    Android-Android的可拖动PointView

    "Android的可拖动PointView"是一个这样的实例,它允许用户通过触摸屏幕来拖动一个点视图。这个项目可能是一个独立的控件或者用于更复杂的交互设计中,比如地图上的标记、游戏中的角色等。 首先,我们要理解Android...

    Android安卓项目源码-拖动 Button 显示效果.zip

    Android安卓项目源码-拖动 Button 显示效果.zip

    Android 实现拖动按钮效果

    总结来说,实现Android拖动按钮效果涉及的关键技术包括:理解Android的触摸事件处理机制、自定义View、重写onDraw()和onTouchEvent()方法、处理布局约束以及利用动画API提供视觉反馈。通过这些技术的结合,我们可以...

    Android拖动,缩放,自定义内容控件源码

    本文将深入探讨如何基于Android系统,创建一个可拖动、可缩放且能填充自定义内容的控件,类似于一个可操作的RelativeLayout。我们将从以下几个关键知识点出发进行讲解: 1. **触摸事件处理**: Android中的触摸...

    android可拖动的开关按钮仿ios

    在Android开发中,为了提供与iOS类似的用户体验,有时我们需要实现可拖动的开关按钮。这个题目涉及的关键技术点包括自定义视图(Custom View)和触摸事件处理。下面将详细介绍如何在Android中创建一个可拖动的开关...

    Android实现悬浮可拖拽的Button

    "Android实现悬浮可拖拽的Button" Android实现悬浮可拖拽的Button是Android应用程序中一个常见的交互元素,通常用于提供用户快速访问某些功能的入口。下面是相关知识点的总结: 一、Draggable Button的概念 ...

    Android 控件拖动

    在Android开发中,实现控件的拖动是一项常见的交互设计,它可以增强用户的操作体验,使得应用更加直观易用。在本篇文章中,我们将深入探讨如何在Android中实现控件的拖动功能,以及相关的技术要点。 首先,我们需要...

    android拖动按钮效果源码

    例子比较简单,但是如果有需要此功能的,这个例子可以提供很多提示这个是拖动以后的效果,一个imageview和一个button控件,提供两份代码下载吧,一份是只有一个Button的,另一份就是像上图,就是多了一个imagview!

    安卓开发-拖动 Button 显示效果.zip

    在Android开发中,拖动Button显示效果是一种常见的交互设计,它可以增强用户操作的直观性和趣味性。本项目可能包含一个示例应用,演示了如何实现Button的拖动以及与之相关的视觉反馈效果。下面我们将详细探讨这个...

Global site tag (gtag.js) - Google Analytics