【Android UI設計與開發】10:滑動功能表列(二)SlidingMenu 動畫效果的實現

來源:互聯網
上載者:User

標籤:

其實就是在顯示功能表列時,有個動畫的效果。代碼比較簡單,下面進行說明。

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 動畫效果的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.