Android仿微信菜單

來源:互聯網
上載者:User

Android仿菜單

 本篇是對安卓菜單使用編程方式實現,當然可以使用XML的方式完成同樣的功能,基本Java和C#寫法都是一致的,所以使用XML的方式在本篇中使用Java示範,需要注意的是,對於如果不是VS開發的話,那麼資源檔名稱必須以小寫開頭,否則會報錯。

運行效果

C#實現

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

using Android.App;

using Android.OS;

using Android.Views;

using Android.Widget;

 

namespace MenuDemo

{

[Activity(Label = "@string/ApplicationName", MainLauncher = true, Icon = "@drawable/Icon")]

public class MainActivity : Activity

{

protected override void OnCreate(Bundle bundle)

{

base.OnCreate(bundle);

 

SetContentView(Resource.Layout.Main);

var iv = FindViewById<ImageView>(Resource.Id.iv);

iv.SetImageResource(Resource.Drawable.test);

RegisterForContextMenu(iv);

}

//與一個活動關聯

public override bool OnCreateOptionsMenu(IMenu menu)

{

base.OnCreateOptionsMenu(menu);

const int menuItemId = Menu.First;

const int menuItemOrder = Menu.None;

const int munuItemText = Resource.String.menuItem1;

/*

* 第一個參數:組值

* 第二個參數:菜單唯一標示

* 第三個參數:順序參數

* 第四個參數:文本

*/

menu.Add(1, menuItemId, menuItemOrder, munuItemText);

menu.Add(2, menuItemId + 10, menuItemOrder + 1, "菜單2");

menu.Add(2, menuItemId + 20, menuItemOrder + 2, "菜單3" );

var subMenu = menu.AddSubMenu(0, menuItemId + 30, menuItemOrder + 3, "子功能表" );

subMenu.SetHeaderIcon(Resource.Drawable.more);

var subMenuItem1 = subMenu.Add(0, menuItemId + 40, menuItemOrder + 4,"子功能表-1" );

subMenuItem1.SetIcon(Resource.Drawable.more);

var subMenuItem2 = subMenu.Add(0, menuItemId + 50, menuItemOrder + 5,"子功能表-2" ).SetCheckable(true);

subMenuItem2.SetIcon(Resource.Drawable.blue);

subMenu.Add(0, menuItemId + 60, menuItemOrder + 6, "子功能表-3" ).SetCheckable(true);

return true;

}

 

public override bool OnOptionsItemSelected(IMenuItem item)

{

Toast.MakeText(this, "當前菜單編號" + item.ItemId, ToastLength.Long).Show();

return base.OnOptionsItemSelected(item);

}

 

 

public override void OnCreateContextMenu(IContextMenu menu, View v, IContextMenuContextMenuInfo menuInfo)

{

base.OnCreateContextMenu(menu, v, menuInfo);

menu.SetHeaderTitle("操作功能表");

menu.SetHeaderIcon(Resource.Drawable.blue);

menu.Add(0, Menu.First, Menu.None, "菜單1");

menu.Add(0, Menu.First+1,Menu.None, "菜單2").SetShortcut('2','B');

menu.Add(0, Menu.First + 2, Menu.None, "菜單3");

var subMenu = menu.AddSubMenu("子功能表");

subMenu.Add("子功能表選項");

}

}

}

Layout

?

1

2

3

4

5

6

7

8

9

10

11

12

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:minWidth="25px"

android:minHeight="25px">

<ImageView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/iv" />

</LinearLayout>

運行效果

Java實現

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

package com.example.halower.menudemo;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.ContextMenu;

import android.view.MenuInflater;

import android.view.View;

import android.widget.ImageView;

 

 

public class MainActivity extends Activity {

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ImageView iv=(ImageView)findViewById(R.id.iamgeView);

iv.setImageResource(R.drawable.test);

registerForContextMenu(iv);

}

 

@Override

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

super.onCreateContextMenu(menu, v, menuInfo);

MenuInflater inflater=new MenuInflater(this);

inflater.inflate(R.menu.menu_main,menu);

menu.setHeaderIcon(R.drawable.blue);

menu.setHeaderTitle(R.string.menuTitle);

}

}

Layout

?

1

2

3

4

5

6

7

8

9

10

11

12

13

<?xml version="1.0" encoding="utf-8"?>

<resources>

 

<string name="app_name">MenuDemo</string>

<string name="action_settings">Settings</string>

<string name="item1Name" >菜單1</string>

<string name="item2Name" >菜單2</string>

<string name="item3Name" >菜單3--More</string>

<string name="item4Name" >菜單4</string>

<string name="menuTitle">XML中解析菜單</string>

<string name="subitem1Name">子功能表1</string>

<string name="subitem2Name">子功能表2</string>

</resources>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.