繞球心旋轉(zhuǎn)View

setInAnimation:設(shè)置View進(jìn)入屏幕時的動畫。
setOutAnimation:設(shè)置View退出屏幕時的動畫。
showNext:調(diào)用該方法可以顯示下一個View。
showPrevious:調(diào)用該方法可以來顯示上一個View。
setFilpInterval:設(shè)置View切換的時間間隔。參數(shù)為毫秒。
startFlipping:開始進(jìn)行View的切換。
stopFlipping:停止View切換。
setAutoStart:設(shè)置是否自動開始。如果設(shè)置為“true”,當(dāng)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">
    <!-- 旋轉(zhuǎn)是按照順時針的方向為正方向 -->
    <rotate
        android:duration="1000"
        android:fromDegrees="110"
        android:pivotX="50%"
        android:pivotY="114%"
        android:toDegrees="0" />
</set>

效果

旋轉(zhuǎn)
//自動動畫
viewflipper.setInAnimation(inAnim);
viewflipper.setOutAnimation(outAnim);
// 設(shè)置間隔與啟動,自動重播
viewflipper.setAutoStart(true);
/**
 *PERSISTENT_NO_CACHE 說明不在內(nèi)存中保存繪圖緩存; 
 *PERSISTENT_ANIMATION_CACHE 說明只保存動畫繪圖緩存;
 *PERSISTENT_SCROLLING_CACHE 說明只保存滾動效果繪圖緩存
 *PERSISTENT_ALL_CACHES 說明所有的繪圖緩存都應(yīng)該保存在內(nèi)存中。
 */
viewflipper.setPersistentDrawingCache(ViewGroup.PERSISTENT_ALL_CACHES);   
viewflipper.setFlipInterval(5000);
viewflipper.startFlipping();  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容