android手写签名遇见bitmap黑屏和本地html插入签名图片

项目需求 :Android 展示Html保单模版页面, 类似于这种界面

屏幕快照 2017-11-07 下午4.02.11.png

然后调用签名(其实就一个绘画的窗口),签上你的大名,点击确定。展示签名图片。然后把图片中签字后面的signCustName替换成签名图片。


Screenshot_20171107-160916.png
Screenshot_20171107-160940.png
Screenshot_20171107-160955.png
Screenshot_20171107-161004.png

html 展示我用的WebView,路径在res下创建raw文件。如果html放在assets目录下file///android_assets/test.html

public static final String URL = "file:///android_res/raw/test.html";

webView = (WebView) findViewById(R.id.signature_webview);

       WebSettings settings = webView.getSettings();

       //支持JavaScript
       settings.setJavaScriptEnabled(true);
       settings.setJavaScriptCanOpenWindowsAutomatically(false); //支持通过JS打开新窗口


       settings.setSupportZoom(true);//支持缩放,默认为true。是下面那个的前提。
       settings.setBuiltInZoomControls(true);//设置内置的缩放控件。若为false,则该WebView不可缩放
       settings.setDisplayZoomControls(false); //隐藏原生的缩放控件


       //用WebView组件显示普通网页时一般会出现横向滚动条,这样会导致页面查看起来非常不方便。LayoutAlgorithm是一个枚举,用来控制html的布局,总共有三种类型 没有作用
       //settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);

       settings.setUseWideViewPort(true); //将图片调整到适合webview的大小
       settings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小


       //WebView两种缓存(网页、H5)方式,此处网页不缓存
       settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
//        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
//        settings.setAllowFileAccess(true); //设置可以访问文件

//        settings.setLoadsImagesAutomatically(true); //支持自动加载图片
//        settings.setDefaultTextEncodingName("utf-8");//设置编码格式

       //支持手势缩放(如webView中需要手动输入用户名、密码等,则webview必须设置支持获取手势焦点)
       webView.requestFocusFromTouch();


       webView.loadUrl(URL);

展示完成点击签名,开始签名,签名控件是由第三方提供的(据说不便宜啊。。)。返回的是一个bitmap然后显示签名。

  private void showImgPreviewDlg(Bitmap img) {
        ImageView iv = new ImageView(context);
        iv.setBackgroundColor(Color.WHITE);
        iv.setImageBitmap(img);
        new AlertDialog.Builder(context).setView(iv).show();
    }

展示也没什么。我把bitmap保存在sdcard上

 //Bitmap bitmap = drawBg4Bitmap(bm);
        File file = new File(signatureFile, "signature.png");
        boolean exists = file.exists();
        if (exists) {
            file.delete();
        }
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        FileOutputStream fout = null;
        try {
            fout = new FileOutputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        bm.compress(Bitmap.CompressFormat.PNG, 100, fout);
        try {
            fout.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            fout.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

这个也没什么,保存完了,我就去看看吧,看看也没什么 ,能正常显示,那就点点看吧,额。。出问题,图片全都是黑的,我的签名明明白纸黑字,但是点击查看的时候却变成全黑色,蒙圈了。 这个bitmap是三方返回给我的,无法查看他是怎么实现的。控件可以完全显示。

google一下 找到问题原因

  • 因为bitmap的背景颜色是透明色,转换成png,默认值变成0,就变成了黑色。

  • 解决: 给bitmap设置背景颜色

Paint paint = new Paint();
        paint.setColor(Color.WHITE);
        Bitmap.Config config = orginBitmap.getConfig();
        Bitmap bitmap = Bitmap.createBitmap(orginBitmap.getWidth(),
                orginBitmap.getHeight(), config);
        Canvas canvas = new Canvas(bitmap);
        canvas.drawRect(0, 0, orginBitmap.getWidth(), orginBitmap.getHeight(), paint);
        canvas.drawBitmap(orginBitmap, 0, 0, paint);
        return bitmap;

运行,点击查看,问题解决。
问题解决继续写代码。
问题:怎么把签名图片放在我的htlm页面上。
由于技术池比较浅,也不知道哪些方案好,之前做网页爬虫用过jsoup。

InputStream inputStream = context.getResources().openRawResource(R.raw.test);
            Document document = Jsoup.parse(inputStream, "UTF-8", "");
            Element element = document.getElementById("signature");
            element.append("<img src='signature.png' style='width: 75pt; height: 45pt;'>");
            String html = document.html();

获取到元素,给元素添加img标签。src=相对路径。如果你的html页面和图片在一个文件夹内,像我一样,直接写名字就行。如果在上层目录 ../ 。
html()返回的是一个html字符串。

我是把html字符串保存在手机本地。然后去在加载这个路径。

目前代码就写到这里。真正的html页面还没有给我,听说我好像需要把数据填写到html中。用jsoup也能做,就是太麻烦了,假如有很多字段 我岂不是疯掉了。 看看在说吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容