天天看點

WebView怎麼使用 關于webview加載網頁最基本的用法

我們都知道webView可以用于去加載網頁 , 這裡是一點關于webView的用法, 這裡主要是 關于它在文字方面的顯示  可以設定字型大小  以及最基本的使用

還有一些功能也沒有完成, 關于加載完成的回調,  設定一些主要的格式  下面是部分代碼,  有詳細的注釋 , 希望能對剛接觸webView的哥們有所幫助

package atguigu.com.bjnews.ui;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import atguigu.com.bjnews.R;
import atguigu.com.bjnews.utils.Constants;

public class NewsDetailActivity extends Activity implements View.OnClickListener {

private WebView webView;
private ProgressBar progress_Bar;
/**
* 臨時位置
*/
private int tempPosition = 3;
private WebSettings settings;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_detail);
initView();
String url = getIntent().getStringExtra("url");  //擷取從activity傳過來得url值
url = Constants.BASE_URL + url.substring(url.indexOf("/", 23) + 1);   //此處可忽略 ,根據自己的url進行加載
Log.e("TAG", "url == " + url);


webView = (WebView) findViewById(R.id.webView);
settings = webView.getSettings();
settings.setJavaScriptEnabled(true); //支援javaScript
settings.setTextSize(WebSettings.TextSize.SMALLER); //設定預設選擇字型
webView.loadUrl(url);  //加載url
settings.setBuiltInZoomControls(true);//當加載的頁面,是可以縮放的頁面的時候,自動顯示縮放按鈕

settings.setUseWideViewPort(true);//當加載的頁面,是可以縮放的頁面的時候,輕按兩下縮放

/**
* 頁面加載完成的時候
*/
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progress_Bar.setVisibility(View.GONE);
}
});
}

private void initView() {

progress_Bar = (ProgressBar) findViewById(R.id.progress_Bar);
findViewById(R.id.tv_base_title).setVisibility(View.GONE);
findViewById(R.id.ib_menu).setVisibility(View.GONE);
findViewById(R.id.ib_back).setVisibility(View.VISIBLE);
findViewById(R.id.ib_textsize).setVisibility(View.VISIBLE);
findViewById(R.id.ib_share).setVisibility(View.VISIBLE);

/**
* 設定監聽
*/
findViewById(R.id.ib_back).setOnClickListener(this);
findViewById(R.id.ib_textsize).setOnClickListener(this);
findViewById(R.id.ib_share).setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ib_back: //傳回
finish();
break;
case R.id.ib_textsize: //字型設定
showTextSizeDialog();
break;
case R.id.ib_share: //分享

break;
}
}

/**
* 選擇字型大小的dialog
*/
private void showTextSizeDialog() {
String[] items = {"超大字型","大号字型","正常字型","小号字型","超小字型"};
new AlertDialog.Builder(this)
.setTitle("設定字型大小")

/**
* 設定多選項
*/
.setSingleChoiceItems(items, tempPosition, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tempPosition = which;
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
chooseTextSize(tempPosition);
}
})
.setNegativeButton("取消", null)
.show();
}

/**
* 選擇字型狀态
*/
private void chooseTextSize(int position) {
switch (position) {
case 0 : //超大号
settings.setTextZoom(250);
break;
case 1 : //大号
settings.setTextZoom(200);
break;
case 2 : //正常
settings.setTextZoom(150);
break;
case 3 : //小号
settings.setTextZoom(75);
break;
case 4 : //超小号
settings.setTextZoom(50);
break;
}
}

           
/**
           
下面是過時的設定方式setTextSize()
           
*/
           
private void changeTextSize(int position) {
switch (position){
case 0://超大字号
settings.setTextSize(WebSettings.TextSize.LARGEST);
// webSettings.setTextZoom(WebSettings.TextSize.values().);
break;
case 1://大字号
settings.setTextSize(WebSettings.TextSize.LARGER);
break;
case 2://正常字号
settings.setTextSize(WebSettings.TextSize.NORMAL);
break;
case 3://小号
settings.setTextSize(WebSettings.TextSize.SMALLER);
break;
case 4://超小号
settings.setTextSize(WebSettings.TextSize.SMALLEST);
break;
}
}
           

下面是布局檔案

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include layout="@layout/read_title_bar" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </WebView>
        <!--用background會有兩個progressBar-->
        <ProgressBar
            android:id="@+id/progress_Bar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:indeterminateDrawable="@drawable/comstom_progresssbar" />


    </FrameLayout>


</LinearLayout>
           

标題布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@drawable/title_red_bg">

    <TextView
        android:id="@+id/tv_base_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="我是标題"
        android:textColor="@android:color/white"
        android:textSize="23sp" />

    <ImageButton
        android:id="@+id/ib_menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:background="@android:color/transparent"
        android:src="@drawable/img_menu"
        android:visibility="gone" />

    <ImageButton
        android:id="@+id/ib_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:background="@android:color/transparent"
        android:src="@drawable/back"
        android:visibility="gone" />

    <ImageButton
        android:id="@+id/ib_switche_mode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="10dp"
        android:background="@android:color/transparent"
        android:src="@drawable/icon_pic_grid_type"
        android:visibility="gone" />


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="10dp"
        android:orientation="horizontal">


        <ImageButton
            android:id="@+id/ib_textsize"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:background="@android:color/transparent"
            android:src="@drawable/icon_textsize"
            android:visibility="gone" />


        <ImageButton
            android:id="@+id/ib_share"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="@android:color/transparent"
            android:src="@drawable/icon_share"
            android:visibility="gone" />
    </LinearLayout>


</RelativeLayout>