开源SlidingMenu笔记(二)

来源:互联网 发布:php ahp和jhp 编辑:程序博客网 时间:2024/05/29 15:39

滑动菜单栏和滑动的效果都是在此类中实现。

[java] view plaincopy
  1. package com.example.myslidingmenudemo08;  
  2.   
  3. import android.graphics.Canvas;  
  4. import android.os.Bundle;  
  5. import android.view.MenuItem;  
  6.   
  7. import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;  
  8. import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.CanvasTransformer;  
  9. import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;  
  10.   
  11. public class MainActivity extends SlidingFragmentActivity {  
  12.     private CanvasTransformer mTransformer;  
  13.   
  14.     @Override  
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.   
  18.         setTitle("Zoom");  
  19.           
  20.         initAnimation();  
  21.           
  22.         initSlidingMenu();  
  23.           
  24.         getActionBar().setDisplayHomeAsUpEnabled(true);  
  25.     }  
  26.   
  27.     /** 
  28.      * 初始化滑动菜单 
  29.      */  
  30.     private void initSlidingMenu(){  
  31.         // 设置主界面视图  
  32.         setContentView(R.layout.content_frame);  
  33.         getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new SampleListFragment()).commit();  
  34.                   
  35.         // 设置滑动菜单视图  
  36.         setBehindContentView(R.layout.menu_frame);  
  37.         getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new SampleListFragment()).commit();  
  38.   
  39.         // 设置滑动菜单的属性值  
  40.         SlidingMenu sm = getSlidingMenu();        
  41.         sm.setShadowWidthRes(R.dimen.shadow_width);  
  42.         sm.setShadowDrawable(R.drawable.shadow);  
  43.         sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);  
  44.         sm.setFadeDegree(0.35f);  
  45.         sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);  
  46.         sm.setBehindScrollScale(0.0f);  
  47.         sm.setBehindCanvasTransformer(mTransformer);  
  48.           
  49.         setSlidingActionBarEnabled(true);  
  50.     }  
  51.   
  52.     /** 
  53.      * 初始化动画效果 
  54.      */  
  55.     private void initAnimation(){  
  56.         mTransformer = new CanvasTransformer(){  
  57.             @Override  
  58.             public void transformCanvas(Canvas canvas, float percentOpen) {  
  59.                 float scale = (float) (percentOpen*0.25 + 0.75);  
  60.                 canvas.scale(scale, scale, canvas.getWidth()/2, canvas.getHeight()/2);                
  61.             }  
  62.               
  63.         };  
  64.     }  
  65.       
  66.     @Override  
  67.     public boolean onOptionsItemSelected(MenuItem item) {  
  68.         switch (item.getItemId()) {  
  69.         case android.R.id.home:  
  70.             toggle();  
  71.             return true;          
  72.         }  
  73.         return super.onOptionsItemSelected(item);  
  74.     }  
  75.       
  76. }  


大家可以先看一遍上面的这段代码,要想实现动画效果主要有三个步骤:

<1> 先定义一个CanvasTransformer接口对象,这个接口是在slidingmenu_library类库中封装好的,所以要想运行此项目还要导入slidingmenu_library类库

[java] view plaincopy
  1. private CanvasTransformer mTransformer;  


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

[java] view plaincopy
  1. mTransformer = new CanvasTransformer(){  
  2.             @Override  
  3.             public void transformCanvas(Canvas canvas, float percentOpen) {  
  4.                 float scale = (float) (percentOpen*0.25 + 0.75);  
  5.                 canvas.scale(scale, scale, canvas.getWidth()/2, canvas.getHeight()/2);                
  6.             }  
  7.               
  8.         };  

我们可以看到在transformCanvas(Canvas canvas, float percentOpen)方法中,有两个参数:

① Canvas canvas:画布类;

② float percentOpen:滑动菜单栏打开时的百分比值。


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

[java] view plaincopy
  1. sm.setBehindCanvasTransformer(mTransformer);  


这样,一个滑动菜单栏打开时的动画效果就配置好了

转自:http://blog.csdn.net/yangyu20121224/article/details/9262931
0 0
原创粉丝点击