[置顶] WebView怎么使用 关于webview加载网页最基本的用法
2016-03-30 00:29
507 查看
我们都知道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);
4000
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;
}
}
下面是布局文件
<?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>
还有一些功能也没有完成, 关于加载完成的回调, 设置一些主要的格式 下面是部分代码, 有详细的注释 , 希望能对刚接触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);
4000
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>
相关文章推荐
- cocos学习心得2
- 关于Android Studio时出现cannot resolve symbol R报错的解决方法
- 【Android程序优化,避免内存泄露】- [实战一]:避免内存泄露的最后一道墙,使用leakcanary分析程序中的内存泄露。
- iOS开发-即时通讯第三方-环信SDK集成
- 40条Android开发优化建议
- 云豹直播-直播系统源码|直播程序源码|直播APP源码
- Android开发中日历的使用
- 手机APP关于资源热更新的问题
- NDK开发简单demo
- Android代码混淆
- Android Studio之java.lang.NoClassDefFoundError:
- [Android 系统源代码研究] ActivityManagerService情景分析
- jeewx-api-1.0.1(捷微微信接口API)版本正式发布
- 微信公众帐号开发教程第18篇-应用实例之音乐搜索
- jeewx-api 1.0.5 版本发布,微信SDK接口封装(支持微信第三方开放平台)
- 【视频教程】JeeWx 微信开发入门视频
- 微信开发本地调试工具(模拟微信客户端)
- 微信企业号开发之加密方案与全局返回码说明
- 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应
- 教你如何获取索爱X10 Android2.1 Root权限