绕球心旋转View

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();  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容