• Android网页浏览器的开发


    Android网页浏览器的核心Widget是包含了WebKit的WebView。

    首先,布局文件activity_main.xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        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=".MainActivity" >
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:gravity="center" >
    
            <Button
                android:id="@+id/btnEar"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="<<" />
    
            <Button
                android:id="@+id/btnPre"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="<" />
    
            <Button
                android:id="@+id/btnNext"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text=">" />
    
            <Button
                android:id="@+id/btnLast"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text=">>" />
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="40dp" >
    
            <EditText
                android:id="@+id/edtUrl"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="5"
                android:ems="10"
                android:singleLine="true" >
    
                <requestFocus />
            </EditText>
    
            <Button
                android:id="@+id/btnGo"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:text="GO" />
    
        </LinearLayout>
    
        <WebView
            android:id="@+id/webMain"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    
    </LinearLayout>
    

    布局文件相对简单,包含了几个Button,一个EditText,一个WebView。

    Java文件MainActivity.java:

    package com.hzhi.mybrowser;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Button;
    import android.widget.EditText;
    
    public class MainActivity extends Activity implements OnClickListener{
    	
    	// 控件
    	Button btnEar;
    	Button btnPre;
    	Button btnNext;
    	Button btnLast;
    	EditText edtUrl;
    	Button btnGo;
    	WebView webMain;
    	
    	// URL
    	String strUrl;
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		// 获得控件
    		getCon();
    		webMain.setWebViewClient(new MyWebViewClient());
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    	
    	// 获得控件
    	public void getCon(){
    		btnEar = (Button) findViewById(R.id.btnEar);
    		btnPre = (Button) findViewById(R.id.btnPre);
    		btnNext = (Button) findViewById(R.id.btnNext);
    		btnLast = (Button) findViewById(R.id.btnLast);
    		edtUrl = (EditText) findViewById(R.id.edtUrl);
    		btnGo = (Button) findViewById(R.id.btnGo);
    		webMain = (WebView) findViewById(R.id.webMain);
    		
    		btnEar.setOnClickListener(this);
    		btnPre.setOnClickListener(this);
    		btnNext.setOnClickListener(this);
    		btnLast.setOnClickListener(this);
    		edtUrl.setOnClickListener(this);
    		btnGo.setOnClickListener(this);
    		
    		// 设置JavaScript可用
    		webMain.getSettings().setJavaScriptEnabled(true);
    		webMain.setScrollBarStyle(View.SCROLLBAR_POSITION_DEFAULT);
    	}
    
    	@Override
    	public void onClick(View v) {
    		if (v==btnEar)
    		{
    			if (webMain.canGoBackOrForward(-2)){
    				webMain.goBackOrForward(-2);
    			}
    		}
    		else if (v==btnPre)
    		{
    			if (webMain.canGoBack()){
    				webMain.goBack();
    			}			
    		}
    		else if (v==btnNext)
    		{
    			if (webMain.canGoForward()){
    				webMain.goForward();
    			}
    		}
    		else if (v==btnLast)
    		{
    			if (webMain.canGoBackOrForward(2)){
    				webMain.goBackOrForward(2);
    			}
    		}
    		else if (v==edtUrl)
    		{
    			
    		}
    		// 下载网页
    		else if (v==btnGo)
    		{
    			strUrl = edtUrl.getText().toString();
    			webMain.loadUrl("http://" + strUrl);
    		}
    	}
    	
    	// WebViewClient的处理类
    	class MyWebViewClient extends WebViewClient {
    		@Override
    		public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
    			btnPre.setEnabled(webMain.canGoBack());
    			btnNext.setEnabled(webMain.canGoForward());
    		}
    		@Override
    		public void onPageFinished(WebView view, String url) {
    			if (webMain.getTitle() != null) {
    				MainActivity.this.setTitle(webMain.getTitle());
    			}
    		}
    		@Override
    		public void onPageStarted(WebView view, String url, Bitmap favicon) {
    			MainActivity.this.setTitle(url);
    			edtUrl.setText(url);
    			btnPre.setEnabled(webMain.canGoBack());
    			btnNext.setEnabled(webMain.canGoForward());
    		}
    	}
    
    }
    

    Java文件主要是对WebView控件的操作。其中MyWebViewClient继承自WebViewClient,有更新网页访问历史(onUpdateVisitedHistory)、网页结束(onPageFinished)、网页开始(onPageStarted)等几个函数。

    WebView.setWebViewClient(new MyWebViewClient())表示new一个MyWebViewClient实例作为浏览器,如果没有这行代码,会以Android系统已安装的浏览器浏览网页。

    单击GO按钮时,使用loadUrl函数访问网页。

    最后,在Manifest文件里面加上访问网络的android.permission.INTERNET权限,否则无法打开网页。

    运行效果。

  • 相关阅读:
    String.PadLeft()
    数据生成树 新增
    SQL允许你用EXECUTE执行一个变量中定义的SQL语句,并且允许你在被执行的SQL语句中,再次嵌套入一个变量定义的语句,并且再次在其中用EXECUTE执行它
    获取SqlConnection的统计信息
    页面缓存 OutputCache
    将小写金额转换成大写
    判断是否枚举中的匹配项
    js获取系统时间的几种方法<一> 《网摘学习》
    将指定文件夹(路径)下的所有内容copy到目标文件夹(路径)下的方法
    50个优美的句子<摘自网上>
  • 原文地址:https://www.cnblogs.com/mstk/p/3537355.html
Copyright © 2020-2023  润新知