开源SlidingMenu笔记(二)
来源:互联网 发布:php ahp和jhp 编辑:程序博客网 时间:2024/05/29 15:39
滑动菜单栏和滑动的效果都是在此类中实现。
- package com.example.myslidingmenudemo08;
- import android.graphics.Canvas;
- import android.os.Bundle;
- import android.view.MenuItem;
- import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
- import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.CanvasTransformer;
- import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
- public class MainActivity extends SlidingFragmentActivity {
- private CanvasTransformer mTransformer;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setTitle("Zoom");
- initAnimation();
- initSlidingMenu();
- getActionBar().setDisplayHomeAsUpEnabled(true);
- }
- /**
- * 初始化滑动菜单
- */
- private void initSlidingMenu(){
- // 设置主界面视图
- setContentView(R.layout.content_frame);
- getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new SampleListFragment()).commit();
- // 设置滑动菜单视图
- setBehindContentView(R.layout.menu_frame);
- getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new SampleListFragment()).commit();
- // 设置滑动菜单的属性值
- SlidingMenu sm = getSlidingMenu();
- sm.setShadowWidthRes(R.dimen.shadow_width);
- sm.setShadowDrawable(R.drawable.shadow);
- 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(){
- 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);
- }
- };
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- toggle();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- }
大家可以先看一遍上面的这段代码,要想实现动画效果主要有三个步骤:
<1> 先定义一个CanvasTransformer接口对象,这个接口是在slidingmenu_library类库中封装好的,所以要想运行此项目还要导入slidingmenu_library类库
- private CanvasTransformer mTransformer;
<2> 然后再实例化此接口,重写接口中的方法:
- 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);
- }
- };
我们可以看到在transformCanvas(Canvas canvas, float percentOpen)方法中,有两个参数:
① Canvas canvas:画布类;
② float percentOpen:滑动菜单栏打开时的百分比值。
<3> 最后在把实例化的接口对象赋给SlidingMenu类中的setBehindCanvasTransformer()方法:
- sm.setBehindCanvasTransformer(mTransformer);
这样,一个滑动菜单栏打开时的动画效果就配置好了
0 0
- 开源SlidingMenu笔记(二)
- 开源SlidingMenu笔记(一)
- Android开源:SlidingMenu笔记
- SlidingMenu(二)
- SlidingMenu笔记
- SlidingMenu笔记
- SlidingMenu (二)SlidingMenu简介
- Android开源项目学习笔记(二)--SlidingMenu
- Android开源项目SlidingMenu的学习笔记(二)
- SlidingMenu 用法(二)
- SlidingMenu(二)
- slidingmenu学习笔记
- SlidingMenu的使用笔记
- SlidingMenu使用(二) Demo
- SlidingMenu源码分析(二)
- Android学习笔记之SlidingMenu
- SlidingMenu常规方法使用笔记
- SlidingMenu
- 为什么所有浏览器的userAgent都带Mozilla
- Ubuntu 12.04下NFS安装配置图解
- ramfs,tmpfs,rootfs,initramfs和romfs
- 基于.NET的多线程
- C++链表实现
- 开源SlidingMenu笔记(二)
- IDA下MD5算法F5特征
- 红黑树
- 计算机网络 4.网络层与IP协议
- 关于手机线控耳机那点事儿
- python实现人人网用户数据爬取及简单分析
- 社交网络成安全“重灾区” 用户需加强自主防护
- 用alter关键字为Table增加新字段(sqlite)
- C#金额小写转大写