標籤:
其實就是在顯示功能表列時,有個動畫的效果。代碼比較簡單,下面進行說明。
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
【Android UI設計與開發】10:滑動功能表列(二)SlidingMenu 動畫效果的實現