webviewactivity

WebView注意点,注释里有说明

  1 package com.example.suneyaenews;
  2
  3 import com.example.http.HttpThread;
  4
  5 import android.app.Activity;
  6 import android.content.Intent;
  7 import android.net.Uri;
  8 import android.os.Bundle;
  9 import android.os.Handler;
 10 import android.view.KeyEvent;
 11 import android.view.View;
 12 import android.view.View.OnClickListener;
 13 import android.webkit.WebView;
 14 import android.webkit.WebViewClient;
 15 import android.widget.ImageButton;
 16 import android.widget.Toast;
 17
 18 public class WebViewActivity extends Activity implements OnClickListener {
 19     private static String HAO123 = "https://www.hao123.com/";
 20     private static String BAIDU = "https://www.baidu.com/";
 21     private static String HOME = "http://m.hao123.com/?vit=h123&from=3w123";
 22     private WebView webView;
 23     private ImageButton imgbtn_back, imgbtn_ahead, imgbtn_home, imgbtn_more,
 24             imgbtn_tag;
 25
 26     @Override
 27     protected void onCreate(Bundle savedInstanceState) {
 28         // TODO Auto-generated method stub
 29         super.onCreate(savedInstanceState);
 30         setContentView(R.layout.webview);
 31         initImgbtn();
 32         webView = (WebView) findViewById(R.id.id_webview);
 33         // new HttpThread("www.baidu.com", webView, new Handler()).start();
 34         webView.loadUrl(HAO123);// 打开网页的第一种方式:使用webview来访问
 35
 36         setWebView();// 设置默认打开行为
 37         // webView.loadUrl("file:///android_asset/xx.html ");//没成功,
 38         // Uri uri = Uri.parse("https://www.hao123.com/");
 39         // Intent intent = new Intent(Intent.ACTION_VIEW,uri);
 40         // startActivity(intent);//打开网页的第二种方式:使用intent
 41         // boolean flag = webView.isPressed();
 42         // prompt("webView.isPressed():"+flag);
 43
 44         webView.getSettings().setJavaScriptEnabled(true);// 设置启动javascript
 45
 46     }
 47
 48     private void setWebView() {
 49         // //覆盖webView默认使用第三方或者系统浏览器打开网页的行为,
 50         webView.setWebViewClient(new WebViewClient() {
 51             @Override
 52             public boolean shouldOverrideUrlLoading(WebView view, String url) {
 53                 // TODO Auto-generated method stub
 54                 // true:在webview中打开, false:用系统或者第三方浏览器打开
 55                 view.loadUrl(url);
 56                 return true;
 57             }
 58
 59             @Override
 60             public void onLoadResource(WebView view, String url) {
 61                 // TODO Auto-generated method stub
 62                 // prompt("正在加载资源,onLoadResource,url:"+url);
 63             }
 64             // 这个WebViewClient的作用:帮助WebView去处理一些页面控制,和请求通知。
 65         });
 66     }
 67
 68     private void initImgbtn() {
 69         // imgbtn_back, imgbtn_ahead, imgbtn_home, imgbtn_more,
 70         // imgbtn_tag
 71         imgbtn_back = (ImageButton) findViewById(R.id.id_btn_back);
 72         imgbtn_ahead = (ImageButton) findViewById(R.id.id_btn_ahead);
 73         imgbtn_home = (ImageButton) findViewById(R.id.id_btn_home);
 74         imgbtn_more = (ImageButton) findViewById(R.id.id_btn_more);
 75         imgbtn_tag = (ImageButton) findViewById(R.id.id_btn_tag);
 76         imgbtn_back.setOnClickListener(this);
 77         imgbtn_ahead.setOnClickListener(this);
 78         imgbtn_home.setOnClickListener(this);
 79         imgbtn_more.setOnClickListener(this);
 80         imgbtn_tag.setOnClickListener(this);
 81     }
 82
 83     /**
 84      * 改写物理按钮返回的逻辑,
 85      */
 86     @Override
 87     public boolean onKeyDown(int keyCode, KeyEvent event) {
 88         // TODO Auto-generated method stub
 89         if (keyCode == event.KEYCODE_BACK) {
 90             if (webView.canGoBack()) {
 91                 prompt("返回上一页面...");
 92                 webView.goBack();// 返回上一页面
 93                 return true;
 94             } else {
 95                 prompt("退出程序...");
 96                 System.exit(0);
 97             }
 98         }
 99         return super.onKeyDown(keyCode, event);
100     }
101
102     private void prompt(String hint, int duration) {
103         Toast.makeText(this, hint, duration).show();
104     }
105
106     /**
107      * 弹出提示
108      *
109      * @param hint
110      */
111     private void prompt(String hint) {
112         Toast.makeText(this, hint, 100).show();
113     }
114
115     @Override
116     public void onClick(View v) {
117         int ic_id = v.getId();
118         switch (ic_id) {
119         case R.id.id_btn_back:
120             if (webView.canGoBack()) {
121                 prompt("返回上一页面...");
122                 webView.goBack();
123             }
124             break;
125         case R.id.id_btn_ahead:
126             if (webView.canGoForward()) {
127                 prompt("返回下一页面...");
128                 webView.goForward();// 返回上一页面
129             } else {
130                 prompt("小主,这已经是最后一页了...");
131             }
132             break;
133         case R.id.id_btn_home:
134             // 如果当前url不是HOME页,那么就加载到home页,否则什么也不干
135             if (!HOME.equals(webView.getUrl())) {
136                 prompt("回到主页...  " + webView.getUrl());
137                 webView.loadUrl(HOME);
138                 setWebView();// 设置默认打开行为
139             }
140             break;
141         case R.id.id_btn_more:
142
143             break;
144         case R.id.id_btn_tag:
145
146             break;
147         default:
148             break;
149         }
150     }
151 }

  

时间: 2024-08-07 00:34:03

webviewactivity的相关文章

10.3.3 WebView的几个常见功能

当前主流的开发模式是"WebView+ProgressDialog" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_paren

ContentLoadingProgressBar不显示问题

ContentLoadingProgressBar需要设置style 并且在XML中布局的位置必须写在content布局的下面 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro

Android开发学习之路--性能优化之常用工具

??android性能优化相关的开发工具有很多很多种,这里对如下六个工具做个简单的使用介绍,主要有Android开发者选项,分析具体耗时的Trace view,布局复杂度工具Hierarchy View,应用启动时间,Memory.CPU.Network分析,静态代码检查工具Lint以及程序稳定性monkey.下面就开始学习下这些工具吧. 一.Android开发者选项 ??Andorid开发工具众多,首先就是手机自带的开发者选项了,至于手机怎么启动开发者选项,那么请自行百度或者google了,接

高灵活低耦合Adapter快速开发攻略

Android开发中经常需要使用Adapter. 传统方法是自定义一个Adapter并继承AndroidSDK内的BaseAdapter, 这种方式代码量大,耦合度高,灵活性差(各种监听事件需要对View单独写,或者自定义一个比较统一的方法): 而ZBLibrary中的BaseViewAdapter不仅预处理了通用方法(getCount,getItem等) 以及 Item复用逻辑, 而且将对Item的处理代码单独写在一个BaseView(提供了大量常用方法)的子类, 所以使用继承BaseView

android创建快捷方式以及删除快捷方式

/** * * 创建快捷方式 * @param map 快捷方式图标 * @param appName 快捷方式标题 * @param appUrl 快捷方式打开的地址 * @param iconUrl 快捷方式图标地址 * * */ public static void createShortcut(Context activity ,Bitmap map ,String appName ,String appUrl ,String iconUrl){ Intent shortcut = ne

Android5.1系统WebView内存泄漏场景

问题现象 (该文章,引自零号路的私人博客,本人在浏览框架的开发过程中,用该方式,规避了内存泄露的问题.) 在Android5.1系统中,会发现App存在 WebView 泄漏情况,还比较严重.并且只是发生在 Android 5.1 系统. GC roots 如下: 每新打开一次这个WebViewActivity,就会发生就会发生一次改Webview实例无法释放,新增一个对象. 上图中的两个 AppSearchWebView实例,就是由于打开了两次导致. 问题分析 出现了这个问题分析起来还是比较简

【腾讯Bugly干货分享】Android UI:机智的远程动态更新策略

Android UI:机智的远程动态更新策略 作者:王金波    腾讯Bugly特约撰稿人 1问题描述 做过Android开发的人都遇到过这样的问题:随着需求的变化,某些入口界面通常会出现 UI的增加.减少.内容变化.以及跳转界面发生变化等问题.每次发生变化都要手动修改代码,而入口界面通常具有未读信息提醒这样的"小红点"逻辑:一旦UI变化,"小红点"逻辑也要重新计算.如果不同的RD来维护这些代码,耦合性非常高,出错概率也很大.本文以自选股的个人页卡为例(界面如下图所

Android动态方式破解apk终极篇(加固apk破解方式)

一.前言 今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为: 第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件 现在要说的就是最后一篇了,如何应对Android中一些加固apk安全防护,在之前的两篇破解文章中,我们可以看到一个是针对于Java层的破解,一个是针对于native层的破解,还没有涉及到apk的加固,那么今天就要来介绍一下如何应对现在市场中一些加固的apk的破解之道,现在市场中加固apk的方式一般就是两种:一种是对源apk整体做一

安卓APP加载HTML5页面解决方案总结

由于H5页面在移动端的兼容性及扩展性方面体现出来的优势,又兼得APP中植入H5页面对应用的灵活性有大大的提升(如活动.游戏的更新等),APP开发不可避免的需要加载一些H5页面,但安卓客户端对网页内容的排版.整理.交互等可能会出现一些不可预料的问题.本文将对安卓端加载网页写一些比较通用,可能避免问题的统一的解决方法总结. 背景 一般对前端知识有所了解的都清楚,解析网页主要是靠页面渲染引擎和JS解析引擎,前者负责取得网页的内容(HTML.XML.图象等等).整理信息(例如加入CSS等),以及计算网页