一款简单的安卓浏览器的设计

本文介绍了一款简单的Android手机网页浏览器的设计与实现,支持前进、后退功能,并能解析JavaScript。通过XML布局定义UI元素,利用Java代码实现网页加载及按钮响应等功能。

    设计一款简单的安卓手机网页浏览器功能。包含前进、后退和支持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) {
        super.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"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值