美文网首页Android
Android指南针实现

Android指南针实现

作者: 大白杏仁 | 来源:发表于2016-11-16 12:14 被阅读0次

    功能实现:通过指南针传感器获得转动角度,设置指南针图片的转动动画即可

    1. 获取系统 SensorManager 来进行传感器设置(变量已声明)
        private Sensor sensor;
        private SensorManager sensorManager;
        private ImageView ivCompass;//指南针图片
        private float fromDegrees = 0f, toDegrees;//图片转动时开始、结束角度
    

        @Override
        protected void onResume() {
            super.onResume();
            sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
            //通过 getDefaultSensor 获得指南针传感器
            sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
            //为传感器管理者注册监听器,第三个参数指获取速度正常
            sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
        }
    

    为了提高app运行效率,将此段代码放在 onResume() 方法中,只在要呈现界面的时候执行

    2.让 Activity 实现 SensorEventListener ,并复写 onSensorChanged 和 onAccuracyChanged 方法,我们只需在 onSensorChanged 方法中完善逻辑

    
        @Override
        public void onSensorChanged(SensorEvent sensorEvent) {
    
            switch (sensorEvent.sensor.getType()){
                case Sensor.TYPE_ORIENTATION:
                    //顺时针转动为正,故手机顺时针转动时,图片得逆时针转动
                    toDegrees = -sensorEvent.values[0];
                    //让图片相对自身中心点转动,开始角度默认为0;此后开始角度等于上一次结束角度
                    RotateAnimation ra = new RotateAnimation(fromDegrees, toDegrees, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
                    //动画时间200毫秒
                    ra.setDuration(200);
                    ra.setFillAfter(true);
                    ivCompass.startAnimation(ra);
                    fromDegrees = toDegrees;
                    break;
            }
        }
    

    setFillAfter参数为true:每次动画结束,就停留在结束时的样子
          为false:每次动画结束,就回到动画开始时的样子

    3.为了使App退出当前界面时停止使用传感器,在 onPause() 方法中加入

        @Override
        protected void onPause() {
            super.onPause();
            sensorManager.unregisterListener(this);
        }
    

    参数为this,即为注销所有监听器,其他参数可以选择某一个监听器

    所有这些做完之后,如果 App 还不能运行,那就说明

    扔了你的破机子吧。连指南针传感器都木有!!!

    相关文章

      网友评论

        本文标题:Android指南针实现

        本文链接:https://www.haomeiwen.com/subject/bkqrpttx.html