另类的底部导航栏

  • Post author:
  • Post category:其他


首先我是一个小白 (自学的Java)  还在处于探索的阶段 对于一些知识点也不是很懂。看到别人的软件底部有导航栏,于是自己也想弄一个。方法不一样 有点另类,勿喷  感谢。

好啦,直入主题 先给出XML代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.test1_2.Test" >

  <LinearLayout
        android:id="@+id/tab_menu"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true">
        <TextView
            android:id="@+id/txt_deal"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_weight="1"      
            android:drawablePadding="3dp"
            android:drawableTop="@drawable/abc_ic_voice_search"
            android:gravity="center"
            android:textColor="#FFC0CB"
            android:background="@drawable/tv_bg_selector"
            android:text="消息"/>

        <TextView
            android:id="@+id/txt_poi"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_weight="1"
            android:drawablePadding="3dp"
            android:drawableTop="@drawable/abc_ic_search"
            android:gravity="center"
            android:text="搜索"
            android:background="@drawable/tv_bg_selector"
            android:textColor="#FFC0CB" />

        <TextView
            android:id="@+id/txt_user"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_weight="1"      
            android:drawablePadding="3dp"
            android:drawableTop="@drawable/abc_ic_go"
            android:gravity="center"
            android:textColor="#FFC0CB"
            android:background="@drawable/tv_bg_selector"
            android:text="看点"/>

        <TextView
            android:id="@+id/txt_more"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_weight="1"           
            android:drawablePadding="3dp"
            android:drawableTop="@drawable/abc_ic_menu_moreoverflow_normal_holo_light"
            android:gravity="center"
            android:textColor="#FFC0CB"
            android:background="@drawable/tv_bg_selector"
            android:text="更多"/>

        </LinearLayout>

  <WebView
      android:id="@+id/webView1"
      android:layout_width="400dp"
      android:visibility="invisible"
      android:layout_height="375dp"
      android:layout_above="@+id/tab_menu"
      android:layout_alignLeft="@+id/tab_menu"
      android:layout_alignParentTop="true" />
   <WebView
      android:id="@+id/webView2"
      android:layout_width="400dp"
      android:visibility="invisible"
      android:layout_height="375dp"
      android:layout_above="@+id/tab_menu"
      android:layout_alignLeft="@+id/tab_menu"
      android:layout_alignParentTop="true" />

   <TextView
       android:id="@+id/textView1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:visibility="invisible"
       android:layout_alignTop="@+id/webView1"
       android:layout_centerHorizontal="true"
       android:layout_marginTop="134dp"
       android:text="消息功能待后续开发" />
  
</RelativeLayout>

效果图:

接下来是活动代码:

import android.support.v7.app.ActionBarActivity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Test extends ActionBarActivity {
public  WebView  webView,webView1;
public  TextView c;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//设置窗口风格为进度条
        getWindow().requestFeature(Window.FEATURE_PROGRESS);
		setContentView(R.layout.activity_test);
		
         webView = (WebView) findViewById(R.id.webView1);
         webView1 = (WebView) findViewById(R.id.webView2);
         c = (TextView) findViewById(R.id.textView1);
		TextView bt1 = (TextView) findViewById(R.id.txt_deal);
		bt1.setOnClickListener(new OnClickListener() {
			   
			   public void onClick(View v) {
				   webView1.setVisibility(View.INVISIBLE);
				   webView.setVisibility(View.INVISIBLE);
				   c.setVisibility(View.VISIBLE);
			   }
			  });
		TextView bt2 = (TextView) findViewById(R.id.txt_poi);
		bt2.setOnClickListener(new OnClickListener() {
			   
			   public void onClick(View v) {
				   
				   webView1.setVisibility(View.VISIBLE);
				   webView.setVisibility(View.INVISIBLE);
				   c.setVisibility(View.INVISIBLE);
				   WebSettings settings = webView1.getSettings();
			        settings.setSupportZoom(true);			//支持缩放
			        settings.setBuiltInZoomControls(true);	//启用内置缩放装置
			        settings.setJavaScriptEnabled(true);	//启用JS脚本      百度提示搜索相关的内容
		          //这个网址随便改,我用的是新闻网址
		            webView1.loadUrl("https://www.baidu.com/\r\n" + 
		            		"" + 
		            		"" + 
		            		"");	//加载url
		           
		      
			webView1.setWebViewClient(new WebViewClient() {
		        //当点击链接时,希望覆盖而不是打开新窗口
		        @Override
		        public boolean shouldOverrideUrlLoading(WebView view, String url) {
		            view.loadUrl(url);	//加载新的url
		            return true;	//返回true,代表事件已处理,事件流到此终止
		        }                                                                              
		    });                                                                               
			 webView1.setWebChromeClient(new WebChromeClient() {
		         //当WebView进度改变时更新窗口进度
		         @Override
		         public void onProgressChanged(WebView view, int newProgress) {
		             //Activity的进度范围在0到10000之间,所以这里要乘以100
		             Test.this.setProgress(newProgress * 100);
		         }
		     });
			 //点击后退按钮,让WebView后退一页(也可以覆写Activity的onKeyDown方法)
		    webView1.setOnKeyListener(new View.OnKeyListener() {
		        @Override
		        public boolean onKey(View v, int keyCode, KeyEvent event) {
		            if (event.getAction() == KeyEvent.ACTION_DOWN) {
		                if (keyCode == KeyEvent.KEYCODE_BACK && webView1.canGoBack()) {
		                    webView1.goBack();	//后退
		                    return true;	//已处理
		                }
		            }
		            return false;
		        }
		    });
			   }
			  });
	    TextView bt3 = (TextView) findViewById(R.id.txt_user);
	      bt3.setOnClickListener(new OnClickListener() {
		   
		   public void onClick(View v) {
			 
			   //........................................................................................................................	 
			 //把 webView显示出来  把 webView1隐藏
			   webView.setVisibility(View.VISIBLE);
			   webView1.setVisibility(View.INVISIBLE);
			   c.setVisibility(View.INVISIBLE);
		  WebSettings settings = webView.getSettings();
	        settings.setSupportZoom(true);			//支持缩放
	        settings.setBuiltInZoomControls(true);	//启用内置缩放装置
	        settings.setJavaScriptEnabled(true);	//启用JS脚本      百度提示搜索相关的内容
          //这个网址随便改,我用的是新闻网址
            webView.loadUrl("http://m.xinhuanet.com/\r\n" + 
            		"" + 
            		"");	//加载url
           
      
	webView.setWebViewClient(new WebViewClient() {
        //当点击链接时,希望覆盖而不是打开新窗口
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);	//加载新的url
            return true;	//返回true,代表事件已处理,事件流到此终止
        }                                                                              
    });                                                                               
	 webView.setWebChromeClient(new WebChromeClient() {
         //当WebView进度改变时更新窗口进度
         @Override
         public void onProgressChanged(WebView view, int newProgress) {
             //Activity的进度范围在0到10000之间,所以这里要乘以100
             Test.this.setProgress(newProgress * 100);
         }
     });
	 //点击后退按钮,让WebView后退一页(也可以覆写Activity的onKeyDown方法)
    webView.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
            	
                if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
                    webView.goBack();	//后退
                    return true;	//已处理
                }
            }
            return false;
        }
    });
    //..................................................................................................................................备注间是处理“看点”的网页的代码
			
		   }
		  });
           TextView bt4 = (TextView) findViewById(R.id.txt_more);
         bt4.setOnClickListener(new OnClickListener(){
     		public void onClick(View v){
    			AlertDialog.Builder builder = new Builder(Test.this);
                                      //弹出框会显示“照相;打电话;发信息”这三个选择
    				final String operate[] = {"照相","打电话","发信息"};
    								builder.setItems(operate, new DialogInterface.OnClickListener() {
    					public void onClick(DialogInterface dialog, int id) {
    						switch (id) {
    						case 0:
    							//启动相机程序
    				            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    				           
    							String imageUri = null;
    							intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    				            int TAKE_PHOTO = 0;
								startActivityForResult(intent, TAKE_PHOTO);

    							break;
    						case 1:
    							//点“打电话”对应的事件								
    							break;	
    						case 3:
    							//点“发信息”对应的事件	
    						        break;
    						default:

    							break;
    							}						
    						}
    					}).show();
    				}
    			});

	}

	
	
}


这个xml文件如下图:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#11000000"/>
        </shape>
    </item>
     <item android:state_pressed="false">
        <shape android:shape="rectangle">
            <!-- 透明色 -->
            <solid android:color="#00000000"/>
        </shape>
    </item>
 
</selector>

如果需要上网别忘了权限哦

<uses-permission android:name="android.permission.INTERNET" /> 

本文并没有什么高深的手法,就是用一些简单的知识点拼凑的。 不过可以达到类似的效果,就是通过底部的四个控件 实现了控件的隐藏与显示 给人一种切换的感觉 。  我是一个新手 希望能有高手指点,勿喷 感谢。