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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM