十一、Android坐标系

前言

Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系、View的滑动、View的事件分发等文章来逐步介绍Android View体系。

1.View简介

View是Android所有控件的基类,同时ViewGroup也是继承自View,看下面这张图我们就会有一个直观的了解:

知道了View的层级关系有助于对View的理解,从上图可以发现我们常用的这些控件都是继承于View,如果我们更好的掌握了View的知识体系,那么我们在界面编程时则会更加的得心应手。

2.Android坐标系

Android中有两种坐标系,分别为Android坐标系和视图坐标系,首先我们先来看看Android坐标系。
在Android中,将屏幕的左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,原点向下是Y轴正方向。

在下文讲到的MotionEvent提供的getRawX()和getRawY()获取的坐标都是Android坐标系的坐标。

3.视图坐标系

要了解视图坐标系我们只需要看懂一张图就可以了:

View获取自身宽高

  • getHeight():获取View自身高度

  • getWidth():获取View自身宽度
    View自身坐标
    通过如下方法可以获得View到其父控件(ViewGroup)的距离:

  • getTop():获取View自身顶边到其父布局顶边的距离

  • getLeft():获取View自身左边到其父布局左边的距离

  • getRight():获取View自身右边到其父布局左边的距离

  • getBottom():获取View自身底边到其父布局顶边的距离

MotionEvent提供的方法
我们看上图那个深蓝色的点,假设就是我们触摸的点,我们知道无论是View还是ViewGroup,最终的点击事件都会由onTouchEvent(MotionEvent event)方法来处理,MotionEvent也提供了各种获取焦点坐标的方法:

  • getX():获取点击事件距离控件左边的距离,即视图坐标
  • getY():获取点击事件距离控件顶边的距离,即视图坐标
  • getRawX():获取点击事件距离整个屏幕左边距离,即绝对坐标
  • getRawY():获取点击事件距离整个屏幕顶边的的距离,即绝对坐标

跟随滑动

   int mLastY = 0;
        cardview.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent event) {


                switch (event.getAction()) {

                    case MotionEvent.ACTION_DOWN:
                        mLastY = (int) (view.getY() - event.getRawY());
                        break;

                    case MotionEvent.ACTION_MOVE:
                        view.animate()
                                .y(event.getRawY() + mLastY)
                                .setDuration(0)
                                .start();
                        break;
                    default:
                        return false;
                }
                return true;

            }
        });

转载自:https://blog.csdn.net/itachi85/article/details/50708391

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
您好!针对您的问题,ArcGIS Runtime SDK for Android 支持使用火星坐标系进行定位。您可以通过以下步骤实现: 1. 首先,您需要获取到火星坐标系的参数,包括投影坐标系、椭球体参数等等。这些参数可以从第三方提供的火星坐标系转换库中获取,比如说高德地图 SDK 中提供的 com.amap.api.maps.model.LatLng 对象就是基于火星坐标系的。 2. 在 ArcGIS Runtime SDK 中,您可以使用 ProjectedCoordinateSystem 类来创建一个火星坐标系的投影坐标系对象,例如: ``` SpatialReference marsSR = SpatialReference.create(4490); // 火星坐标系的空间参考编号是 4490 ProjectedCoordinateSystem marsPCS = ProjectedCoordinateSystem.create(marsSR); ``` 3. 接下来,您需要使用 LocationDataSource 类来实现定位功能,其中有一个 setCoordinateSystem 方法可以设置定位坐标系。您可以将火星坐标系的投影坐标系对象传入该方法中,例如: ``` LocationDataSource locationDataSource = new DefaultLocationDataSource(context); locationDataSource.setCoordinateSystem(marsPCS); ``` 4. 最后,您可以使用 MapView 类来展示地图,并在地图上显示当前位置。MapView 中有一个 setViewpointCenterWithAnimation 方法可以将地图视角移动到指定位置,并支持动画效果。例如: ``` MapView mapView = findViewById(R.id.map_view); mapView.setLocationDisplay(locationDisplay); mapView.setViewpointCenterWithAnimation(location, 5000); // 将视角移动到当前位置,并在 5 秒内完成动画效果 ``` 以上就是在 ArcGIS Runtime SDK for Android 中使用火星坐标系进行定位的基本步骤。如果您还有其他问题,欢迎随时提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值