android开发笔记之browser 获取view对象的缩略图
来源:互联网 发布:分层数据分析 编辑:程序博客网 时间:2024/06/10 07:12
在android 的浏览器(browser)中,有一个可以查看上一个,下一个网页,而这个功能的核心是网页缩略图的功能。这二天,我在看浏览器(browser)的源码时,觉得这个功能其实完全能独立出来,并且扩展到对所有的View的都可以获取缩略图。
样例效果图:
详细代码:
(1)CaptureScreeUtil.java
package com.example.testcapturescreen;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.Log;import android.view.View;class CaptureScreeUtil{private static final String TAG = "TestCaptureScreen";public static Bitmap capture(int width,int height,View view) {// TODO Auto-generated method stubLog.i(TAG,"capture");Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.RGB_565);bitmap.eraseColor(Color.WHITE);Canvas canvas = new Canvas(bitmap);final int left = view.getScrollX();final int top = view.getScrollY();int state = canvas.save();canvas.translate(-left, -top);float scale = width / (float) view.getWidth();canvas.scale(scale, scale, left, top);view.draw(canvas);canvas.restoreToCount(state); // manually anti-alias the edges for the tilt Paint sAlphaPaint = new Paint(); //sAlphaPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR)); sAlphaPaint.setColor(Color.TRANSPARENT);canvas.drawRect(0, 0, 1, height, sAlphaPaint);canvas.drawRect(width - 1, 0, width,height, sAlphaPaint);canvas.drawRect(0, 0, width, 1, sAlphaPaint);canvas.drawRect(0, height - 1, width,height, sAlphaPaint);canvas.setBitmap(null);return bitmap; }}
(2)MainActivity.java
package com.example.testcapturescreen;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebView;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;import android.app.Activity;import android.graphics.Bitmap;public class MainActivity extends Activity {private TextView myTextView = null;private WebView myWebView = null;private ImageView myImageView = null;private ImageView myImageView_2 = null;private RelativeLayout rl = null;private Bitmap mCapture = null; private int mCaptureWidth = 150; private int mCaptureHeight = 150; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); }private void init() {// TODO Auto-generated method stubmyImageView = (ImageView)findViewById(R.id.myImageView);myImageView_2 = (ImageView)findViewById(R.id.myImageView_2);rl = (RelativeLayout)findViewById(R.id.rl);myWebView = (WebView)findViewById(R.id.myWebView);myWebView.loadUrl("http://www.baidu.com"); myWebView.getSettings().setJavaScriptEnabled(true); myTextView = (TextView)findViewById(R.id.myTextView);myTextView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubmCapture = CaptureScreeUtil.capture(mCaptureWidth,mCaptureHeight,myWebView);updateUI(); }});}private void updateUI() {// TODO Auto-generated method stubmyImageView.setImageBitmap(mCapture);myImageView_2.setImageBitmap(CaptureScreeUtil.capture(mCaptureWidth,mCaptureHeight,rl));}}
(3)activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rl" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/myTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:text="点击我--测试网页的缩略图功能" /> <WebViewandroid:id="@+id/myWebView"android:layout_below="@id/myTextView"android:layout_width="match_parent" android:layout_height="150dp" /> <ImageViewandroid:id="@+id/myImageView"android:layout_below="@id/myWebView"android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageViewandroid:id="@+id/myImageView_2"android:layout_below="@id/myWebView"android:layout_toRightOf="@id/myImageView"android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
(4)androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testcapturescreen" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.testcapturescreen.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
代码下载:
http://download.csdn.net/detail/hfreeman2008/7808975
0 0
- android开发笔记之browser 获取view对象的缩略图
- android开发笔记之browser全屏功能的实现
- Android笔记之获取视频、图片缩略图
- Android中获取View缩略图
- Android之获取图片缩略图
- Android开发获取相机拍照的原图(并非缩略图)
- Android开发笔记之自定义View 悬浮球的实现
- Android 获取图片之固定大小的缩略图(一)
- Android系统详解之获取图片和视频的缩略图
- Android系统详解之获取图片和视频的缩略图
- android 图片操作之获取图片或视频的缩略图
- Android系统详解之获取图片和视频的缩略图
- Android系统详解之获取图片和视频的缩略图
- Android系统详解之获取图片和视频的缩略图
- Android之如何获取视频或者图片的缩略图
- Android系统详解之获取图片和视频的缩略图
- Android系统详解之获取图片和视频的缩略图
- Android 获取文件的缩略图
- 自定义对话框样式
- Jobdu 题目1154:Jungle Roads
- 算法竞赛入门经典完整版 7.1.3 分数拆分
- BestCoder Round #4(Miaomiao's Geometry-贪心)
- poj3517 And Then There Was One(约瑟夫环)
- android开发笔记之browser 获取view对象的缩略图
- jquery实现输入框增加分隔符 jquery.formatInput
- HDU-#2037 今年暑假不AC(贪心)
- PHP上传文件
- Java之GUI编程
- 二叉树的性质
- SQL Server2005 异常处理机制(Begin try Begin Catch)
- UVA 1399 - Puzzle(AC自动机+DP)
- from makefile which i did not make it as a file