Android_叠加绘图

玩转RecyclerView | 实现子视图叠加 | 3D画廊效果 | 高级动效 | Android 3D坐标系介绍 之前写的一篇文章展示了RecyclerView实现的画廊效果,适用于专辑/图片/列表浏览效果。本篇文章阐述如何基于RecyclerView实现如下图所示的3D画廊效果。以下效果的重点在于实现子视图的图层叠加,滑动过程中的3D旋转效果较为简单。(1)无3D旋转效果图片(1)带3D旋转效果图片。 阅读详情

叠加绘图

  • 在用户显示图形或图像是,使用LayerDrawable对象可以将多个绘图资源按照顺序层叠起来,最后一个绘图资源全部放在最上面,呈现出叠加视图的效果
  • 实现叠加视图,同样可以通过两种方式来实现:1.XML文件 2.应用程序代码

实现过程

  1. 建立图片显示ImageView控件,并设置各项属性

     <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/body"/>
    
  2. 新建Resource File(body1.xml),并将需要叠加的图片依次叠加

    <?xml version="1.0" encoding="utf-8"?>
    <!--层列表-->
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item><!--项目标签-->
            <!--位图-->
            <bitmap android:src="@drawable/body" android:gravity="center"/>
        </item>
    
        <item android:left="-100dp">
            <bitmap android:src="@drawable/yiya" android:gravity="center"/>
        </item>
    
    </layer-list>
    

android:left 控制位图左右偏移方向

android:Top 控制位图上下偏移方向

  1. 在java代码中,获得图片控件id,当按钮点击时进行图片的变更

     go_1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ImageView iv = findViewById(R.id.imageView);
                    iv.setImageResource(R.drawable.body1);
                }
            });
    

源码

  • Activity.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
      >
    
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/body"/>
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
            <Button
                android:id="@+id/go_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="思考"/>
            <Button
                android:id="@+id/go_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="熬夜"/>
    
    
        </LinearLayout>
    
    </LinearLayout>
    
  • body1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!--层列表-->
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <bitmap android:src="@drawable/body" android:gravity="center"/>
        </item>
    
        <item android:left="-100dp">
            <bitmap android:src="@drawable/yiya" android:gravity="center"/>
        </item>
    
    </layer-list>
    
  • body2.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!--层列表-->
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <bitmap android:src="@drawable/body" android:gravity="center"/>
        </item>
    
        <item android:left="100dp">
            <bitmap android:src="@drawable/erha" android:gravity="center"/>
        </item>
    
    </layer-list>
    
  • java

    public class LayerListActivity extends AppCompatActivity {
        Button go_1;
        Button go_2;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_layer_list);
            go_1 = findViewById(R.id.go_1);
            go_2 = findViewById(R.id.go_2);
    
            /*思考*/
            go_1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ImageView iv = findViewById(R.id.imageView);
                    iv.setImageResource(R.drawable.body1);
                }
            });
            /*熬夜*/
            go_2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ImageView iv = findViewById(R.id.imageView);
                    iv.setImageResource(R.drawable.body2);
                }
            });
        }
    }
    
  • 界面
    界面

Android16 提升绘图性能强制GPU渲染 摘要:本文分析了在低性能芯片(如Android16RK3576)上出现的悬浮图标黑框问题,通过研究开发者模式中的"停用HW叠加层"功能,发现其本质是强制使用GPU进行屏幕合成。文章详细追踪了相关代码实现路径,包括Settings应用中的HardwareOverlaysPreferenceController.java和SurfaceFlinger服务的交互过程,重点解析了通过SurfaceFlinger服务(1008指令)强制启用GPU绘图的机制,并提供了在自己的APK中实现该功能的代码 阅读详情

相关推荐

深入理解Android canvas.save()与canvas.restore()

本文还有配套的精品资源,点击获取 简介:在Android开发中, Canvas 类负责绘图操作,而 save() 和 restore() 方法用于管理绘图状态,保证绘图的可逆性和精确性。本文深入探讨了这两个方法的工作原理及其在复杂绘图中的应用,包括如何通过保存和恢复状态来处理变换,以及这些操作在实际绘图中的效率和准确性。 ...

weixin_33193177的博客 883

ArcGIS for Android 离线数据空间分析--叠加分析

上一章我们以I查询为例讲述了在ArcGIS for Android里如何进行离线数据空间查询,通过ArcGIS 10.2以上的SDK里中QueryParamters类里设置查询参数,然后到对应空间数据库里查询即可。在了解如何空间查询以后,接下来我们以叠加分析为例说下ArcGIS for Android里如何进行离线数据的空间分析。       空间分析,顾名思义就是对空间数据进行分析,所

卡小基的博客 9691

Android 拖动图片及图层叠加

Android拖动图片移动、图层叠加并保存至本地,内含效果图。

[Android]Layer Drawable

Item的结构也比较简单,比较常用的属性有android:top、android:bottom、android:left和android:right,它们分别表示Drawable相对于View的上下左右的偏移量,单位为像素。另外,我们可以通过android:drawable属性来直接引用一个已有的Drawable资源,也可以在item中自定义Drawable。Layer-list有层次的概念,下面的item会覆盖上面的item,通过合理的分层,可以实现一些特殊的叠加效果。

weixin_63357306的博客 661

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

主要介绍了Android实现图片叠加效果的两种方法,结合实例形式分析了Android实现图片叠加效果的两种操作方法与相关注意事项,需要的朋友可以参考下

AlphaFold-multimer实战:从零开始预测STAT1-STAT2蛋白复合物结构

本文详细介绍了使用AlphaFold-multimer从零开始预测STAT1-STAT2蛋白复合物结构的完整实战流程。内容涵盖环境配置、数据库准备、序列处理、参数优化及结果可信度评估,为研究者利用这一AI工具进行复合物结构预测提供了系统指南和深度解析。

weixin_29094301的博客 885

安卓xml绘图

xml在安卓中除了作为布局文件和配置文件外,还能辅助我们绘图。下面我们来看一下xml在这方面的应用。 1.Bitmap 使用Bitmap引用图片,可直接将图片转成Bitmap在程序中使用。 <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/ic_lau

u010921701的博客 390

EDA公司(一):Synopsys-- 主要 EDA 工具及其简介

Synopsys 是一家领先的电子设计自动化(EDA)软件公司,提供了一系列全面的产品和服务,旨在支持从概念设计到大规模生产的各个阶段。Synopsys 的 EDA 工具覆盖了芯片设计的各个方面,包括但不限于逻辑综合、静态时序分析、功能验证、物理实现、形式验证、测试插入、电源分析、信号完整性分析等。

MHD0815的博客 3311

自定义View基础实战--刻度圆盘、饼状体、两个图形叠加

本篇实战内容主要围绕draw、paint、path等常用API展开,为达到熟练使用目的,对一些基础常见的view效果进行实现。 实战view一:圆盘刻度 相关知识点: 使用PathDashPathEffect画圆弧上的刻度,PathMeasure计算圆弧长度; 可参考:https://hencoder.com/ui-1-1/ https://hencoder...

王温暖的博客 609

本地大模型部署实战:LM Studio与Ollama的易用性与性能深度评测

本文对两款主流本地大模型部署工具LM Studio和Ollama进行了深度评测。LM Studio凭借图形化界面和内置模型库,为新手提供了开箱即用的便捷体验,并支持OpenAI兼容API,易于生态集成。Ollama则以命令行驱动,轻量高效,凭借其原生API和Modelfile自定义能力,在自动化集成和性能方面表现突出。文章从易用性、模型生态、性能及扩展性多维度对比,帮助用户根据自身技术背景和使用场景做出最佳选择。

weixin_29039773的博客 528

从CT扫描到3D模型:手把手教你用NII文件在3D Slicer中重建脊柱(附Verse数据集实战)

本文详细介绍了如何利用NII文件在3D Slicer中从CT扫描数据重建脊柱3D模型的全流程,包括环境配置、数据获取、方向校准、结构分割和模型优化等关键步骤。通过Verse数据集实战演示,帮助医学从业者快速掌握医学图像处理技术,提升临床诊疗与教学效率。

weixin_42651281的博客 202

SurfaceView中lockCanvas返回值为null

最近在做一个安卓项目,需要使用TextureView或者SurfaceView对相机进行预览,在预览的同时又想要在屏幕上进行绘图操作。于是使用lockCanvas()获取Canvas对象,但是程序就会在运行时候报错:null reference,程序崩溃。检查一下lockCanvas返回的canvas的确是null。花了很长时间查错,终于在Android开发官网上找到了原因:http://devel

flyingzhao 7883

Zynq 双核AMP 通信

4、配置离线编译(这里不讲),配置linux的内核地址空间(0x4000_0000改为0x2000_0000),以及单核启动。CPU1设置为0x2000_0000~0x3FFF_FFFF(也可以小于0x3FFF_FFFF)如果禁用CPU1的L2 cache,在CPU1的bsp里面添加编译时候所需要的宏。3、配置工程,将vivado产生的.xsa文件复制到amp_com项目目录下。9、使用petalinux-package --boot 打包。一、vivado工程。5、编译u-boot。

y183128184的博客 1086

android绘图Paint.setXfermode()和Canvas.saveLayer()方法的作用

在android绘图开发中,Paint.setXfermode()和Canvas.saveLayer()是两个重要的方法了。很多网友都不是很明白,我也一直不明白,花了几天时间来研究了这两个方法,略有领悟,记录下来,归纳总结,也给新手一点帮助。 Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解 这篇文章给了我很大的帮助,我的很多内容也是来自于这篇文章,并把我

谁与争锋的专栏 7117

Oracle EBS R12 主 / 辅助分类帐(主 / 辅助帐套)落地

本文提供了Oracle EBS R12主/辅助分类帐实施的全套文档模板,包含主帐套(法定帐套)和辅助帐套的完整配置清单、科目映射规则模板、4类典型调整分录示例(存货跌价、折旧差异、往来重分类、外币折算)以及税会/IFRS案例分录。重点阐述了主/辅助帐套的配置要点、SLA子分类帐关键配置、科目映射规则(一对一、多对一、重分类等类型)以及调整分录的自动生成逻辑。文档可直接用于项目实施,包含总体架构图、科目映射矩阵表、会计规则集配置等交付物,并附有Excel版模板便于直接使用。适用于需要实现多准则并行记账、税务调

金牌架构师 385

Windows 下 Codex 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Windows 下 Codex 安装全记录:从零到一的保姆级图文教程,希望能对学习使用 Codex 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 方案一 2.2 方案二 3. 报错解决方案

weixin_43178406的博客 14万+

Android 高级绘图

目录 高级画布绘图...1 1.可以画什么?...2 2.从Paint中完成工作...3 使用透明度...4 Shader介绍...4 定义渐变Shader6 使用Shader TileModes7 使用MaskFilter7 使用ColorFilter8 Android包含三个ColorFilter:...8 使用PathEffect9 修改Xfermode.10 3.

jackwolf_gao的专栏 983

李航《统计学习方法》课后习题答案(第2版)

李航《统计学习方法》课后习题答案(第2版) 章节 链接 第1章 统计学习及监督学习概论 点击进入 第2章 感知机 点击进入 第3章 k近邻法 点击进入 第4章 朴素贝叶斯法 点击进入 第5章 决策树 点击进入 第6章 逻辑斯谛回归与最大熵 点击进入 第7章 支持向量机 点击进入 第8章 提升方法 点击进入 第9章 EM算法及其推广 点击进入 第10章 隐马尔可夫模型 点击进入 第11章 条件随机场 点击进入     也可进入我的个人主页查看分类专栏

weixin_43646592的博客 2万+

Paint中SumPathEffect的简单使用

SumPathEffect是pathEffect的六个子类中最后一个了,光看名字也知道它也是一种,将两种PathEffect组合使用的类,它和ComposePathEffect的区别在于,ComposePathEffect是将两个子类进行组合,让你看到的是组合后的样子,而且SumPathEffect则是将这两个子类全的效果全显示出来,然后叠加在一起。好,话不多说,直接上代和图: public cl...

我本无名的专栏 862

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android 图层绘画分析,Android绘图技巧使用详解

本文实例为大家分享了Android绘图技巧使用的具体代码,供大家参考,具体内容如下XML绘图Bitmapandroid:src="@drawable/giao"/>Shapeandroid:shape="rectangle">android:startColor="#FF5DA2FF"android:endColor="#805FBBEF"android:angle="45"/>...

weixin_29435467的博客 651

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android 自定义View 开发 入门与实践4 AvoidXfermode 刮刮卡 涂抹 canvas shapeDrawable 放大镜

第八章混合模式 AvoidXfermode API 16以上才可以使用 使用时,需要注意俩点 1.禁用硬件加速 setLayerType(LAYER_TYPE_SOFTWARE, null); 2.使用离屏绘制 //新建图层 int layerId = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG); //核心绘制代码 //还原图...

FlyPig_Vip的博客 591

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

bitmap和canvas实现图层叠加(可实现灰色遮罩)

---- bitmap和canvas画出叠加的2张照片 --- 图片1原图 ------ 图片2原图 --------- 代码实现 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bi

musk6的博客 6338

数学艺术图案画-曼陀罗(74)

图案的绘制要点是以椭圆的长短轴变化,半径变化,以及中心距的变化,再加上色彩的变化来完成图案的复杂度,图案图形的艺术性。//** pi/4 十字形 90度,pi/5 五星形 72度,pi/12 十二角 30度, pi/16 十六角 22.5度。一是图形变化:图形输出中心距L变化,加微调距离(L+40)叠加图形,以及椭圆的长短轴尺寸比例的变化,循环套叠画出图形。//**图案动画展示:图案和色彩多次叠加,每轮次八步产生8个不同色彩的图案,2圈次可展示出16个图案。我总是被色彩绚烂和美轮美奂的图案感动。

baidu_41801770的博客 202

数学艺术图案画-曼陀罗(71)

图案的绘制要点是以椭圆的长短轴变化,半径变化,以及中心距的变化,再加上色彩的变化来完成图案的复杂度,图案图形的艺术性。//** pi/4 十字形 90度,pi/5 五星形 72度,pi/12 十二角 30度, pi/16 十六角 22.5度。一是图形变化:图形输出中心距L变化,加微调距离(L+40)叠加图形,以及椭圆的长短轴尺寸比例的变化,循环套叠画出图形。//**图案动画展示:图案和色彩多次叠加,每轮次八步产生8个不同色彩的图案,2圈次可展示出16个图案。我总是被色彩绚烂和美轮美奂的图案感动。

baidu_41801770的博客 179

数学艺术图案画-曼陀罗(59)

图案的绘制要点是以椭圆的长短轴变化,半径变化,以及中心距的变化,再加上色彩的变化来完成图案的复杂度,图案图形的艺术性。//** pi/4 十字形 90度,pi/5 五星形 72度,pi/12 十二角 30度, pi/16 十六角 22.5度。//**图案动画展示:图案和色彩多次叠加,每轮次八步产生8个不同色彩的图案,2圈次可展示出16个图案。//16m 全色调色板 (A, R, G, B)//** 设置动画演示次数,圈数----

baidu_41801770的博客 180

Android PorterDuff.Mode.CLEAR 效果 简单实现

Android PorterDuff.Mode.CLEAR 效果 简单实现。

OneN的博客 1834
上一篇: Android_简单界面效果处理
下一篇: Android_选项菜单的创建
ColdKite_鸢
博客等级 码龄7年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ColdKite_鸢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值