我是靠谱客的博主 忧心蜜粉,最近开发中收集的这篇文章主要介绍GSViewGSView,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

GSView

  用了一下午和一晚上写完了一个小DEMO,还顺便研究了一下如何用手机录GIF,手机不想root,花了点时间。

  这几天晚上玩手机的时候,突然有一个想法,app上的title和按钮在单手操作的时候,尤其是大屏手机,一直手按左上角返回的时候不方便,晚上躺着玩手机,尤其是侧卧的时候,很不愿意用另一只手,这几天晚上还有蚊子,只露出一直手玩手机就好了(-_-)。有什么解决办法呢,安卓不是内置了重力感应么,使用这个功能还不用权限,可以试试。

  重力感应的核心类是SensorManager,基本上没什么难度,实现SensorEventListener的接口,重写onSensorChanged()和onAccuracyChanged(),主要操作在onSensorChanged()里面,onSensorChanged()可以说是时刻都在变化,注意里面不要写一些耗时操作,不然会被调用很多次。


   @Override
    public void onSensorChanged(SensorEvent event) {

        if (event.sensor == null) {
            return;
        }

        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            int x = (int) event.values[0];
            int y = (int) event.values[1];
            int z = (int) event.values[2];
            }
     }

  通过代码片段,可以看到,整个重力感应的封装很简单,我们只要关心 event.values数组的前三个参数即可,当然了 event.values[]其实是float类型的,我们为了方便计算,转成Int即可,除非你需要很高的精度,手机的左右侧翻我们只需要关心X即可,当然这里是指竖屏状态下,横屏需要重新计算,当x>3&&x<-3的时候,手机其实已经明显翻转了,这时我们就可以进行相应的操作了,这里为了有更好看的效果,我使用了属性动画ValueAnimator,需要注意一点,在onSensorChanged中,会多次调用一个动画,导致出现了鬼畜的现象,因此需要设置一个控制变量,当动画执行后,才能再次调用。先看看效果:

  首先是向右侧翻手机

右翻

  首先是向左侧翻手机与之类似

这里写图片描述

  由于是在模拟器上录制的,重力感应会有问题,就先拿click事件代替重力事件了,真机上亲测没问题。

  一旦解决了动画多次调用的问题,就没什么难度了,向右移动的时候,title向右移动的距离是:(屏幕的宽度-title的宽度)/2,back按钮移动的距离是:屏幕的宽度-title的宽度-back的宽度,类似的向左移动的时候,back已经在最左边了,移动距离为0,title移动的距离是:(屏幕宽度-title的宽度)/2-back的宽度。当手机平放的时候,记得复位。还有一点注意的是ValueAnimator.ofFloat()方法里面可以不定个float的值,没有特殊需要,传入一个即可,一般的getAnimatedValue时,会判断mValues数组是否为空,如果不为空,就取第一个即可。项目待会传到网上,代码是很复杂。

  今天网速很好,代码详情:

  https://git.oschina.net/w5727/GSView.git

最后

以上就是忧心蜜粉为你收集整理的GSViewGSView的全部内容,希望文章能够帮你解决GSViewGSView所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部