【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现
其实就是在显示菜单栏时,有个动画的效果。代码比较简单,下面进行说明。
1.效果图如下,手机上查看效果更佳
2.代码实现,这里只讲解动画效果的实现,具体代码可在源代码中查看
<1> 先定义一个CanvasTransformer接口对象,这个接口是在slidingmenu_library类库中封装好的
private CanvasTransformer mTransformer;
<2> 然后再实例化此接口,重写接口中的方法,例如示例1中的方法:
/*** transformCanvas(Canvas canvas, float percentOpen) * ① Canvas canvas:画布类; * ② float percentOpen:滑动菜单栏打开时的百分比值。*/mTransformer = new CanvasTransformer() {@Overridepublic void transformCanvas(Canvas canvas, float percentOpen) {float scale = (float) (percentOpen * 0.25 + 0.75);canvas.scale(scale, scale, canvas.getWidth() / 2,canvas.getHeight() / 2);}};
<3> 最后在把实例化的接口对象赋给SlidingMenu类中的setBehindCanvasTransformer()方法:
getSlidingMenu().setBehindCanvasTransformer(mTransformer);
<4>这样就完成了动画效果的实现,下面是示例1的主界面代码,其他的有兴趣的朋友可以查看源代码
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;@Overridepublic 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() {@Overridepublic void transformCanvas(Canvas canvas, float percentOpen) {float scale = (float) (percentOpen * 0.25 + 0.75);canvas.scale(scale, scale, canvas.getWidth() / 2,canvas.getHeight() / 2);}};} }
源代码地址:https://github.com/YeXiaoChao/Yc_ui_slidingmenu_anima
本文地址:http://www.cnblogs.com/yc-755909659/p/4311173.html
来源文章:http://blog.csdn.net/yangyu20121224/article/details/9262931
【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现相关推荐
- 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例-转...
一.SlidingMenu简介 相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作.很多优秀的应用都采用了 ...
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8980917 本系列文章都会以一个程序的实例开发为主线来进行讲解,以求达到一个 ...
- android ui设计与开发工具,Android用户体验与UI设计
Android用户体验与UI设计 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 本书是一部介绍Android用户体验.UI设计理念和方法论的作品 ...
- Android UI设计与开发】第03期:引导界面(三)仿微信引导界面以及动画效果
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8985457 基于前两篇比较简单的实例做铺垫之后,这一篇我们来实 ...
- 【Android UI设计与开发】第16期:滑动菜单栏(一)
这期博主要给大家带来的是关于滑动菜单栏的实现效果. 一.SlidingMenu简介 相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界 ...
- 【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8989063 从这一篇文章开始,我们将进入到一个应用程序主界面UI ...
- 【Android UI设计与开发】第01期:引导界面(一)ViewPager介绍和使用详解
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8980917 做Android开发加起来差不多也有一年多的时间了,总是想写点自 ...
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8987342 这篇文章算是对整个引导界面开发专题的一个终结了吧,个人觉得大部 ...
- 【Android UI设计与开发】第04期:引导界面(四)仿人人网V5.9.2最新版引导界面
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8988147 这一篇我将会以人人网的引导界面为实例来展开详细的讲解, ...
- 【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9023451 在今天的这篇文章当中,我依然会以实战加理论结合 ...
最新文章
- 真·机械朋克!物理学家用扬声器搭建神经网络,登上今日Nature
- C#协变和逆变 - 译
- 统计123出现次数_如何使用 count 统计词条出现次数?
- “奶茶第一股”香飘飘,“香”不起来了?
- 数据库mysql是什么?win10如何安装使用mysql?
- 第2章 数据库系统体系结构
- 整点小浪漫~Python27行代码绘制一幅满天星
- 计算机网络综合布线课设,中职计算机网络综合布线课程改革与思考
- 【Android 逆向】脱壳解决方案 ( DEX 整体加壳 | 函数抽取加壳 | VMP 加壳 | Dex2C 加壳 | Android 应用加固防护级别 )
- mil mm 单位换算
- win7win8 64位汇编开发环境合集安装与设置
- tomcat启动报错 exception_access_violation(0x0000005) at pc=0x000000006d9f904
- matlab百分号是什么意思,matlab 两个百分号
- 2021年中式面点师(中级)最新解析及中式面点师(中级)模拟考试题库
- syntax error: unexpected :=解决方案
- js json字符串 转为json数组
- 「自然语言处理(NLP)」入门系列(一)初识NLP
- IPv5 发生了什么?为什么有 IPv4、IPv6 但没有 IPv5?
- HDU4466 Triangle 计数 容斥原理
- No Debug UInit Device found 问题解决
热门文章
- apk破解工具介绍与使用
- AudFree Tidable Music Converter for Mac - 音乐格式转换软件
- 剪映专业版mac版本要求 剪映mac版最新版更新
- NoteBurner Spotify教程:在Mac上将 Spotify 音乐转换为 MP3 格式
- Android属性动画初探之ObjectAnimator
- Vue指令之v-html
- EasyRecovery软件在win10系统中的功能及使用方法介绍(附注册机下载地址)
- php面向对象特性(一)
- 绿盟科技:“无敌舰队”DDoS勒索防御关键是应急经验积累
- ReactiveSwift源码解析(二) Bag容器的代码实现