基于android 实现截取 内容超过屏幕大小的长图

任何事都要去试试,只停留在想象的层面,那也等于waste of time,不要想当然

先看需求:

当内容已经超出了手机可显示的范围时,要截取这些所有的内容,从而生成所谓的”长截图”.

没什么难点,利用了webview的特点,和scrollview 的view的绘制,生成bitmap。

主要代码:

//这是scrollview的

public static Bitmap getBitmapByView(ScrollView scrollView) {
        int h = 0;
        Bitmap bitmap = null;

        for (int i = 0; i < scrollView.getChildCount(); i++) {
            h += scrollView.getChildAt(i).getHeight();
            scrollView.getChildAt(i).setBackgroundColor(
                    Color.parseColor("#ffffff"));
        }

        bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,
                Bitmap.Config.RGB_565);
        final Canvas canvas = new Canvas(bitmap);
        scrollView.draw(canvas);
        return bitmap;
    }

/**
     * mScrollView
     *
     * @param context
     * @param scrollView
     */
    public static void scrollviewContent2Png(Context context,
            ScrollView scrollView) {
        Bitmap bmp = null;
        bmp = getBitmapByView(scrollView);
        saveBitmapToCamera(context, bmp, null);
    }
//这是webview的,利用了webview的api

private static Bitmap captureWebView(WebView webView) {
        Picture snapShot = webView.capturePicture();
        Bitmap bmp = Bitmap.createBitmap(snapShot.getWidth(),
                snapShot.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bmp);
        snapShot.draw(canvas);
        return bmp;
    }

简单吧?….

代码粗略,只实现了功能部分,在图片生成的时候,未使用线程,如果还有其他比较好的方案,可以相互交流下:

具体demo下载

http://download.csdn.net/detail/jarlen/8910051

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 21:27:22

基于android 实现截取 内容超过屏幕大小的长图的相关文章

Android给scrollView截图超过屏幕大小形成长图

很多的时候,我们想要分享一个界面的所有内容,可是内容太多,超过了屏幕的大小,简单的截屏已经满足不了我们的需要,这时候我们就可以根据布局里scrollView的高度来截取图片. 代码如下: /** * 截取scrollview的屏幕 * @param scrollView * @return */ public static Bitmap getBitmapByView(ScrollView scrollView) { int h = 0; Bitmap bitmap = null; // 获取s

Android 官方提供的支持屏幕大小的全部方法(精华)

本文将告诉你如何让你的应用程序支持各种不同屏幕大小,主要通过以下几种办法: 让你的布局能充分的自适应屏幕 根据屏幕的配置来加载合适的UI布局 确保正确的布局应用在正确的设备屏幕上 提供可以根据屏幕大小自动伸缩的图片 使用 "wrap_content" 和 "match_parent" 为了确保你的布局能够自适应各种不同屏幕大小,你应该在布局的视图中使用"wrap_content"和"match_parent"来确定它的宽和高.

【转】android webview设置内容的字体大小

Enum for specifying the text size. SMALLEST is 50% SMALLER is 75% NORMAL is 100% LARGER is 150% LARGEST is 200%原文:http://www.cnblogs.com/yourancao520/archive/2012/06/14/2548900.html /**  * webview  */ WebView wv; /**  * Manages settings state for a W

Android中设置半个屏幕大小且居中的按钮布局 (layout_weight属性)

先看如下布局 : 上图中,按钮的大小为屏幕的一半,然后居中显示在布局中央,每个人心中都有自己的答案,看看我的方法吧,布局布局xml如下 : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_layout&

Android中设置半个屏幕大小且居中的button布局 (layout_weight属性)

先看例如以下布局 :  上图中.按钮的大小为屏幕的一半,然后居中显示在布局中央,每一个人心中都有自己的答案,看看我的方法吧,布局布局xml例如以下 : <? xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_

Android 获得手机屏幕大小

Android在自定义控件时,经常需要获得屏幕的宽高,每次都要写,不妨直接把他封装成工具类,直接拿来用,废话不说,直接上代码 /** * */ package com.example.customview; import android.content.Context; import android.util.DisplayMetrics; import android.view.WindowManager; /** * 获取手机屏幕大小 * @author * */ public class

如何利用Win10Edge浏览器来截取网页长图?

有时我们在工作演示时会需要截取网页上的图片,不过简单的截图可以,但如果需要截取超过屏幕大小的整个网页,你是不是就有些束手无策了.虽然拼接图片也是种方法,但毕竟还是不方便,下面好系统重装助手就教你在Win10系统中如何截取网页长图. Win10系统截取网页长图的方法 工欲善其事必先利其器,有了工具,我们就可以顺利完成网页长图的截取.这个工具就是Win10系统自带的Edge浏览器.1.打开Edge浏览器,在右上方找到并点击"添加笔记"功能键.2.在笔记功能区内,找到并点击"剪辑&

android 应用程序自适应屏幕大小(转载)

android应用自适应多分辨率的解决方法 1. 首先是建立多个layout文件夹(drawable也一样).在res目录下建立多个layout文件夹,文件夹名称为layout-800x480等.需要适应那种分辨率就写成什么.注意:         a.   较大的数字要写在前面:比如layout-854x480而不能写layout-480x854.         b.   两个数字之前是小写字母x,而不是乘号.2. 在不能的layout下调整layout 的长宽等各种设置.以适应不同的分辨率

android 应用程序自适应屏幕大小

android应用自适应多分辨率的解决方法 1. 首先是建立多个layout文件夹(drawable也一样). 在res目录下建立多个layout文件夹,文件夹名称为layout-800x480等.需要适应那种分辨率就写成什么. 注意: a.   较大的数字要写在前面:比如layout-854x480而不能写layout-480x854. b.   两个数字之前是小写字母x,而不是乘号. 2. 在不能的layout下调整layout 的长宽等各种设置.以适应不同的分辨率. 3 最后需要在Andr