android堆叠效果相册_android 图片叠加效果——两种方法
效果图:
第一种:
第二种:
第一种是通过canvas画出来的效果: public voidfirst(View v) {
// 防止出现Immutable bitmap passed to Canvas constructor错误Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),
R.drawable.apple).copy(Bitmap.Config.ARGB_8888, true);
Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.go)).getBitmap();
Bitmap newBitmap = null;
newBitmap = Bitmap.createBitmap(bitmap1);
Canvas canvas = newCanvas(newBitmap);
Paint paint = newPaint();
intw = bitmap1.getWidth();
inth = bitmap1.getHeight();
intw_2 = bitmap2.getWidth();
inth_2 = bitmap2.getHeight();
paint.setColor(Color.GRAY);
paint.setAlpha(125);
canvas.drawRect(0, 0, bitmap1.getWidth(), bitmap1.getHeight(), paint);
paint = newPaint();
canvas.drawBitmap(bitmap2, Math.abs(w - w_2) / 2,
Math.abs(h - h_2) / 2, paint);
canvas.save(Canvas.ALL_SAVE_FLAG);
// 存储新合成的图片canvas.restore();
image.setImageBitmap(newBitmap);
}
Canvas canvas = newCanvas(newBitmap); 当以newBitmap创建Canvas时,所以操作都已经在该图上实现了。
该例子可以想做是播放器开始播放的效果,计算好中间位置,先覆盖一层透明灰色的正方形,然后在中间画上自己播放的按钮。
第二种是使用系统的LayerDrawable类,该类主要用来控制多个图片的结合:
public voidsecond(View v) {
Bitmap bitmap1 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.apple)).getBitmap();
Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.go)).getBitmap();
Drawable[] array = newDrawable[2];
array[0] = newBitmapDrawable(bitmap1);
array[1] = newBitmapDrawable(bitmap2);
LayerDrawable la = newLayerDrawable(array);
// 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottomla.setLayerInset(0, 0, 0, 0, 0);
la.setLayerInset(1, 20, 20, 20, 20);
image.setImageDrawable(la);
}
关联数组array,控制每一层的位置
注意:上面防止出现Immutable bitmap passed to Canvas constructor错误
原因是如果不用copy的方法,直接引用会对资源文件进行修改,而android是不允许在代码里修改res文件里的图片
我也不知道为什么花费一个小时测试代码和写这篇文章,或许是为了以后资料的查看,或许是为了验证自己心中的那个效果,或许是心态突然变得平淡的缘故,就如我现在在听着four season in one day这个心情。
本文为原创,如需转载,请注明作者和出处,谢谢!
android堆叠效果相册_android 图片叠加效果——两种方法相关推荐
- android camera工程师,Android从Camera中获取图片的两种方法
方法一: 此方法会由Camera直接产生照片回传给应用程序,但是返回的是压缩图片,显示不清晰 /** 启动Camera */ private void intentCamera(){ try { ...
- 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )
文章目录 一.报错信息 二.解决方案 ( Android Studio 配置外部 so 动态库两种方法 ) 1.jniLibs 目录存放 2.libs 目录存放 一.报错信息 外部引用 so 动态库 ...
- 将uni-app打包的H5放在 Android程序中在 webview 显示的两种方法
将uni-app打包的H5放在 Android程序中在 webview 显示的两种方法 前言 Hash History 完事 前言 之前有个项目要同时做小程序和APP,本着节省时间的想法,研究了下un ...
- python 学习系列(3) 读取并显示图片的两种方法
python 读取并显示图片的两种方法 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 mat ...
- 浏览器访问云服务器上图片的两种方法
浏览器访问云服务器上图片的两种方法 1. Tomcat方式 打开tomcat的conf目录下配置文件server.xml 添加以下内容: <Context docBase="/home ...
- word涂改涂掉图片_怎么在word中修改图片的两种方法
有时我们插入的图片只有一部分是我们想要的,那就需要我们将这一部分裁剪出来,word本身就可以方便快捷的对图片进行裁剪,那么下面就由学习啦小编给大家分享下在word中修改图片的技巧,希望能帮助到您. 在 ...
- AE 将地图导出为图片的两种方法
在ArcGIS的开发中,我们经常需要将当前地图打印(或是转出)到图片文件中.将Map或Layout中的图象转出有两种方法,一种为通过IActiveView的OutPut函数,另外一种是通过IExpor ...
- jquery生成二维码怎么添加图片(两种方法)
github项目地址: https://github.com/fengliting/erweima 注意:这里实现的是第一个方法 自动生成二维码里面添加图片,有两种方法,一种是使用jquery原生的二 ...
- ArcGIS Engine开发系列:将地图导出为图片的两种方法
转自:http://blog.sina.com.cn/s/blog_4c5f70df0100a0ti.html 在ArcGIS的开发中,我们经常需要将当前地图打印(或是转出)到图片文件中.将Map或L ...
最新文章
- React篇-报错信息:warning: Can't call setState (or forceUpdate) on an unmounted component.
- 求积问题[体会Python至简之道]
- leetcode48. 旋转图像
- hbase 学习(十三)集群间备份原理
- [Unity][FlowCanvas] FlowScript 搜索功能不可用的解决办法:更新 UnityEditor 的版本
- HDU ACM 1224 Free DIY Tour (SPFA)
- 中怎么提取时间中的月份_怎么提取图片中的文字?花上1分钟学会,轻松提取,按时下班...
- 联想Z5 Pro划时代旗舰发布,屏占比95.06%售价1998元起
- vue-cli工具搭建vue-webpack项目
- Error occurred during initialization of VM Could not reserve enough space for object heap
- 产品读书《大数据时代:生活、工作与思维的大变革》
- centos7安装nexus3
- 结构梁配筋最牛插件_多高层钢筋混凝土结构最困惑的29个问题及方法解析全汇总...
- 如何在springboot中返回jsp页面
- CTF Broadcast
- 红队web打点信息收集
- gym101908 F. Music Festival(状压dp)
- Swift 中的热重载
- 用外部html圆形里装数字,如何使用CSS用圆圈包围数字?
- Python 读书笔记(1)
热门文章
- 继承方式一:原型链继承
- kotlin isBlank和isEmpty的区别
- Nginx部署vue项目
- linux vtune 生成文字报告,文字报告太枯燥,教你一招,只需十分钟,一屏可视化!...
- Git 与 GitHub 、GitLab 区别(学习笔记)
- Linux中的防火墙技术(一)firewall
- 【PS-7】移动工具
- oracle not empty,oracle 删除表空间错误 ORA-01549: tablespace not empty, use INCLUDING CONTENTS option...
- iOS仿QQ空间时间显示
- 不断在创业路上寻找突破,他开店多家,没想到公司还上市了