原創|行業資訊|編輯:龔雪|2013-11-15 09:37:23.000|閱讀 514 次
概述:本文展示了如何用TranslateAnimation類以一個簡單的方式創建一個簡單的菜單。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
說明
在最近的Android應用中,從屏幕左邊滑動的菜單整變得越來越流行。本文展示了如何用TranslateAnimation類以一個簡單的方式創建一個簡單的菜單。
背景
首先需要理解TranslateAnimation類如何運行。它的構造函數接收四個參數。前兩個與X坐標相關,后兩個與Y坐標相關。
使用代碼
你需要決定菜單相關內容的位置(如:菜單是否可見),我們可以用內容的左邊緣和布爾運算來保持追蹤它并決定哪個參數將被傳給TransalteAnimation構建函數。
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;
}
為確保動畫不恢復,內容左邊緣位置需要做如下改變:
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
一旦參數被決定,如下定義函數將在菜單滑進或滑出時被調用。
興趣點
最好是通過獲取菜單寬度設置內容左邊緣,而不是固定的整數值,這將避免不同設備屏幕尺寸不同的問題,還可以防止用戶在嘗試通過按住后退鍵隱藏菜單時意外關閉某應用程序。
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);
}
點擊下載
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自:慧都控件網