全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android控件拖动实例详解

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小时内与您取得联系。