Android高級部分(二)

Android高級部分第二天。

在這一天裏,我主要學習瞭如何定製菜單,因爲Android系統本身自帶的菜單太醜了,而且功能也不好使,再加上爲了軟件的整體風格、色調一致,我們就需要用到自己定製的菜單了。但是,同時Android系統本身自帶的菜單,我們又沒有辦法去修改他,因爲這些是系統的源碼,我們沒辦法想前面的Toast和notification一樣,通過修改代碼來進行定製,所以,我們需要有別的方法。

另一種思路就是,我們可以將Android本身自帶的菜單屏蔽掉,同時,我們自己創建一個菜單,並懸浮於Activity之上,並在我們按菜單鍵的時候,這個自己創建的菜單能夠顯示出來。

根據上面的思路,再根據查找的資料。發現,我們可以使用PopupWindow來實現我們需要的功能,因爲,PopopWindow可以懸浮在任意的Activity上面,滿足我們的需要。同時,在滿足這個要求的同時,我們也要實現系統自帶的打開菜單的功能。同時,關閉菜單時,有五種情況如下:

1) 再按menu鍵

2) 按back鍵

// 監聽back鍵,如果用戶點擊了back

// 判斷如果菜單顯示,則關閉菜單,同時,不關閉activity

3) 處於暫停狀態

4) 點擊某個菜單項

5) 點擊菜單和通知欄以外的區域(不會響應點擊事件)

當我們做了以上的事件事,菜單欄都會關閉,所以,我們就需要去實現這些功能。代碼如下:

private void initOptionsMenu()//初始化菜單

{

mainLayout = findViewById(R.id.main);

View contentView = getLayoutInflater().inflate(R.layout.optionsmenu, null);

contentView.findViewById(R.id.TextView02).setOnClickListener(this);

contentView.findViewById(R.id.view1).setOnClickListener(this);


// 初始化PopupWindow


mOptionsMenu = new PopupWindow(contentView ,

LayoutParams.MATCH_PARENT,

LayoutParams.WRAP_CONTENT);

mOptionsMenu.setAnimationStyle(R.style.AnimationPreview);

}


@Override

public boolean onKeyDown(int keyCode, KeyEvent event)//實現menu鍵的點擊事件

{

switch (keyCode)

{

case KeyEvent.KEYCODE_BACK:

if (mOptionsMenu.isShowing())

{

mOptionsMenu.dismiss();

return false;

}

break;

case KeyEvent.KEYCODE_MENU:


if (mOptionsMenu.isShowing())

{

mOptionsMenu.dismiss();

}

else

{

mOptionsMenu.showAtLocation(mainLayout, Gravity.BOTTOM, 0, 0);

}

break;

default:

break;

}

return super.onKeyDown(keyCode, event);

}


@Override

protected void onPause()//再系統進入到onPause狀態時,關閉菜單。

{

super.onPause();

if (mOptionsMenu.isShowing())

{

mOptionsMenu.dismiss();

}

}

在這上面都是實現定製菜單欄的代碼。

同時,這一天,我們也學習了,如何在2.3的操作系統上,實現4.0以上的Holo風格。需要我們對SDK中的內容進行操作。具體步驟如下:

思路:控件外觀取決於:style

style定義的文件路徑:

adt-bundle-windows-x86-20130917\sdk\platforms\android-18\

data\res\values\styles.xml

1. 例如:RadioButton的style是:

<item name="android:button">?android:attr/listChoiceIndicatorSingle</item>

用listChoiceIndicatorSingle爲關鍵字,在themes.xml文件中搜索

結果是:<item name="listChoiceIndicatorSingle">@android:drawable/btn_radio</item>

2. 在res中查找btn_radio相關的資源,selector和若干圖片

3. 拷貝btn_radio_holo_light.xml到項目中

4. 再根據編譯錯誤查找需要的圖片

修改RadioButton的android:button屬性值爲:

android:button="@drawable/btn_radio_holo_light"

這些,就是這一天所學習的內容了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章