一款简单的安卓浏览器的设计
2016-03-18 14:11
246 查看
设计一款简单的安卓手机网页浏览器功能。包含前进、后退和支持JavaScript的网页浏览器。运行程序,单击GO按钮,访问地址栏指定的网站;单击“前进”和“后退”按钮,实现类似于IE浏览器上的前进和后退功能。
layout布局代码如下:
<?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"
>
整体采用线性布局,为垂直分布
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
其中的子线性布局采用水平分布
<Button
android:id="@+id/forward"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="前进" />
<Button
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="后退" />
<EditText
android:layout_weight="1"
android:id="@+id/editText_url"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=""
android:lines="1" />
编辑框不允许换行
<Button
android:id="@+id/button_go"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GO" />
</LinearLayout>
子线性布局结束
<WebView android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:focusable="false"
android:layout_weight="1.0"
/>
</LinearLayout>
主活动MainActivity代码如下:
public class MainActivity extends Activity {
private WebView webView;//声明WebView组件的对象
private EditText urlText;//声明作为地址栏的EditText对象
private Button goButton;//声明GO按钮对象
private long exitTime = 0;//记录标记时间
@Override
public void onCreate(Bundle savedInstanceState) {
su
bd6f
per.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView=(WebView)findViewById(R.id.webView1);//获取布局管理器中添加的WebView组件
urlText=(EditText)findViewById(R.id.editText_url);//获取布局管理器中添加的地址栏
goButton=(Button)findViewById(R.id.button_go);//获取布局管理器中添加的GO按钮
webView.getSettings().setJavaScriptEnabled(true);//设置JavaScript可用
webView.setWebChromeClient(new WebChromeClient());//处理JavaScript对话框
//处理各种通知和请求事件,如果不使用该句代码,将使用内置浏览器访问网页
webView.setWebViewClient(new WebViewClient());
Button forward=(Button)findViewById(R.id.forward);//获取布局管理器中添加的“前进”按钮
forward.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
webView.goForward();//前进
}
});
Button back=(Button)findViewById(R.id.back);//获取布局管理器中添加的“后退”按钮
back.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
webView.goBack();//后退
}
});
urlText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_ENTER){//如果为回车键
if("".equals(urlText.getText().toString())){
openBrowser();//浏览网页
return true;
}else{
showDialog();//弹出提示对话框
}
}
return false;
}
});
goButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
if(!"".equals(urlText.getText().toString())){
openBrowser();//浏览网页
}else{
showDialog();
}
}
});
}//OnCreate结束反括号
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private void openBrowser() {
webView.loadUrl(urlText.getText().toString());//浏览
Toast.makeText(this, "正在加载:"+urlText.getText().toString(), Toast.LENGTH_SHORT).show();
}
private void showDialog() {
// TODO Auto-generated method stub
new AlertDialog.Builder(MainActivity.this)
.setTitle("网页浏览器")
.setMessage("请输入要访问的网址")
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Log.d("WebWiew", "单击确定按钮");
}
}).show();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (KeyEvent.KEYCODE_BACK == keyCode&&event.getAction() == KeyEvent.ACTION_DOWN) {
// 判断是否在两秒之内连续点击返回键,是则退出,否则不退出
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
// 将系统当前的时间赋值给exitTime
exitTime = System.currentTimeMillis();
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
}
最后,需要在AndroidManifest.xml里面设置能够访问Internet权限
<uses-permission android:name="android.permission.INTERNET"/>
layout布局代码如下:
<?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"
>
整体采用线性布局,为垂直分布
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
其中的子线性布局采用水平分布
<Button
android:id="@+id/forward"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="前进" />
<Button
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="后退" />
<EditText
android:layout_weight="1"
android:id="@+id/editText_url"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=""
android:lines="1" />
编辑框不允许换行
<Button
android:id="@+id/button_go"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GO" />
</LinearLayout>
子线性布局结束
<WebView android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:focusable="false"
android:layout_weight="1.0"
/>
</LinearLayout>
主活动MainActivity代码如下:
public class MainActivity extends Activity {
private WebView webView;//声明WebView组件的对象
private EditText urlText;//声明作为地址栏的EditText对象
private Button goButton;//声明GO按钮对象
private long exitTime = 0;//记录标记时间
@Override
public void onCreate(Bundle savedInstanceState) {
su
bd6f
per.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView=(WebView)findViewById(R.id.webView1);//获取布局管理器中添加的WebView组件
urlText=(EditText)findViewById(R.id.editText_url);//获取布局管理器中添加的地址栏
goButton=(Button)findViewById(R.id.button_go);//获取布局管理器中添加的GO按钮
webView.getSettings().setJavaScriptEnabled(true);//设置JavaScript可用
webView.setWebChromeClient(new WebChromeClient());//处理JavaScript对话框
//处理各种通知和请求事件,如果不使用该句代码,将使用内置浏览器访问网页
webView.setWebViewClient(new WebViewClient());
Button forward=(Button)findViewById(R.id.forward);//获取布局管理器中添加的“前进”按钮
forward.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
webView.goForward();//前进
}
});
Button back=(Button)findViewById(R.id.back);//获取布局管理器中添加的“后退”按钮
back.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
webView.goBack();//后退
}
});
urlText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_ENTER){//如果为回车键
if("".equals(urlText.getText().toString())){
openBrowser();//浏览网页
return true;
}else{
showDialog();//弹出提示对话框
}
}
return false;
}
});
goButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
if(!"".equals(urlText.getText().toString())){
openBrowser();//浏览网页
}else{
showDialog();
}
}
});
}//OnCreate结束反括号
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private void openBrowser() {
webView.loadUrl(urlText.getText().toString());//浏览
Toast.makeText(this, "正在加载:"+urlText.getText().toString(), Toast.LENGTH_SHORT).show();
}
private void showDialog() {
// TODO Auto-generated method stub
new AlertDialog.Builder(MainActivity.this)
.setTitle("网页浏览器")
.setMessage("请输入要访问的网址")
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Log.d("WebWiew", "单击确定按钮");
}
}).show();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (KeyEvent.KEYCODE_BACK == keyCode&&event.getAction() == KeyEvent.ACTION_DOWN) {
// 判断是否在两秒之内连续点击返回键,是则退出,否则不退出
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
// 将系统当前的时间赋值给exitTime
exitTime = System.currentTimeMillis();
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
}
最后,需要在AndroidManifest.xml里面设置能够访问Internet权限
<uses-permission android:name="android.permission.INTERNET"/>
相关文章推荐
- svn报错:could not read response body connection was closed by server
- PHP Sessions
- 在textField输入完内容,让键盘隐藏的方法
- sublime 3 常用快捷键
- Android学习路线图
- 安卓学习过程、怎样阅读 Android 系统源码
- 用while(true)和continue、break来实现在一个大循环里switch
- 调试JDK源码
- Android Studio debug 时使用 release 签名
- 解决树莓派没有/dev/video0
- 使用peewee将数据库从mysql导入mongodb
- 2015一年开发技术资料收藏整理(二)
- 神经网络入门教程
- 人工神经网络概述及其在分类中的应…
- Effective Java读书笔记一
- Android与Html&JS交互
- 加密技术入门——从对称加密到CA证书
- ubuntu下修改文件夹权限
- mxnet深度学习实战:跑自己的数据实验和一些问题总结
- [1064]:Financial Management