美文网首页
绕球心旋转View

绕球心旋转View

作者: leiiiooo | 来源:发表于2016-11-02 19:11 被阅读60次

    setInAnimation:设置View进入屏幕时的动画。
    setOutAnimation:设置View退出屏幕时的动画。
    showNext:调用该方法可以显示下一个View。
    showPrevious:调用该方法可以来显示上一个View。
    setFilpInterval:设置View切换的时间间隔。参数为毫秒。
    startFlipping:开始进行View的切换。
    stopFlipping:停止View切换。
    setAutoStart:设置是否自动开始。如果设置为“true”,当ViewFlipper显示的时候View的切换会自动开始。

    code

    public class MainActivity extends AppCompatActivity {
    
        private ViewFlipper viewFlipper;
        private GestureDetectorCompat gestureDetectorCompat;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            viewFlipper = (ViewFlipper) findViewById(R.id.vf_main);
    
            gestureDetectorCompat = new GestureDetectorCompat(this, new GestureDetector.SimpleOnGestureListener() {
                @Override
                public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                    /**
                     * flipper.getDisplayedChild() 展示的是滑动之前界面展示的view
                     */
                    if (e1.getX() - e2.getX() > 120.0F) {
                        /**
                         * 从右向左滑
                         */
                        viewFlipper.setInAnimation(MainActivity.this, R.anim.left_in);
                        viewFlipper.setOutAnimation(MainActivity.this, R.anim.left_out);
                        if (viewFlipper.getDisplayedChild() < 2) {
                            viewFlipper.showNext();
                        }
    
                    } else if (e1.getX() - e2.getX() < -120.0F) {
                        viewFlipper.setInAnimation(MainActivity.this, R.anim.right_in);
                        viewFlipper.setOutAnimation(MainActivity.this, R.anim.right_out);
                        if (viewFlipper.getDisplayedChild() > 0) {
                            viewFlipper.showPrevious();
                        }
                    }
    
    
    
                    return false;
                }
            });
    
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (gestureDetectorCompat != null) {
                return gestureDetectorCompat.onTouchEvent(event);
            }
            return super.onTouchEvent(event);
        }
    }
    

    动画展示

    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 旋转是按照顺时针的方向为正方向 -->
        <rotate
            android:duration="1000"
            android:fromDegrees="110"
            android:pivotX="50%"
            android:pivotY="114%"
            android:toDegrees="0" />
    </set>
    

    效果

    旋转
    //自动动画
    viewflipper.setInAnimation(inAnim);
    viewflipper.setOutAnimation(outAnim);
    // 设置间隔与启动,自动重播
    viewflipper.setAutoStart(true);
    /**
     *PERSISTENT_NO_CACHE 说明不在内存中保存绘图缓存; 
     *PERSISTENT_ANIMATION_CACHE 说明只保存动画绘图缓存;
     *PERSISTENT_SCROLLING_CACHE 说明只保存滚动效果绘图缓存
     *PERSISTENT_ALL_CACHES 说明所有的绘图缓存都应该保存在内存中。
     */
    viewflipper.setPersistentDrawingCache(ViewGroup.PERSISTENT_ALL_CACHES);   
    viewflipper.setFlipInterval(5000);
    viewflipper.startFlipping();  

    相关文章

      网友评论

          本文标题:绕球心旋转View

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