原創(chuàng)|行業(yè)資訊|編輯:龔雪|2013-11-15 09:37:23.000|閱讀 505 次
概述:本文展示了如何用TranslateAnimation類以一個簡單的方式創(chuàng)建一個簡單的菜單。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
說明
在最近的Android應(yīng)用中,從屏幕左邊滑動的菜單整變得越來越流行。本文展示了如何用TranslateAnimation類以一個簡單的方式創(chuàng)建一個簡單的菜單。
背景
首先需要理解TranslateAnimation類如何運(yùn)行。它的構(gòu)造函數(shù)接收四個參數(shù)。前兩個與X坐標(biāo)相關(guān),后兩個與Y坐標(biāo)相關(guān)。
使用代碼
你需要決定菜單相關(guān)內(nèi)容的位置(如:菜單是否可見),我們可以用內(nèi)容的左邊緣和布爾運(yùn)算來保持追蹤它并決定哪個參數(shù)將被傳給TransalteAnimation構(gòu)建函數(shù)。
if(contentParams.leftMargin == -(menu.getLayoutParams().width)) { // Menu is hidden (slide out parameters) animateFromX = 0; animateToX = (menu.getLayoutParams().width); marginX = 0; menuOpen = true; } else { // Menu is visible (slide in parameter) animateFromX = 0; animateToX = -(menu.getLayoutParams().width); marginX = -(menu.getLayoutParams().width); menuOpen = false; }
為確保動畫不恢復(fù),內(nèi)容左邊緣位置需要做如下改變:
slide.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { // Make movement of content permanent after animation has completed contentParams.setMargins(marginX, 0, 0, 0); // by positioning its left margin content.setLayoutParams(contentParams); } public void onAnimationRepeat(Animation animation) { } public void onAnimationStart(Animation animation) { } });
左邊緣位置可以是0,或者是菜單寬度。菜單寬度由如下方式獲取:
menu.getLayoutParams().width // this is an integer value
一旦參數(shù)被決定,如下定義函數(shù)將在菜單滑進(jìn)或滑出時被調(diào)用。
興趣點(diǎn)
最好是通過獲取菜單寬度設(shè)置內(nèi)容左邊緣,而不是固定的整數(shù)值,這將避免不同設(shè)備屏幕尺寸不同的問題,還可以防止用戶在嘗試通過按住后退鍵隱藏菜單時意外關(guān)閉某應(yīng)用程序。
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) { if(keyCode == KeyEvent.KEYCODE_BACK) { if(menuOpen) { // Slide the menu back if visible and one does not wish to close app but slide it back slideMenuIn(0, -(menu.getLayoutParams().width), -(menu.getLayoutParams().width)); // Pass slide in paramters menuOpen = false; return true; } } return super.onKeyDown(keyCode, keyEvent); }
點(diǎn)擊下載
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)