WebView中实现js调用alert操作点按返回键后阻塞js的解决方法

Android Webview默认的alert弹出框是带有ip地址的,但是实际开发中我们一般都需要讲起进行自定义去除ip地址的显示。
但是如果你的alert点击按钮之后支行了js代码,就容易出现一下的坑。
状况描述:alert出现之后,不点击alert上的按钮,而是点击Android的返回键史得alert弹出框消失。此时如果你的wap页面在alert按钮点击之后掉用了js,那么你的js永远不会被执行。
解决方案:弹出的Dialog设置setCancable(false)属性,使其不能进行点击反悔的操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
* 处理alert弹出框
*/
public boolean onJsAlert(WebView view, String url, String message,
final JsResult result) {
MessageBoxDialog.Builder builder = new MessageBoxDialog.Builder(
WebActivity.this, 1);
builder.setMessageAndStyle(message, R.style.MessageBoxMessageStyle)
.setCancelButton("知道了", R.style.CancelButtonStyle, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
}).setCancelable(false)
.create().show();
//以上代码注意,必须设置setCancelable(false),禁止点击返回键弹框消失,防止js阻塞
return true;
}

/**
* 处理confirm弹出框
*/

public boolean onJsConfirm(WebView view, String url, String message,
final JsResult result) {

MessageBoxDialog.Builder builder = new MessageBoxDialog.Builder(
WebActivity.this, 2);
builder.setMessageAndStyle(message,
R.style.MessageBoxMessageStyle)
.setOtherButton(R.string.sure, R.style.DoneButtonStyle,
R.drawable.btn_warn_bg,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which) {

if (!WebActivity.this.isFinishing()) {
result.confirm();
dialog.dismiss();
}
}
})
.setCancelButton(R.string.cancel,
R.style.CancelButtonStyle, R.drawable.btn_done_bg,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,
int which) {
result.cancel();
dialog.dismiss();
}
}).setCancelable(false).create().show();
//以上代码注意,必须设置setCancelable(false),禁止点击返回键弹框消失,防止js阻塞
return true;
}

阅读全文

ImageView的scaleType详解

使用ImageView时经常会用到scaleType属性,如:


scaleType属性的各个值总是记不住之间的区别。今天找点时间总结了一下:
scaleType的属性值有:matrix fitXY fitStart fitCenter fitEnd center centerCrop centerInside
它们之间的区别如下:
matrix 用矩阵来绘制(从左上角起始的矩阵区域)
fitXY 把图片不按比例扩大/缩小到View的大小显示(确保图片会完整显示,并充满View)
fitStart 把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置(图片会完整显示)
fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示(图片会完整显示)
fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置(图片会完整显示)
center 按图片的原来size居中显示,当图片宽超过View的宽,则截取图片的居中部分显示,当图片宽小于View的宽,则图片居中显示
centerCrop 按比例扩大/缩小图片的size居中显示,使得图片的高等于View的高,使得图片宽等于或大于View的宽
centerInside 将图片的内容完整居中显示,使得图片按比例缩小或原来的大小(图片比View小时)使得图片宽等于或小于View的宽 (图片会完整显示)
附上两张实验的截图:
图片比ImageView大的截图](http://hi.csdn.net/attachment/201107/23/0_1311430700s5uH.gif)</div><p class=阅读全文

ViewPager实现轮播图,图片少于3张时的bug解决

带整理
思想:分两种状况,当图片少于3张和多余三张两种情况。
参考资料(http://blog.csdn.net/dyllove98/article/details/41013883)

阅读全文

Picasso图片加载缓存框架的使用

Picasso框架的简介

Android系统的图片下载和缓存类库,Picasso 是Square开源的一个用于Android系统下载和缓存图片的项目。该项目和其他一些下载图片项目的主要区别之一是:使用4.0+系统上的HTTP缓存来代替磁盘缓存。
http://square.github.io/picasso/

阅读全文

设置TextView的drawableLeft图片和文字之间的padding

待整理

1
2
//设置drawableTOP图片和文字之间的padding
tv.setCompoundDrawablePadding(DisplayUtil.dip2px(10,mContext.getResources().getDisplayMetrics().density));

阅读全文

切换Mac,快速完成开发环境配置

作为一名开发者,切换到mac如何快速完成开发环境的搭建。以下文章虽然是针对前端开发人员的,但是作为一名客户端(移动端)开发人员也是很有用的。刚切换到Mac开发环境的人员,可以拿来参考一下。

原文地址:http://aaaaaashu.gitbooks.io/mac-dev-setup/content/index.html

阅读全文

IntellJ IDEA中使用Postfix Completion快速补全代码

Postfix Completion

这是IDEA 13.1 新增的功能。详细演示和说明看这里 http://blog.jetbrains.com/idea/2014/03/postfix-completion/ 。简单来说就是你可以先输入语句的主体(例如要赋值的表达式,或者要循环的集合变量),然后输入用小数点分隔的模板名称后缀,IDE自动帮你智能展开。

阅读全文

导出AndroidStudio(IntelliJ IDEA)快捷键和设置信息

Android Studio是基于IntelliJ IDEA平台开发的Android开发环境,我们从IDEA切换到Android Studio或者从Android Studio切换到IDEA的时候想要把自己的各种配置信息都进行同步(最主要的时配置信息)是一个非常重要事情。


本人从Android Studio正式版开始就一直使用其进行开发。然而,最近想要使用IntellJ IDEA,于是进行了开发环境的切换。但是,我并没有使用Android Studio的默认快捷键,而是使用Eclipse的那一套快捷键+一些自定义快捷键。切换到IDEA后发现很多自定义的会计还需要自己再次进行自定义,这可是一个非常麻烦的事情。于是今天研究了一下如何将Android Studio的配置信息进行导出。方式如下:

阅读全文

ScrollView的scrollTo()方法在某些手机上不起作用的解决方法

scrollView的scrollTo()方法在某些手机上不起作用(例如小米上有时候就不起作用,在三星note4就ok),个人猜测是由于scrollTo()调用的时候有其他的动画在执行,导致了将其抵消了(纯属猜测,没来得及验证)。

曾苦于一时没有解决方案,未曾找到取消滑动动画的方法,后偶然发现,smoothScrollTo()方法可以打断动画,将 scrollTo()换成smoothScrollTo()方法可正常定位位置,但定位过程有动画要耗费一些时间,不是本想要的快速定位。
经尝试发现以下写法即可满足需求:

1
2
3
4
view plaincopy  //滚动到原点    
scrollView.scrollTo(0, 0);
scrollView.smoothScrollTo(0, 0);
//注意两个方法调用先后顺序不可颠倒

阅读全文

Charles抓去https协议的包数据的方法

Charles抓取https协议包的方法

http://blog.csdn.net/jiangwei0910410003/article/details/41620363

阅读全文