登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

DrawerLayout 的扩展,具有动画效果

[复制链接]
来自: MrlLee 分类: Android精品源码 上传时间: 2016-9-8 15:33:57
Tag:动画
立即下载
收藏

项目介绍:

使用说明:添加依赖
[XML] 查看源文件 复制代码
compile 'com.github.mzule.fantasyslide:library:1.0.3'

调用
调用方法基本与 DrawerLayout 一致. 本项目支持左右 (start left end right) 侧边栏同时定义。
[XML] 查看源文件 复制代码

 
    
 
    
 
        
 
    
    
进阶maxTranslationX
通过设置 maxTranslationX 可以设置菜单项动画的最大位移。仅有在采用默认 Transformer 时才有效。
[XML] 查看源文件 复制代码
一般情况下,左边的侧边栏 maxTranslationX 为正数,右边的侧边栏 maxTranslationX 为负数。
Listener
支持设置 Listener 来监听侧边栏菜单的状态。
[Java] 查看源文件 复制代码
SideBar leftSideBar = (SideBar) findViewById(R.id.leftSideBar);
leftSideBar.setFantasyListener(new SimpleFantasyListener() {
    @Override
    public boolean onHover(@Nullable View view) {
        return false;
    }
 
    @Override
    public boolean onSelect(View view) {
        return false;
    }
 
    @Override
    public void onCancel() {
    }
});
  • Hover 是指上面效果图中,高亮的状态,此时手指仍在屏幕上 move. 默认的 hover 处理逻辑是设置 view 的 pressed 状态为 true. 重写 onHover(View) 方法返回 true 可以改写默认逻辑。
  • Select 是指 hover 状态时手指离开屏幕,触发 select 状态。默认的处理逻辑是调用 view 的 onClick 事件。重写 onSelect(View) 方法返回 true 可以改写默认逻辑。
  • Cancel 是指手指离开屏幕时,没有任何 view 触发 select 状态,则为 cancel,无默认处理逻辑。

Transformer
项目设计了一个 Transformer 接口,供调用者自定义菜单项的动画效果。使用方法类似于 ViewPager 的 PageTransformer.
[Java] 查看源文件 复制代码
class DefaultTransformer implements Transformer {
    private float maxTranslationX;
 
    DefaultTransformer(float maxTranslationX) {
        this.maxTranslationX = maxTranslationX;
    }
 
    @Override
    public void apply(ViewGroup sideBar, View itemView, float touchY, float slideOffset, boolean isLeft) {
        float translationX;
        int centerY = itemView.getTop() + itemView.getHeight() / 2;
        float distance = Math.abs(touchY - centerY);
        float scale = distance / sideBar.getHeight() * 3; // 距离中心点距离与 sideBar 的 1/3 对比
        if (isLeft) {
            translationX = Math.max(0, maxTranslationX - scale * maxTranslationX);
        } else {
            translationX = Math.min(0, maxTranslationX - scale * maxTranslationX);
        }
        itemView.setTranslationX(translationX * slideOffset);
    }
}



相关源码推荐:

我来说两句
所有评论(242)
ILI 2016-9-8 15:39:10
学习...学习...
回复
w00214777 2016-9-8 15:46:11
学习...学习...
回复
嘘丶~低调 2016-9-8 15:54:35
楼主威武啊,安卓巴士有你更给力!
回复
ffg12 2016-9-8 15:55:53
mark,收藏了
回复
changyounet 2016-9-8 16:08:14
好好 学习了 确实不错
回复
tylz 2016-9-8 16:20:44
不错不错,楼主辛苦了。。。
回复
飞浔 2016-9-8 16:25:11
强烈支持楼主ing……
回复
上传代码
查看数:8546 收藏数:93 下载数:172 点赞数:6
状态:已购或VIP 售价:10(原价:10)金钱 下载权限:初级码农 
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,769657487

如何获得代码达人称号

如何成为签约作者

联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表