【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现

其实就是在显示菜单栏时,有个动画的效果。代码比较简单,下面进行说明。

1.效果图如下,手机上查看效果更佳

【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现

 

2.代码实现,这里只讲解动画效果的实现,具体代码可在源代码中查看

<1> 先定义一个CanvasTransformer接口对象,这个接口是在slidingmenu_library类库中封装好的

private CanvasTransformer mTransformer; 

<2> 然后再实例化此接口,重写接口中的方法,例如示例1中的方法:

【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现
/**
         * transformCanvas(Canvas canvas, float percentOpen) 
         * ① Canvas  canvas:画布类; 
         * ② float percentOpen:滑动菜单栏打开时的百分比值。
         */
        mTransformer = new CanvasTransformer() {
            @Override
            public void transformCanvas(Canvas canvas, float percentOpen) {
                float scale = (float) (percentOpen * 0.25 + 0.75);
                canvas.scale(scale, scale, canvas.getWidth() / 2,
                        canvas.getHeight() / 2);
            }

        };
【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现

<3> 最后在把实例化的接口对象赋给SlidingMenu类中的setBehindCanvasTransformer()方法:

getSlidingMenu().setBehindCanvasTransformer(mTransformer);

<4>这样就完成了动画效果的实现,下面是示例1的主界面代码,其他的有兴趣的朋友可以查看源代码

【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现
package com.yanis.anima;

import android.graphics.Canvas;
import android.os.Bundle;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.CanvasTransformer;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;

/**
 * 
 * @author Yanis
 * @Description 滑动时缩放的效果
 */
public class FirstActivity extends SlidingFragmentActivity {
    private CanvasTransformer mTransformer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        initAnimation();

        initSlidingMenu();

        getActionBar().setDisplayHomeAsUpEnabled(true);
    }

    /**
     * 初始化滑动菜单
     */
    private void initSlidingMenu() {
        // 设置主界面视图
        setContentView(R.layout.layout_right);
        // 设置滑动菜单视图
        setBehindContentView(R.layout.layout_left);
        // 设置滑动菜单的属性值
        SlidingMenu sm = getSlidingMenu();
        // 根据dimension资源文件的ID来设置下方视图的偏移量,此处是220dp
        sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        sm.setFadeDegree(0.35f);
        sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        sm.setBehindScrollScale(0.0f);
        sm.setBehindCanvasTransformer(mTransformer);

        setSlidingActionBarEnabled(true);
    }

    /**
     * 初始化动画效果
     */
    private void initAnimation() {
        /**
         * transformCanvas(Canvas canvas, float percentOpen) 
         * ① Canvas  canvas:画布类; 
         * ② float percentOpen:滑动菜单栏打开时的百分比值。
         */
        mTransformer = new CanvasTransformer() {
            @Override
            public void transformCanvas(Canvas canvas, float percentOpen) {
                float scale = (float) (percentOpen * 0.25 + 0.75);
                canvas.scale(scale, scale, canvas.getWidth() / 2,
                        canvas.getHeight() / 2);
            }

        };
    }
}
【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现





本文转自叶超Luka博客园博客,原文链接:http://www.cnblogs.com/yc-755909659/p/4311173.html,如需转载请自行联系原作者
上一篇:js 缩放图片


下一篇:第五章 MongoDb索引优化 5.1