android 图片叠加xml,Android实现图片叠加效果的两种方法

本文实例讲述了Android实现图片叠加效果的两种方法。,具体如下:

效果图:

第一种:

2025093948-0.png

第二种:

2025092954-1.png

第一种是通过canvas画出来的效果:

public void first(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 = new Canvas(newBitmap);

Paint paint = new Paint();

int w = bitmap1.getWidth();

int h = bitmap1.getHeight();

int w_2 = bitmap2.getWidth();

int h_2 = bitmap2.getHeight();

paint.setColor(Color.GRAY);

paint.setAlpha(125);

canvas.drawRect(0, 0, bitmap1.getWidth(), bitmap1.getHeight(), paint);

paint = new Paint();

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 = new Canvas(newBitmap); 当以newBitmap创建Canvas时,所以操作都已经在该图上实现了。

该例子可以想做是播放器开始播放的效果,计算好中间位置,先覆盖一层透明灰色的正方形,然后在中间画上自己播放的按钮。

第二种是使用系统的LayerDrawable类,该类主要用来控制多个图片的结合:

public void second(View v) {

Bitmap bitmap1 = ((BitmapDrawable) getResources().getDrawable(

R.drawable.apple)).getBitmap();

Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable(

R.drawable.go)).getBitmap();

Drawable[] array = new Drawable[2];

array[0] = new BitmapDrawable(bitmap1);

array[1] = new BitmapDrawable(bitmap2);

LayerDrawable la = new LayerDrawable(array);

// 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom

la.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文件里的图片

layer-list可以将多个图片按照顺序层叠起来。

语法:在drawalbe/drawable-layer.xml中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win10系列:VC++ 定时器

计时器机制俗称"心跳",表示以特定的频率持续触发特定事件和执行特定程序的机制。在开发Windows应用商店应用的过程中,可以使用定义在Windows::UI::Xaml命名空间中的DispatcherTimer类来创建计时器。DispatcherTimer类包含了如下的成员&#xf…

dbms系统 rdbms_DBMS与传统文件系统之间的区别

dbms系统 rdbmsIntroduction 介绍 DBMS and Traditional file system have some advantages, disadvantages, applications, functions, features, components and uses. So, in this article, we will discuss these differences, advantages, disadvantages and many other …

android 百度地图api密钥,Android百度地图开发获取秘钥之SHA1

最近在做一个关于百度地图的开发。不过在正式开发之前还必须要在百度地图API官网里先申请秘钥,而在申请秘钥的过程中,就需要获取一个所谓的SHA1值。如上所示,但是由于不是正式开发,所以以上的发布版和开发版的SHA1可以先填写相同。…

华为荣耀七能升级鸿蒙系统吗,华为鸿蒙系统来了,你知道哪些华为手机荣耀手机可以升级吗?...

从鸿蒙系统第一次开始登场,到现在慢慢有许多鸿蒙系统设备出现,手机市场的格局似乎又要升级变化了。科技树儿了解到,在某数码博主经过和相关人员的沟通核实之后,目前暂定的是搭载华为麒麟710芯片以上的机型,无论华为或荣…

Tcl与Design Compiler (十二)——综合后处理

本文如果有错,欢迎留言更正;此外,转载请标明出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner 概述 前面也讲了一些综合后的需要进行的一些工作,这里就集中讲一下DC完成综合了,产生了…

四则运算网页版

一.设计思想: 1)写出一个菜单界面,有两个选项一个是分数,一个是整数。 2)而这两个标签后面则是转向其更详细的菜单,题目数量,有无括号,运算的项数等等详细功能,再点击这两…

分布式交换机配置备份和还原

1.备份和还原vSphere Distributed Switch配置 1.1导出 vSphere Distributed Switch 配置 可以将 vSphere Distributed Switch 和分布式端口组配置导出到某一文件。该文件保留有效的网络配置,使这些配置能够传输至其他环境。 步骤: 1) 在 vSphere Web Cli…

华为鸿蒙系统好在哪,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪

在华为开发者大会上,华为消费业务CEO 余承东,正式发布鸿蒙OS2.0,并宣布华为鸿蒙OS将全面启用全场景生态,并将于2020年12月发布手机版。余承东还表示,明年,华为的智能手机将全面升级,以支持鸿蒙操…

html5画分形图形,2.5 绘制透明图形 - HTML5 Canvas 实战

对于需要图形分层的应用,经常需要处理透明度。本节,我们将学习如何使用全局透明度设置图形的透明度。图2-5 绘制透明图形绘制步骤按照以下步骤,在一个不透明的矩形之上,绘制一个透明的圆:1. 定义2D画布上下文&#xff…

html5录音功能代码,recorder.js 基于 HTML5 实现录音功能

recorder.js 基于 HTML5 实现录音功能2020-06-23 01:49:56recorder.jsmicrophone基于HTML5的录音功能,输出格式为mp3文件。前言完全依赖H5原生API所涉及的API:WebRTC、AudioContext、Worker、Video/Audio API、Blob、URL兼容性Chrome、FF、Edge、QQ、360…

html5页面引入jquery,如何在javascript中引入jQuery?

jquery是一个用来代替JavaScript来快捷书写前端脚本语言的库,jquery可以大大的简化复杂的js代码,使开发人员专注于实现页面的效果。jquery的导入方式有两种,一种是本地导入,一种是从超链接导入。方式一:本地导入我们可…

湖南省普通招生2021高考成绩查询,湖南省2021八省联考成绩可查,附查询入口及往年分数线...

原标题:湖南省2021八省联考成绩可查,附查询入口及往年分数线湖南省2021年八省联考新高考适应性考试成绩公布,这次大家考的如何呢?此次成绩排名对于考生择校及志愿填报有一定的参考意义,小盒一时间收集整理相关消息&…

Ubuntu抛弃了Untiy转向Gnome,美化之路怎么办?不用怕咱一步一步大变身!

跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 常用软件安装系统软件卸载:http://www.cnblogs.com/dunitian/p/6670560.html 1.下载UnityGnome版本 https://wiki.ubuntu.com/UbuntuGNOME/GetUbuntuGNOME 2.打开终端 or CtrlAltT…

html木桶布局,CSS3如何实现图片木桶布局?(附代码)

本篇文章给大家通过代码示例介绍一下使用CSS3实现图片木桶布局的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。高度相同,而宽度不一样的布局,称之为木桶布局。它有几个鲜明的特点: 每行的图片…

万用表怎么测量电池容量_万用表检测光电耦合器的常用技巧

光电耦合器又称光耦合器或光耦,它属于较新型的电子产品,已经广泛应用在彩色电视机、彩色显示器、计算机、音视频等各种控制电路中。光电耦合器的构成和原理常见的光电耦合器有 4 脚直插和 6 脚两种,它们的典型实物外形和电路符号如图 3-4所示…

hanlp 训练模型_LTP 4.0!单模型完成6项自然语言处理任务

来源|哈工大SCIR语言技术平台(Language Technology Platform, LTP)是哈工大社会计算与信息检索研究中心(HIT-SCIR)历时多年研发的一整套高效、高精度的中文自然语言处理开源基础技术平台。该平台集词法分析(分词、词性…

typescript 学习

typescript将在不久的将来从前端大一统的趋势中脱颖而出成为主流编译器。学习ts对前端开发人员来说是不可或缺的。同时,也要抓紧学习es2015/6/7。ts和es6并不是对立的。而是相辅相成的。ts的竞争和打击对象实质上是babel…… 官方资料 # 官方地址: https…

计算机中央处理器cpu_中央处理器(CPU)| 计算机科学组织

计算机中央处理器cpu中央处理器(CPU) (Central Processing Unit (CPU)) The CPU is the brain of the computer system. It works as an administrator of a system. CPU是计算机系统的大脑。 它以系统管理员的身份工作。 All the operations within the system are supervised…

computed set 自定义参数_深入理解vmodel之自定义组件用法

根据上一篇《深入理解 v-model 之表单用法》基本对 v-model 有了比较深的理解&#xff0c;接下来我们看看它如何在自定义组件中使用。首先&#xff0c;我们知道下面两个用法等价的&#xff1a;<input v-model"msg" /><input :value"msg" input&qu…

AYUSH的完整形式是什么?

AYUSH&#xff1a;阿育吠陀&#xff0c;瑜伽和自然疗法&#xff0c;乌纳尼&#xff0c;悉达多和顺势疗法 (AYUSH: Ayurvedic, Yoga and Naturopathy, Unani, Siddha and Homeopathy) AYUSH is an abbreviation of Ayurvedic, Yoga and Naturopathy, Unani, Siddha, and Homeopa…