zoukankan      html  css  js  c++  java
  • android摇一摇实现(仿微信)

     这个demo模仿的是微信的摇一摇,是一个完整的demo,下载地址在最下面.下面是demo截图:

                   

    步驟:

    1.手机摇动监听,首先要实现传感器接口SensorEventListener.


    /**开始重力传感器的检测*/ public void start() { // 获得传感器管理器 SensorManager sensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); if (sensorManager != null) { // 获得重力传感器 sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } // 注册 if (sensor != null) { sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME); } }

    2.启动手掌开合动画,这个手掌其实是上下两部分组成的,分别开启一个上下垂直动画.

        /** 摇一摇手掌上部分动画 */
        public AnimationSet getUpAnim(Handler handler) {
            AnimationSet animup = new AnimationSet(true);
            TranslateAnimation mytranslateanimup0 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
                    -0.8f);
            mytranslateanimup0.setDuration(OPEN_TIME);
            mytranslateanimup0.setAnimationListener(getLineVisibleListener(handler));
    
            TranslateAnimation mytranslateanimup1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
                    +0.8f);
            mytranslateanimup1.setDuration(CLOSE_TIME);
            mytranslateanimup1.setStartOffset(OFFSET_TIME);
            mytranslateanimup1.setInterpolator(new AccelerateInterpolator(1));
            mytranslateanimup1.setAnimationListener(getLineGoneListener(handler));
    
            animup.addAnimation(mytranslateanimup0);
            animup.addAnimation(mytranslateanimup1);
            return animup;
        }
    
        /** 摇一摇手掌下部分动画 */
        public AnimationSet getDownAnim() {
            AnimationSet animdn = new AnimationSet(true);
            TranslateAnimation mytranslateanimdn0 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
                    +0.8f);
            mytranslateanimdn0.setDuration(OPEN_TIME);
            TranslateAnimation mytranslateanimdn1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
                    -0.8f);
            mytranslateanimdn1.setDuration(CLOSE_TIME);
            mytranslateanimdn1.setStartOffset(OFFSET_TIME);
            mytranslateanimdn1.setInterpolator(new AccelerateInterpolator(1));
            animdn.addAnimation(mytranslateanimdn0);
            animdn.addAnimation(mytranslateanimdn1);
            return animdn;
        }

    3.结果页动画,重新摇一摇时,也会启动一个动画将结果页移动到最下方然后消失.就跟微信摇到了人以后,弹出的个人信息卡一样.

    demo下载地址:http://files.cnblogs.com/files/wangyuehome/Shake.zip

  • 相关阅读:
    php之static静态变量详解
    设计模式【代理模式】
    小牟Andorid下面MD5具体实现的思路总结
    ubuntu14.04安装MySQL
    Android手机定位技术的发展
    我不同意你,这是您的支持
    我要遵守11文章数据库设计指南
    quick-cocos2d-x游戏开发【3】——display.newSprite创建向导
    第二章 自己的框架WMTS服务,下载数据集成的文章1
    JSTL实现int数据的类型的长度
  • 原文地址:https://www.cnblogs.com/wangyuehome/p/4608128.html
Copyright © 2011-2022 走看看