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

  • 相关阅读:
    WAMP Apache 2.5 配置虚拟主机
    DOM对象
    BOM对象
    JS内置对象
    CSS定位
    CSS浮动和清除
    浏览器兼容性
    垂直居中
    水平居中总结
    长度值
  • 原文地址:https://www.cnblogs.com/wangyuehome/p/4608128.html
Copyright © 2011-2022 走看看