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

无情 阅读:613 2021-04-01 10:20:49 评论:0

截图效果:

               

 

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

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"  
    //底部  
    android:gravity="bottom" 
    android:orientation="horizontal" > 
 
    <LinearLayout 
        android:id="@+id/home" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:background="@drawable/tab_one_normal" 
        android:orientation="vertical" > 
 
        <TextView 
            android:id="@+id/zhuye" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_gravity="center" 
            android:background="@drawable/home" 
            //文本内容居中
            android:gravity="center" 
            android:paddingTop="34px" 
            android:text="@string/home" 
            android:textColor="@color/back" 
            android:textSize="12dp" /> 
    </LinearLayout> 
 
    <LinearLayout 
        android:id="@+id/publish" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:background="@drawable/tab_one_normal" 
        android:orientation="vertical" > 
 
        <TextView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_gravity="center" 
            android:background="@drawable/publish" 
            android:gravity="center" 
            android:paddingTop="34px" 
            android:text="@string/publish" 
            android:textColor="@color/back" 
            android:textSize="12dp" /> 
    </LinearLayout> 
 
    <LinearLayout 
        android:id="@+id/change" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:background="@drawable/tab_one_normal" 
        android:orientation="vertical" > 
 
        <TextView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_gravity="center" 
            android:background="@drawable/change" 
            android:gravity="center" 
            android:paddingTop="34px" 
            android:text="@string/change" 
            android:textColor="@color/back" 
            android:textSize="12dp" /> 
    </LinearLayout> 
 
    <LinearLayout 
        android:id="@+id/gn1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:background="@drawable/tab_one_normal" 
        android:orientation="vertical" > 
 
        <TextView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_gravity="center" 
            android:background="@drawable/more" 
            android:gravity="center" 
            android:paddingTop="34px" 
            android:text="@string/gn1" 
            android:textColor="@color/back" 
            android:textSize="12dp" /> 
    </LinearLayout> 
 
    <LinearLayout 
        android:id="@+id/gn2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:background="@drawable/tab_one_normal" 
        android:orientation="vertical" > 
 
        <TextView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_gravity="center" 
            android:background="@drawable/more" 
            android:gravity="center" 
            android:paddingTop="34px" 
            android:text="@string/gn2" 
            android:textColor="@color/back" 
            android:textSize="12dp" /> 
    </LinearLayout> 
 
</LinearLayout>


Activity相关代码:

	//自定义弹出式菜单栏(相关组件)	 
		private PopupWindow pop; 
		//自定义菜单布局文件 
		private LayoutInflater inflater ; 
		//自定义菜单栏组件 
		private View layout; 
		//自定义菜单栏布局 
		private LinearLayout home,publish,change,gn1,gn2; 
		//按钮 
		private Button zhuye; 
		//相关统计 
		private int i; 
		//判断是否显示 
		private boolean IsShow=true;


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

//自定义菜单栏的相关方法 
	@Override 
	public boolean onKeyDown(int keyCode, KeyEvent event) { 
		// TODO Auto-generated method stub 
		  if(keyCode==KeyEvent.KEYCODE_MENU) 
		     { 
			   // /通过View.inflate加载不是onCreate加载的xml 
		    	inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); 
		 		layout = inflater.inflate(R.layout.main,null); 
		 		pop = new PopupWindow(layout,480,350);//获取PopupWindow对象并设置窗体的大小 
		 		pop.showAtLocation(layout, Gravity.CENTER,20,470); //设置窗体的位置 
		 		pop.showAsDropDown(layout); 	 		//弹出menu窗口	 
		 		home=(LinearLayout)layout.findViewById(R.id.home);//找到弹出窗口上的控件 
		 	     
		 	    home.setOnClickListener(new OnClickListener() { 
					 
					@Override 
					public void onClick(View arg0) { 
						// TODO Auto-generated method stub 
						//单击时,可通过设置IsShow的boolean值,使得单击时是一种颜色, 
						//单击过后恢复单击前的颜色,不这么设置就会导致, 
						//当你单击了和单击后都会一直显示单击时的背景色,不会有颜色变化。 
						if(IsShow==true) 
						{ 
						home.setBackgroundResource(R.drawable.tab_two_highlight); 
						publish.setBackgroundResource(R.drawable.tab_one_normal); 
						change.setBackgroundResource(R.drawable.tab_one_normal); 
						gn1.setBackgroundResource(R.drawable.tab_one_normal);	 
						gn2.setBackgroundResource(R.drawable.tab_one_normal);		 
						IsShow=false; 
						} 
						else 
						{ 
							home.setBackgroundResource(R.drawable.tab_one_normal); 
							publish.setBackgroundResource(R.drawable.tab_one_normal); 
							change.setBackgroundResource(R.drawable.tab_one_normal); 
							gn1.setBackgroundResource(R.drawable.tab_one_normal);	 
							gn2.setBackgroundResource(R.drawable.tab_one_normal);			 
							IsShow=true; 
						} 
					} 
				}); 
		 		publish=(LinearLayout)layout.findViewById(R.id.publish); 
		 		publish.setOnClickListener(new OnClickListener() { 
					 
					@Override 
					public void onClick(View arg0) { 
						// TODO Auto-generated method stub 
						if(IsShow==false) 
						{ 
						publish.setBackgroundResource(R.drawable.tab_two_highlight); 
						home.setBackgroundResource(R.drawable.tab_one_normal); 
						change.setBackgroundResource(R.drawable.tab_one_normal); 
						gn1.setBackgroundResource(R.drawable.tab_one_normal); 
						gn2.setBackgroundResource(R.drawable.tab_one_normal);			 
						IsShow=true; 
						} 
						else 
						{ 
							publish.setBackgroundResource(R.drawable.tab_one_normal); 
							home.setBackgroundResource(R.drawable.tab_one_normal); 
							change.setBackgroundResource(R.drawable.tab_one_normal); 
							gn1.setBackgroundResource(R.drawable.tab_one_normal); 
							gn2.setBackgroundResource(R.drawable.tab_one_normal); 
							IsShow=false; 
						} 
					} 
				}); 
		 		 
		 		change=(LinearLayout)layout.findViewById(R.id.change); 
		 		change.setOnClickListener(new OnClickListener() { 
					 
					@Override 
					public void onClick(View arg0) { 
						// TODO Auto-generated method stub 
						if(IsShow==true) 
						{ 
						change.setBackgroundResource(R.drawable.tab_two_highlight); 
						home.setBackgroundResource(R.drawable.tab_one_normal); 
						publish.setBackgroundResource(R.drawable.tab_one_normal); 
						gn1.setBackgroundResource(R.drawable.tab_one_normal); 
						gn2.setBackgroundResource(R.drawable.tab_one_normal);	 
						IsShow=false; 
						} 
						else 
						{ 
							change.setBackgroundResource(R.drawable.tab_one_normal); 
							home.setBackgroundResource(R.drawable.tab_one_normal); 
							publish.setBackgroundResource(R.drawable.tab_one_normal); 
							gn1.setBackgroundResource(R.drawable.tab_one_normal);	 
							gn2.setBackgroundResource(R.drawable.tab_one_normal);		 
							IsShow=true; 
						} 
					} 
				}); 
		 		 
		 		gn1=(LinearLayout)layout.findViewById(R.id.gn1); 
		 		gn1.setOnClickListener(new OnClickListener() { 
					 
					@Override 
					public void onClick(View arg0) { 
						// TODO Auto-generated method stub 
						if(IsShow==false) 
						{ 
							gn1.setBackgroundResource(R.drawable.tab_two_highlight); 
							home.setBackgroundResource(R.drawable.tab_one_normal); 
							publish.setBackgroundResource(R.drawable.tab_one_normal); 
							change.setBackgroundResource(R.drawable.tab_one_normal);    
							gn2.setBackgroundResource(R.drawable.tab_one_normal);    
							IsShow=true; 
						} 
						else 
						{ 
							gn1.setBackgroundResource(R.drawable.tab_one_normal); 
							home.setBackgroundResource(R.drawable.tab_one_normal); 
							publish.setBackgroundResource(R.drawable.tab_one_normal); 
							change.setBackgroundResource(R.drawable.tab_one_normal); 
							gn2.setBackgroundResource(R.drawable.tab_one_normal); 
							IsShow=false; 
						} 
					} 
				});	 
		 		 
				gn2=(LinearLayout)layout.findViewById(R.id.gn2); 
		 		gn2.setOnClickListener(new OnClickListener() { 
					 
					@Override 
					public void onClick(View arg0) { 
						// TODO Auto-generated method stub 
						if(IsShow==false) 
						{ 
							gn2.setBackgroundResource(R.drawable.tab_two_highlight); 
							home.setBackgroundResource(R.drawable.tab_one_normal); 
							publish.setBackgroundResource(R.drawable.tab_one_normal); 
							change.setBackgroundResource(R.drawable.tab_one_normal);    
							gn1.setBackgroundResource(R.drawable.tab_one_normal);    
							IsShow=true; 
						} 
						else 
						{ 
							gn2.setBackgroundResource(R.drawable.tab_one_normal); 
							home.setBackgroundResource(R.drawable.tab_one_normal); 
							publish.setBackgroundResource(R.drawable.tab_one_normal); 
							change.setBackgroundResource(R.drawable.tab_one_normal); 
							gn1.setBackgroundResource(R.drawable.tab_one_normal); 
							IsShow=false; 
						} 
					} 
				});	 
	            return false; 
		     } 
	  
		     if(keyCode==KeyEvent.KEYCODE_BACK) 
		     { 
		    	 //是当前页即没弹出菜单窗口的时候 
		    	 if(i==1) 
		    	 { 
		    		 System.exit(0);	  
		    		 i=2; 
		    	 } 
		    	 //弹出菜单窗口的时候 
		    	 else 
		    	 { 
		    		 //弹出窗口关闭 
		    		 pop.dismiss(); 
		    		 i=1; 
		    	 } 
		    	 
		 	    return false; 
		     } 
			return false; 
	}


 

标签:Android
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号