3D視差引導頁
作者:冰點
3D視差引導頁,ViewPager滑動時子控件平移,縮放,3D翻轉
源碼簡介:3D視差引導頁,ViewPager滑動時子控件平移,縮放,3D翻轉
源碼效果:
源碼片段:
- /**
- * 當我們的ViewPager滑動的時候,每一個頁面都會回調該方法
- * position:當前第幾個頁面
- * view:某個頁面對應的視圖 --- 布局的視圖
- */
- @Override
- public void transformPage(View view, float position) {
- // 漸變效果,判斷區間(-1,1)
- if (position<1 && position >-1) {
- // 視差加速效果,讓里面的所有子空間都給一個加速偏移量
- ViewGroup rl=(ViewGroup) view.findViewById(R.id.rl);
- // for (int i = 0; i < rl.getChildCount(); i++) {
- // View child=rl.getChildAt(i);
- // float factoe=(float) (Math.random()*2);
- // if (child.getTag() == null) {
- // child.setTag(factoe);
- // }else{
- // factoe=(Float) child.getTag();
- // }
- // // 加速偏移量(在child原來的位置再加一個偏移值)
- // child.setTranslationX(-position*200*factoe);
- // child.setTranslationY(position*100*factoe);
- // }
- // 縮放效果
- // 縮放的范圍:0-1
- rl.setScaleX(Math.max(0.8f,1-Math.abs(position)));
- rl.setScaleY(Math.max(0.8f,1-Math.abs(position)));
- // 3D翻轉動畫 往外翻轉
- // rl.setPivotX(position<0f?rl.getWidth():0f);
- // rl.setPivotY(rl.getHeight()*0.5f);
- // rl.setRotationY(position*90);
- // 3D翻轉動畫 往內翻轉
- // rl.setPivotX(position<0f?rl.getWidth():0f);
- // rl.setPivotY(rl.getHeight()*0.5f);
- // rl.setRotationY(-position*90);
- // 羊肉串效果
- rl.setPivotX(rl.getHeight()*0.5f);
- rl.setPivotY(rl.getHeight()*0.5f);
- rl.setRotationY(-position*90);
- }
- }
責任編輯:倪明
來源:
devstore