其實就是在顯示菜單欄時,有個動畫的效果。代碼比較簡單,下面進行說明。
1.效果圖如下,手機上查看效果更佳
2.代碼實現,這里只講解動畫效果的實現,具體代碼可在源代碼中查看
<1> 先定義一個CanvasTransformer接口對象,這個接口是在slidingmenu_library類庫中封裝好的
private CanvasTransformer mTransformer;
<2> 然后再實例化此接口,重寫接口中的方法,例如示例1中的方法:
/** * 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); } };
<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; @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); } }; } }
源代碼地址: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