Slidingmenu 的应用:仿QQ的滑动效果(AboveView缩小)

        setContentView(R.layout.qq_above_main);
        
        //getSupportActionBar().setCustomView(R.layout.actionbar_switch);
        getSupportActionBar().setDisplayShowCustomEnabled(true);
        setSlidingActionBarEnabled(true);
        
        
        All = (LinearLayout) this.findViewById(R.id.all);
        slidingmenu = this.getSlidingMenu();
        slidingmenu.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));
        slidingmenu.setBehindWidth(800);//这个用来控制AboveView露出多少的。
        //下面是做重要的部分:
        CanvasTransformer canvas = new CanvasTransformer(){

            @Override
            public void transformCanvas(Canvas canvas, float percentOpen) {
                
                above = new CustomViewAbove(slidingmenu.getContext());//获得了前面的页面
                float scale = (float) (1-percentOpen*0.12); 
                float scalex = (float) (1-percentOpen*0.12);
                //float translations = 
                //在这里面执行前面的menu的动画
                 View aboveview = slidingmenu.getChildAt(1);
               // View behindview = slidingmenu.getChildAt(0);
                if(aboveview != null){
                    afterwidth = (int) (1080 - aboveview.getScrollX() - 1080 * scale);
                    Log.d("array","----getScrollX() = "+afterwidth);
                    if(afterwidth > 0){
                        ViewHelper.setTranslationX(aboveview, afterwidth * scale * 0.12f);
                    }
                    ViewHelper.setScaleX(aboveview, scalex);
                    ViewHelper.setScaleY(aboveview, scale);
                }
                /*int[] location = {0 ,0};
                aboveview.getLocationInWindow(location);
                Log.d("array","location[0] = "+location[0]+"; location[1] = "+location[1]);
                //float leftScale = 1 - 0.3f * scale;
                //float rightScale = 0.8f + scale * 0.2f;
               // canvas.scale(scale, scale, canvas.getWidth()/2, canvas.getHeight()/2); */
            }
            
        };
        
        slidingmenu.setBehindCanvasTransformer(canvas);

我之所以把滑动的过程放到CanvasTransformer()方法中,是因为本人才疏学浅,没找到滑动过程调用的函数,如果有的话麻烦告知我一下。

注意:在缩小aboveview的同时,如果发现aboveview右边空白的话,还要记得将它向右平移,要不然会露出空白部分。

使用slidingmenu可以满足很多想法,省了很多的烦恼。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值