`
dengbaoleng
  • 浏览: 1131347 次
文章分类
社区版块
存档分类
最新评论

Android:WebView带划屏手势的浏览器实现

 
阅读更多
写了简单Android环境下基于webview的浏览器,实现划屏切换页面的手势,在一个activity里webview的缓冲内切换的。并测试下调用系统拍照的功能
MVC模式(Model-View-Controller)
1.WebView的设置部分
01 private void showViews() {
02 // TODO Auto-generated method stub
03 mGestureDetector = new GestureDetector(this);//实例化手势对象
04 wv_vm.getSettings().setSupportZoom(true);//启用页面的缩放
05 wv_vm.getSettings().setBuiltInZoomControls(true);//启用页面缩放的按钮
06 wv_vm.getSettings().set<span class="wp_keywordlink_affiliate"><a href="http://www.mikel.cn/category/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/javascript" title="JavaScript" target="_blank">JavaScript</a></span>Enabled(true);//启用<span class="wp_keywordlink_affiliate"><a href="http://www.mikel.cn/category/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/javascript" title="JavaScript" target="_blank">JavaScript</a></span>支持
07 wv_vm.loadUrl("http://www.cnblogs.com/pxue/");//加载网址
08
09 wv_vm.setOnTouchListener(this);//监听触摸事件
10 wv_vm.setClickable(true);
11 wv_vm.setLongClickable(true);
12
13 mGestureDetector.setIsLongpressEnabled(true);
14
15 wv_vm.setWebViewClient(new HelloWebViewClient());//实现点击加载页面在本webview内载入
16 wv_vm.setFocusable(true);
17 wv_vm.requestFocus();
18
19 }

在WebView加载新开的页面,是重写了Android.webkit.WebViewClient

1 private class HelloWebViewClient extends WebViewClient {
2 @Override
3 public boolean shouldOverrideUrlLoading(WebView view, String url) {
4 view.loadUrl(url);
5 return true;
6 }
7 }
2.划屏手势部分
监听触摸时间传给手势对象
1 @Override
2 public boolean onTouch(View v, MotionEvent event) {
3 // TODO Auto-generated method stub
4 // Toast.makeText(this, "onTouch", Toast.LENGTH_SHORT).show();
5 return mGestureDetector.onTouchEvent(event);
6 }

重写了划动事件

01 @Override
02 public boolean onFling(MotionEvent e1, MotionEvent e2, float <span class="wp_keywordlink_affiliate"><a href="http://www.mikel.cn/tag/velocity/" title="Velocity" target="_blank">Velocity</a></span>X,
03 float <span class="wp_keywordlink_affiliate"><a href="http://www.mikel.cn/tag/velocity/" title="Velocity" target="_blank">Velocity</a></span>Y) {
04 // TODO Auto-generated method stub
05 if (e1.getX() - e2.getX() &gt; SWIPE_MIN_DISTANCE
06 &amp;&amp; Math.abs(<span class="wp_keywordlink_affiliate"><a href="http://www.mikel.cn/tag/velocity/" title="Velocity" target="_blank">Velocity</a></span>X) &gt; SWIPE_THRESHOLD_VELOCITY) {
07 wv_vm.goBack();
08 } else if (e2.getX() - e1.getX() &gt; SWIPE_MIN_DISTANCE
09 &amp;&amp; Math.abs(velocityX) &gt; SWIPE_THRESHOLD_VELOCITY) {
10
11 wv_vm.goForward();
12 }
13 return false;
14 }

变量、常量的声明

1 private GestureDetector mGestureDetector;
2
3 private static final int SWIPE_MIN_DISTANCE = 120;
4 private static final int SWIPE_THRESHOLD_VELOCITY = 200;

3.调用系统拍照功能部分

01 private void setListensers() {
02 // TODO Auto-generated method stub
03 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
04 startActivityForResult(intent, 1);
05
06 }
07
08 private void findViews() {
09 // TODO Auto-generated method stub
10 img_pic=(ImageView)findViewById(R.id.img_pic);
11
12 }
13
14 protected void onActivityResult(int requestCode, int resultCode, Intent data)
15 {
16 if (requestCode == 1)
17 {
18 if (resultCode == Activity.RESULT_OK)
19 {
20 // 拍照Activity保存图像数据的key是data,返回的数据类型是Bitmap对象
21 Bitmap cameraBitmap = (Bitmap) data.getExtras().get("data");
22 // 在ImageView组件中显示拍摄的照片
23 img_pic.setImageBitmap(cameraBitmap);
24 }
25 }
26 super.onActivityResult(requestCode, resultCode, data);
27 }

分享到:
评论

相关推荐

    仿照微信6的内置WebView控件

    1、在加载网页的时候,顶部有一个进度条,显示当前加载进度;...2、设置了所有的页面都在该控件中显示,不调用其他的浏览器; 3、支持手势放大缩小; 4、支持双击屏幕放大缩小; 5、按后退按钮,回到上一个网页;

    android开发资料大全

    Android实现《天女散花》效果--(带源码) 天天动听 半透明Menu效果 Android 小項目之---Iphone拖动图片特效 (附源码) 一个完整的新浪微博客户端android版OAuth认证示例 超爽的android抽屉效果 65个Android实例教程...

    《Google Android SDK开发范例大全(第3版)》.pdf

    7.19 手势触控屏幕控制 476 7.20 多点触控屏幕事件捕捉 479 7.21 电流急急棒 481 7.22 自定义动画按钮事件 486 7.23 设置录音取样频率与显示录音时间 490 7.24 exif照片信息编辑及读取 495 7.25 ...

    Google Android SDK开发范例大全(第3版) 1/5

    7.19 手势触控屏幕控制 7.20 多点触控屏幕事件捕捉 7.21 电流急急棒 7.22 自定义动画按钮事件 7.23 设置录音取样频率与显示录音时间 7.24 EXIF照片信息编辑及读取 7.25 声音音效均衡器、重低音与音场控制 7.26 在...

    Google Android SDK开发范例大全(第3版) 4/5

    7.19 手势触控屏幕控制 7.20 多点触控屏幕事件捕捉 7.21 电流急急棒 7.22 自定义动画按钮事件 7.23 设置录音取样频率与显示录音时间 7.24 EXIF照片信息编辑及读取 7.25 声音音效均衡器、重低音与音场控制 7.26 在...

    Google Android SDK开发范例大全(第3版) 3/5

    7.19 手势触控屏幕控制 7.20 多点触控屏幕事件捕捉 7.21 电流急急棒 7.22 自定义动画按钮事件 7.23 设置录音取样频率与显示录音时间 7.24 EXIF照片信息编辑及读取 7.25 声音音效均衡器、重低音与音场控制 7.26 在...

    Google Android SDK开发范例大全(第3版) 5/5

    7.19 手势触控屏幕控制 7.20 多点触控屏幕事件捕捉 7.21 电流急急棒 7.22 自定义动画按钮事件 7.23 设置录音取样频率与显示录音时间 7.24 EXIF照片信息编辑及读取 7.25 声音音效均衡器、重低音与音场控制 7.26 在...

    Google Android SDK开发范例大全(第3版)part2

     7.19 手势触控屏幕控制  7.20 多点触控屏幕事件捕捉  7.21 电流急急棒  7.22 自定义动画按钮事件  7.23 设置录音取样频率与显示录音时间  7.24 EXIF照片信息编辑及读取  7.25 声音音效均衡器、重低音...

    网页的放大与缩小

    实时展现出放大网页、缩小网页的效果,实际拿来应用时,你可以在Activity里的onCreate()当中,判断手机画面的分辨率,再在配置WebView浏览网页的画面时,设置适合的浏览器大小,又或者可以通过与屏幕手势、多点触控...

    史上最全的ios开发源码

    苹果iOS是由苹果公司开发的手持设备操作系统。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等苹果...Webview之UIWebView 离线浏览

Global site tag (gtag.js) - Google Analytics