(android地图开发) 高德地图添加自定义菜单栏

秒速五厘米 2023-10-19 08:05 214阅读 0赞

截图效果:

Center

布局文件:(内涵相关布局文件注释)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. //底部
  6. android:gravity="bottom"
  7. android:orientation="horizontal" >
  8. <LinearLayout
  9. android:id="@+id/home"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:layout_weight="1"
  13. android:background="@drawable/tab_one_normal"
  14. android:orientation="vertical" >
  15. <TextView
  16. android:id="@+id/zhuye"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:layout_gravity="center"
  20. android:background="@drawable/home"
  21. //文本内容居中
  22. android:gravity="center"
  23. android:paddingTop="34px"
  24. android:text="@string/home"
  25. android:textColor="@color/back"
  26. android:textSize="12dp" />
  27. </LinearLayout>
  28. <LinearLayout
  29. android:id="@+id/publish"
  30. android:layout_width="wrap_content"
  31. android:layout_height="wrap_content"
  32. android:layout_weight="1"
  33. android:background="@drawable/tab_one_normal"
  34. android:orientation="vertical" >
  35. <TextView
  36. android:layout_width="wrap_content"
  37. android:layout_height="wrap_content"
  38. android:layout_gravity="center"
  39. android:background="@drawable/publish"
  40. android:gravity="center"
  41. android:paddingTop="34px"
  42. android:text="@string/publish"
  43. android:textColor="@color/back"
  44. android:textSize="12dp" />
  45. </LinearLayout>
  46. <LinearLayout
  47. android:id="@+id/change"
  48. android:layout_width="wrap_content"
  49. android:layout_height="wrap_content"
  50. android:layout_weight="1"
  51. android:background="@drawable/tab_one_normal"
  52. android:orientation="vertical" >
  53. <TextView
  54. android:layout_width="wrap_content"
  55. android:layout_height="wrap_content"
  56. android:layout_gravity="center"
  57. android:background="@drawable/change"
  58. android:gravity="center"
  59. android:paddingTop="34px"
  60. android:text="@string/change"
  61. android:textColor="@color/back"
  62. android:textSize="12dp" />
  63. </LinearLayout>
  64. <LinearLayout
  65. android:id="@+id/gn1"
  66. android:layout_width="wrap_content"
  67. android:layout_height="wrap_content"
  68. android:layout_weight="1"
  69. android:background="@drawable/tab_one_normal"
  70. android:orientation="vertical" >
  71. <TextView
  72. android:layout_width="wrap_content"
  73. android:layout_height="wrap_content"
  74. android:layout_gravity="center"
  75. android:background="@drawable/more"
  76. android:gravity="center"
  77. android:paddingTop="34px"
  78. android:text="@string/gn1"
  79. android:textColor="@color/back"
  80. android:textSize="12dp" />
  81. </LinearLayout>
  82. <LinearLayout
  83. android:id="@+id/gn2"
  84. android:layout_width="wrap_content"
  85. android:layout_height="wrap_content"
  86. android:layout_weight="1"
  87. android:background="@drawable/tab_one_normal"
  88. android:orientation="vertical" >
  89. <TextView
  90. android:layout_width="wrap_content"
  91. android:layout_height="wrap_content"
  92. android:layout_gravity="center"
  93. android:background="@drawable/more"
  94. android:gravity="center"
  95. android:paddingTop="34px"
  96. android:text="@string/gn2"
  97. android:textColor="@color/back"
  98. android:textSize="12dp" />
  99. </LinearLayout>
  100. </LinearLayout>

Activity相关代码:

  1. //自定义弹出式菜单栏(相关组件)
  2. private PopupWindow pop;
  3. //自定义菜单布局文件
  4. private LayoutInflater inflater ;
  5. //自定义菜单栏组件
  6. private View layout;
  7. //自定义菜单栏布局
  8. private LinearLayout home,publish,change,gn1,gn2;
  9. //按钮
  10. private Button zhuye;
  11. //相关统计
  12. private int i;
  13. //判断是否显示
  14. private boolean IsShow=true;

核心代码(实现自定义菜单栏,需要实现Activity的onKeyDown事件)

  1. //自定义菜单栏的相关方法
  2. @Override
  3. public boolean onKeyDown(int keyCode, KeyEvent event) {
  4. // TODO Auto-generated method stub
  5. if(keyCode==KeyEvent.KEYCODE_MENU)
  6. {
  7. // /通过View.inflate加载不是onCreate加载的xml
  8. inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
  9. layout = inflater.inflate(R.layout.main,null);
  10. pop = new PopupWindow(layout,480,350);//获取PopupWindow对象并设置窗体的大小
  11. pop.showAtLocation(layout, Gravity.CENTER,20,470); //设置窗体的位置
  12. pop.showAsDropDown(layout); //弹出menu窗口
  13. home=(LinearLayout)layout.findViewById(R.id.home);//找到弹出窗口上的控件
  14. home.setOnClickListener(new OnClickListener() {
  15. @Override
  16. public void onClick(View arg0) {
  17. // TODO Auto-generated method stub
  18. //单击时,可通过设置IsShow的boolean值,使得单击时是一种颜色,
  19. //单击过后恢复单击前的颜色,不这么设置就会导致,
  20. //当你单击了和单击后都会一直显示单击时的背景色,不会有颜色变化。
  21. if(IsShow==true)
  22. {
  23. home.setBackgroundResource(R.drawable.tab_two_highlight);
  24. publish.setBackgroundResource(R.drawable.tab_one_normal);
  25. change.setBackgroundResource(R.drawable.tab_one_normal);
  26. gn1.setBackgroundResource(R.drawable.tab_one_normal);
  27. gn2.setBackgroundResource(R.drawable.tab_one_normal);
  28. IsShow=false;
  29. }
  30. else
  31. {
  32. home.setBackgroundResource(R.drawable.tab_one_normal);
  33. publish.setBackgroundResource(R.drawable.tab_one_normal);
  34. change.setBackgroundResource(R.drawable.tab_one_normal);
  35. gn1.setBackgroundResource(R.drawable.tab_one_normal);
  36. gn2.setBackgroundResource(R.drawable.tab_one_normal);
  37. IsShow=true;
  38. }
  39. }
  40. });
  41. publish=(LinearLayout)layout.findViewById(R.id.publish);
  42. publish.setOnClickListener(new OnClickListener() {
  43. @Override
  44. public void onClick(View arg0) {
  45. // TODO Auto-generated method stub
  46. if(IsShow==false)
  47. {
  48. publish.setBackgroundResource(R.drawable.tab_two_highlight);
  49. home.setBackgroundResource(R.drawable.tab_one_normal);
  50. change.setBackgroundResource(R.drawable.tab_one_normal);
  51. gn1.setBackgroundResource(R.drawable.tab_one_normal);
  52. gn2.setBackgroundResource(R.drawable.tab_one_normal);
  53. IsShow=true;
  54. }
  55. else
  56. {
  57. publish.setBackgroundResource(R.drawable.tab_one_normal);
  58. home.setBackgroundResource(R.drawable.tab_one_normal);
  59. change.setBackgroundResource(R.drawable.tab_one_normal);
  60. gn1.setBackgroundResource(R.drawable.tab_one_normal);
  61. gn2.setBackgroundResource(R.drawable.tab_one_normal);
  62. IsShow=false;
  63. }
  64. }
  65. });
  66. change=(LinearLayout)layout.findViewById(R.id.change);
  67. change.setOnClickListener(new OnClickListener() {
  68. @Override
  69. public void onClick(View arg0) {
  70. // TODO Auto-generated method stub
  71. if(IsShow==true)
  72. {
  73. change.setBackgroundResource(R.drawable.tab_two_highlight);
  74. home.setBackgroundResource(R.drawable.tab_one_normal);
  75. publish.setBackgroundResource(R.drawable.tab_one_normal);
  76. gn1.setBackgroundResource(R.drawable.tab_one_normal);
  77. gn2.setBackgroundResource(R.drawable.tab_one_normal);
  78. IsShow=false;
  79. }
  80. else
  81. {
  82. change.setBackgroundResource(R.drawable.tab_one_normal);
  83. home.setBackgroundResource(R.drawable.tab_one_normal);
  84. publish.setBackgroundResource(R.drawable.tab_one_normal);
  85. gn1.setBackgroundResource(R.drawable.tab_one_normal);
  86. gn2.setBackgroundResource(R.drawable.tab_one_normal);
  87. IsShow=true;
  88. }
  89. }
  90. });
  91. gn1=(LinearLayout)layout.findViewById(R.id.gn1);
  92. gn1.setOnClickListener(new OnClickListener() {
  93. @Override
  94. public void onClick(View arg0) {
  95. // TODO Auto-generated method stub
  96. if(IsShow==false)
  97. {
  98. gn1.setBackgroundResource(R.drawable.tab_two_highlight);
  99. home.setBackgroundResource(R.drawable.tab_one_normal);
  100. publish.setBackgroundResource(R.drawable.tab_one_normal);
  101. change.setBackgroundResource(R.drawable.tab_one_normal);
  102. gn2.setBackgroundResource(R.drawable.tab_one_normal);
  103. IsShow=true;
  104. }
  105. else
  106. {
  107. gn1.setBackgroundResource(R.drawable.tab_one_normal);
  108. home.setBackgroundResource(R.drawable.tab_one_normal);
  109. publish.setBackgroundResource(R.drawable.tab_one_normal);
  110. change.setBackgroundResource(R.drawable.tab_one_normal);
  111. gn2.setBackgroundResource(R.drawable.tab_one_normal);
  112. IsShow=false;
  113. }
  114. }
  115. });
  116. gn2=(LinearLayout)layout.findViewById(R.id.gn2);
  117. gn2.setOnClickListener(new OnClickListener() {
  118. @Override
  119. public void onClick(View arg0) {
  120. // TODO Auto-generated method stub
  121. if(IsShow==false)
  122. {
  123. gn2.setBackgroundResource(R.drawable.tab_two_highlight);
  124. home.setBackgroundResource(R.drawable.tab_one_normal);
  125. publish.setBackgroundResource(R.drawable.tab_one_normal);
  126. change.setBackgroundResource(R.drawable.tab_one_normal);
  127. gn1.setBackgroundResource(R.drawable.tab_one_normal);
  128. IsShow=true;
  129. }
  130. else
  131. {
  132. gn2.setBackgroundResource(R.drawable.tab_one_normal);
  133. home.setBackgroundResource(R.drawable.tab_one_normal);
  134. publish.setBackgroundResource(R.drawable.tab_one_normal);
  135. change.setBackgroundResource(R.drawable.tab_one_normal);
  136. gn1.setBackgroundResource(R.drawable.tab_one_normal);
  137. IsShow=false;
  138. }
  139. }
  140. });
  141. return false;
  142. }
  143. if(keyCode==KeyEvent.KEYCODE_BACK)
  144. {
  145. //是当前页即没弹出菜单窗口的时候
  146. if(i==1)
  147. {
  148. System.exit(0);
  149. i=2;
  150. }
  151. //弹出菜单窗口的时候
  152. else
  153. {
  154. //弹出窗口关闭
  155. pop.dismiss();
  156. i=1;
  157. }
  158. return false;
  159. }
  160. return false;
  161. }

发表评论

表情:
评论列表 (有 0 条评论,214人围观)

还没有评论,来说两句吧...

相关阅读