项目需求 :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。

jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容

InputStream inputStream = context.getResources().openRawResource(R.raw.test);

Document document = Jsoup.parse(inputStream, "UTF-8", "");

Element element = document.getElementById("signature");

element.append("");

String html = document.html();

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

html()返回的是一个html字符串。

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

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

android签名图片不显示,android手写签名遇见bitmap黑屏和本地html插入签名图片相关推荐

  1. 电脑无法显示计算机,解决方案:如果无法打开计算机且屏幕不显示,该怎么办?台式电脑开机黑屏修复技巧...

    如果无法打开计算机且屏幕不显示,该怎么办?台式电脑启动黑屏修复技巧? 计算机是当今常用的电器.无论是在玩游戏还是在工作,如果无法打开计算机,人们都会感到非常焦虑.除了将计算机送至维修店外,还有一些故障 ...

  2. URP使用多相机显示UI 导致IOS 版本15.4 黑屏原因

    Unity 2021.3.16f1URP使用多相机显示UI 导致Iphone 12 UGUI 黑屏原因 打包IOS 后 Iphone x 版本 IOS 15.6 能正常显示 Iphone 12 IOS ...

  3. Android App实战项目之实现手写签名APP功能(附源码,简单易懂 可直接实用)

    运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.跟踪滑动轨迹实现手写签名 手写签名的原理是把手机屏幕当作画板,把用户手指当作画笔,手指在屏幕上划来划去,屏幕就会显示手指的移动轨迹,就像画笔在 ...

  4. Android TensorFlow Lite 深度学习识别手写数字mnist demo

    一. TensorFlow Lite TensorFlow Lite介绍.jpeg TensorFlow Lite特性.jpeg TensorFlow Lite使用.jpeg TensorFlow L ...

  5. android 怎么播放gif图片不显示,android 播放gif动态图片

    android不推荐使用gif图片,一般都是png的,对于gif的图片解析比较消耗资源,但是对于一些动态gif图片的播放,如果比较小的话还是可以的,要是大的话,建议还是把gif图片转换成一帧一帧的pn ...

  6. android 代码添加图片不显示,Android开发 从代码里设置Drawable图片不显示的问题

    问题描述 我们从代码里获得Drawable在设置给View时会发现,图片不显示的问题.比如如下代码: Drawable drawable = getResources().getDrawable(R. ...

  7. android图片解码显示,android 图片解码显示流程

    问题来源 android 可以在 gallery 里面显示内部存储的图片,支持 jpeg,png,gif,bmp 等,甚至文件类型和图片后缀名不一致,只要是图片文件就能显示,然后 git 只会显示第一 ...

  8. android程序怎么导入图片不显示,android – ImageViewZoom中不显示图像

    我想在 ImagePagerActivity中使用 ImageViewZoom和 Universal Image Loader. 那么,我做了什么: >我将imageviewtouch.jar添 ...

  9. goodnote笔记同步 Android,GoodNotes 5 for Mac(智能手写笔记软件) +iCloud同步

    原标题:GoodNotes 5 for Mac(智能手写笔记软件) +iCloud同步 GoodNotes Mac版是 Mac 平台上的一款非常好用和实用的笔记软件.如果你在生活中有比较多的场景是需要 ...

最新文章

  1. 能量平衡_500kA 铝电解槽的能量平衡分析
  2. 现代软件工程 第一章 概论 第9题——邓琨
  3. LINUX :标准c库
  4. 订单最小量限制的增强
  5. 【分享-快速仿站】无敌超强仿站小工具一键下载
  6. Android继承AppCompatActivity实现全屏设置
  7. MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1
  8. ASP.NET Core真实管道详解[1]:中间件是个什么东西?
  9. mysan用的什么树mysql_Mysql储存引擎MyISAM和InnoDB中B+树索引的区别
  10. notepad 打开php乱码,notepad++打开dll是乱码
  11. 硬件知识:视频分配器、画面分割器、矩阵、延长器相关知识介绍
  12. 论文阅读:Enhanced Pix2pix Dehazing Network
  13. v-charts组件化示例及动态传参
  14. [Luogu P3975] [TJOI2015]弦论
  15. 长时间戴耳机对耳朵的伤害多大?这几点一定要牢记
  16. cocos2d-x 禁用触摸
  17. java的mvc模式是什么_什么是mvc模式
  18. Redis之sql缓存
  19. Visual C++ 2010 第8章 深入理解类
  20. camera基础知识(1)

热门文章

  1. 标量与向量的链式法则
  2. Java学习总结:飘逸的字符串
  3. 这三年失业的人,现在怎么样了?
  4. L63.linux命令每日一练 -- 第九章 Linux进程管理命令 -- runlevel、init和service
  5. hadoop-08-关闭THP服务
  6. python-爬取古诗文网古诗
  7. 体验了杭州的最多跑一次,这是IT的胜利
  8. Angular HttpClient responseType和observe的坑人行为
  9. RingCentral(厦门铃盛)一面凉经
  10. ThinkPadX201在Ubuntu下安装GOBI2000 3G无线网卡驱动