首先我是一个小白 (自学的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" />
本文并没有什么高深的手法,就是用一些简单的知识点拼凑的。 不过可以达到类似的效果,就是通过底部的四个控件 实现了控件的隐藏与显示 给人一种切换的感觉 。 我是一个新手 希望能有高手指点,勿喷 感谢。