送给亲爱的她恐怖软件软件怎么删除 送给亲爱的她恐怖软件删除方法

整理一下WebView的一些常用设置,滑动监听,让跳转的页面也在WebView里显示,加载进度,获得标题等等
一,滑动监听
滑动监听的话是需要在WebView基础之上在加强一下,因为在WebView没有直接监听滑动的方法,看WebView的源码则会发现有一个
protected void onScrollChanged(int l, int t, int oldl, int oldt) ;
这个方法。是受到保护的所以我们无法直接使用,所以我们写一个加强的WebView,利用接口回调。
&ScrollWebView
package com.song.
import android.content.C
import android.util.AttributeS
import android.util.L
import android.webkit.WebV
* Title: ScrollWebView.java
* Description:
* @author Liusong
* @version V1.0
public class ScrollWebView extends WebView {
public OnScrollChangeL
public ScrollWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
public ScrollWebView(Context context, AttributeSet attrs) {
super(context, attrs);
public ScrollWebView(Context context) {
super(context);
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
float webcontent = getContentHeight() * getScale();// webview的高度
float webnow = getHeight() + getScrollY();// 当前webview的高度
Log.i(&TAG1&, &webview.getScrollY()====&&& + getScrollY());
if (Math.abs(webcontent - webnow) & 1) {
// 已经处于底端
// Log.i(&TAG1&, &已经处于底端&);
listener.onPageEnd(l, t, oldl, oldt);
} else if (getScrollY() == 0) {
// Log.i(&TAG1&, &已经处于顶端&);
listener.onPageTop(l, t, oldl, oldt);
listener.onScrollChanged(l, t, oldl, oldt);
public void setOnScrollChangeListener(OnScrollChangeListener listener) {
this.listener =
public interface OnScrollChangeListener {
public void onPageEnd(int l, int t, int oldl, int oldt);
public void onPageTop(int l, int t, int oldl, int oldt);
public void onScrollChanged(int l, int t, int oldl, int oldt);
然后,利用这个加强的WebView就可以监听了
package com.song.
import java.util.HashM
import java.util.M
import android.app.A
import android.os.B
import android.os.H
import android.os.M
import android.webkit.WebS
import com.song.webviewtest.ScrollWebView.OnScrollChangeL
public class WebViewActivity extends Activity {
private String url = &http://192.168.30.199:8080/song/test.html&;
//执行动作
public static final int SELECT_IMAGE = 0;// 打开图库
public static final int OPEN_PAGE = 1;// 跳转其他特定页面
public static final int CLOSE_OR_BACK = 2;// 关闭或
private ScrollWebView mWebV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webviw);
getIntentDatas();
initView();
private void getIntentDatas() {
// TODO Auto-generated method stub
url = getIntent().getStringExtra(&url&);
private void initView() {
mWebView = (ScrollWebView) findViewById(R.id.webview);
//或的WebView的Setting
WebSettings settings = mWebView.getSettings();
//设置支持js,看方法名字就知道啥意思
settings.setJavaScriptEnabled(true);
//mWebView.addJavascriptInterface(new JavaScriptInterface(handler), &Android&);
mWebView.setOnScrollChangeListener(new OnScrollChangeListener() {
public void onScrollChanged(int l, int t, int oldl, int oldt) {
public void onPageTop(int l, int t, int oldl, int oldt) {
//滑动到顶部
public void onPageEnd(int l, int t, int oldl, int oldt) {
//滑动到底部
//加载网页路径
mWebView.loadUrl(url);
2.让web页面一直在WebView里面显示
这需要用到setWebViewClient这个方法,在上面代码里加上这一句就可以了
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边
// Log.i(&TAG&, &url--=====&&&& + url);
view.loadUrl(url);
public void onPageStarted(WebView view, String url, Bitmap favicon) {
bar.setVisibility(View.VISIBLE);
progBar.setVisibility(View.VISIBLE);
// Log.i(&TAG&, &开始&);
public void onPageFinished(WebView view, String url) {
// Log.i(&TAG&, &结束&);
bar.setVisibility(View.GONE);
重写public boolean shouldOverrideUrlLoading(WebView view, String url) ,在里面加上view.loadUrl(url);就ok了。
3.然后是加载进度条
需要setWebViewClient和setWebChromeClient配合使用,
首先要在不布局里加上progressBar控件,具体样式自己定义把
&LinearLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical& &
&include layout=&@layout/web_top& /&
&ProgressBar
android:id=&@+id/webProgress&
style=&?android:attr/progressBarStyleHorizontal&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:maxHeight=&3dip&
android:minHeight=&3dip&
&com.appsino.bingluo.fycz.ui.web.ScrollWebView
android:id=&@+id/wv_load&
android:layout_width=&match_parent&
android:layout_height=&match_parent& /&
然后就是获得控件,
bar = (ProgressBar) findViewById(R.id.webProgress);
bar.setMax(100);
然后就是设置了,在setWebChromeClien里面有具体的方法返回页面加载进度
webview.setWebChromeClient(new WebChromeClient() {
public boolean onConsoleMessage(ConsoleMessage cm) {
public void onProgressChanged(WebView view, int newProgress) {
bar.setProgress(newProgress);
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
//tvTitle.setText(title);
onProgressChanged这个方法返回,然后在setWebViewClient里面的onPageStarted和onPageFinished控制进度条的显示于隐藏
4.获得网页标题
在webview.setWebChromeClient(new WebChromeClient() 里面的onReceivedTitle里可以得到网页标题1485人阅读
在navigationController中实现向右滑动 返回功能
系统提供的backbarbuttonitem,不用添加任何代码即可实现向右滑动后退功能,但是往往要对按钮修改样式等时,就需要自定义leftbarbuttonitem,此时向右滑动即失效.通过下面方法即可解决该问题.(本人亲自实验过)
主要是通过设置navigationController.interactivePopGestureRecognizer 此手势的一些属性,此手势大家可以通过sdk查看说明,这里不细说
1.&self.navigationController.interactivePopGestureRecognizer.enabled = YES |&NO; & & &手势有效与否
2.&self.navigationController.interactivePopGestureRecognizer.delegate = & & & & & & & 手势的代理,一般会设置为self
1中的属性,再viewcontroller中默认的设置为YES,即手势有效.按照2中的属性设置后,当前的viewcontroller即可以实现该向右滑动后退功能,但是当回到navigationController的rootView中再次做出向右滑动时,程序会有问题(再次push子controller时,程序卡在当前界面无法跳转).有效解决方案如下:
说明:有两个controllerA,B
navigationController的rootview设置为A,在A中点击按钮后push B.在A的&-(void)viewDidAppear:(BOOL)animated方法中加入self.navigationController.interactivePopGestureRecognizer.enabled = NO;代码如下:
- (void)viewDidAppear:(BOOL)animated
& & if ([[[UIDevice currentDevice] systemVersion] floatValue] &= 7.0) {
& & & & self.navigationController.interactivePopGestureRecognizer.enabled = NO; & &//让rootView禁止滑动
然后再B中的- (void)viewDidLoad方法中加入
- (void)viewDidLoad
& & // 配置返回按钮
& & UIBarButtonItem * backItem = [self barButtonForImageNames:@[@&icon-返回&, @&&, @&&] action:@selector(popBack)];
& & backItem.title = @&&;
& & if ([[[UIDevice currentDevice] systemVersion] floatValue] &= 7.0) {
& & & & self.navigationController.interactivePopGestureRecognizer.enabled = YES;
& & & & self.navigationController.interactivePopGestureRecognizer.delegate =
& & self.navigationItem.leftBarButtonItem = backI
& &&if&([[[UIDevice&currentDevice]&systemVersion]&floatValue]
&&=&7.0) {
& & & &&self.navigationController.interactivePopGestureRecognizer.delegate&=&&
这样即可以保证再A中向右滑动后再次pushB时不会卡在A界面.
再项目中大家一般会创建风格统一的界面,一般都会创建一个基础viewcontroller,再此viewcontroller扩展一个配置leftbarbutton的方法,在该方法中加入B的viewDidLoad中的代码,这样在创建leftbarbutton的同时,直接加了返回的操作(不用每个viewController中都加入这样一段代码).然后只在navigationController的rootView中加入A的(void)viewDidAppear:(BOOL)animated方法即可.
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:18201次
排名:千里之外
原创:14篇
评论:10条
(6)(1)(1)(1)(1)(4)(3)(2)(3)}

我要回帖

更多关于 送给亲爱的她吓人截图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信