3D視差引導(dǎo)頁(yè)
作者:冰點(diǎn)
3D視差引導(dǎo)頁(yè),ViewPager滑動(dòng)時(shí)子控件平移,縮放,3D翻轉(zhuǎn)
源碼簡(jiǎn)介:3D視差引導(dǎo)頁(yè),ViewPager滑動(dòng)時(shí)子控件平移,縮放,3D翻轉(zhuǎn)
源碼效果:
源碼片段:
- /**
- * 當(dāng)我們的ViewPager滑動(dòng)的時(shí)候,每一個(gè)頁(yè)面都會(huì)回調(diào)該方法
- * position:當(dāng)前第幾個(gè)頁(yè)面
- * view:某個(gè)頁(yè)面對(duì)應(yīng)的視圖 --- 布局的視圖
- */
- @Override
- public void transformPage(View view, float position) {
- // 漸變效果,判斷區(qū)間(-1,1)
- if (position<1 && position >-1) {
- // 視差加速效果,讓里面的所有子空間都給一個(gè)加速偏移量
- 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原來(lái)的位置再加一個(gè)偏移值)
- // 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翻轉(zhuǎn)動(dòng)畫(huà) 往外翻轉(zhuǎn)
- // rl.setPivotX(position<0f?rl.getWidth():0f);
- // rl.setPivotY(rl.getHeight()*0.5f);
- // rl.setRotationY(position*90);
- // 3D翻轉(zhuǎn)動(dòng)畫(huà) 往內(nèi)翻轉(zhuǎn)
- // 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);
- }
- }
責(zé)任編輯:倪明
來(lái)源:
devstore