首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android更改画布背景颜色而不会丢失任何图纸

问题:Android 更改画布背景颜色,而不会丢失图纸

背景

在 Android 开发中,画布(Canvas)对象用于在屏幕上绘制图像。有时候,我们需要在不同的颜色背景上显示图像,同时确保图像不失真。此操作可以通过更改画布背景颜色实现。

问题

如何更改 Android 画布的背景颜色,同时确保图纸不会丢失?

答案

要更改 Android 画布的背景颜色,同时确保图纸不会丢失,请遵循以下步骤:

  1. 创建一个画布对象 Canvas
代码语言:java
复制

Canvas canvas = new Canvas();

代码语言:txt
复制
  1. 在画布上绘制图像:
代码语言:java
复制

canvas.drawBitmap(bitmap, 0, 0, null);

代码语言:txt
复制
  1. 更改画布的背景颜色:
代码语言:java
复制

canvas.drawColor(Color.BLUE);

代码语言:txt
复制

在此示例中,我们将画布背景设置为蓝色。

  1. 确保图像不失真:
代码语言:java
复制

Rect bounds = bitmap.getBoundingRect();

int width = bounds.width();

int height = bounds.height();

int x = (width - bounds.width()) / 2;

int y = (height - bounds.height()) / 2;

canvas.clipRect(x, y, x + bounds.width(), y + bounds.height());

canvas.drawBitmap(bitmap, x, y, null);

代码语言:txt
复制

通过使用 clipRect() 方法,我们确保绘制时只绘制图像的指定部分,而避免绘制画布背景。

  1. 最后,将画布添加到布局中:
代码语言:xml
复制

<Canvas

代码语言:txt
复制
   android:id="@+id/canvas"
代码语言:txt
复制
   android:layout_width="match_parent"
代码语言:txt
复制
   android:layout_height="match_parent" />
代码语言:txt
复制

以上代码示例展示了如何在 Android 画布上更改背景颜色,同时确保图像不会丢失。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

「Adobe国际认证」Adobe Photoshop,如何裁剪并拉直照片?

非破坏性裁剪不会移去任何像素。您可以稍后单击图像以查看当前裁剪边界之外的区域。 启用此选项以删除裁剪区域外部的任何像素。这些像素将丢失,并且不可用于以后的调整。...要调整画布的大小,您也可以选择“图像”>“画布大小”。 文末彩蛋教程 更改画布大小 画布大小是图像的完全可编辑区域。“画布大小”命令可让您增大或减小图像的画布大小。...增大画布的大小会在现有图像周围添加空间。减小图像的画布大小会裁剪到图像中。如果增大带有透明背景的图像的画布大小,则添加的画布是透明的。如果图像没有透明背景,则添加的画布颜色将由几个选项决定。...选择“相对”,然后输入要从图像的当前画布大小添加或减去的数量。输入一个正数将为画布添加一部分,输入一个负数将从画布中减去一部分。 3.对于“定位”,单击某个方块以指示现有图像在新画布上的位置。...4.从“画布扩展颜色”菜单中选取一个选项: “前景”:用当前的前景颜色填充新画布背景”:用当前的背景颜色填充新画布 “白色”、“黑色”或“灰色”:用这种颜色填充新画布 “其它”:使用拾色器选择新画布颜色

2.8K10

Android 性能优化】布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 )

Android 7.0 之后的优化机制 三、 自定义布局渲染优化 一、 背景设置产生的过度绘制 ---- 1....背景设置产生的过度绘制 : ① 组件背景 : 每个组件每设置一次背景 , 该组件的区域就会增加一层绘制 , 如 LinearLayout 线性布局设置背景颜色 , TextView 设置背景颜色 , 都会增加该组件区域内的过渡绘制..., 设置一张图片 , 会增加一次绘制 , 如果再给该 ImageView 组件设置背景颜色 , 那么又会增加一次绘制 , 那么该 ImageView 组件肯定过渡绘制了 ; 二、 Android 系统的渲染优化...透明组件数据传递 Android 系统做了如下自动优化操作 , 当组件的背景是透明的 , 那么 CPU 将该组件转为多维向量图片 ( 多边形和纹理组成 ) 时发现该组件是透明的 , 该组件的图像信息就不会传递给...onLayout , onMeasure 和 onDraw 方法 ; ② 7.0 系统优化后 : Android 7.0 之后调用 UI 组件的 invalidate 方法 , 组件不会回调 onLayout

4.5K30

Sketch for mac(矢量绘图UI设计软件)93 最新中文版

Sketch93改进增加了 Sketch 中更好的整体体验——从将任何画板设置为文档缩略图到改进的智能网格体验。...修复了如果在检查器的覆盖部分中启用了“仅显示相同大小的符号”选项,则检查器中的符号菜单不会展开的错误。修复了删除先前选择的组件后在画布和组件模式之间切换时会导致崩溃的错误。...修复了背景模糊出现在画布上并带有轻微灰色调的错误。修复了如果光标位于其父组上时矩形上的角半径手柄会出现的问题。修复了多个编辑器在处理复杂文档时可能影响性能的回归问题。...修复了将符号设为本地或分离符号会重置或丢失任何应用的覆盖的错误。修复了背景模糊可能在文档预览中显示黑色背景的错误。修复了当在图层上使用多个不透明填充时,被遮挡的填充在图层边缘仍然可见的错误。...修复了直接在画布上覆盖文本可能会扩大其字体大小的错误。修复了执行多选时图层列表中选定图层的图标颜色不正确的问题。修复了在组内交换 Symbol 实例不会正确更新组边界的问题。

1.5K30

Android-2D绘图

drawColor方法:设置背景颜色 【功能说明】该方法用于设置画布背景颜色,可以通过Color类中的预定义颜色来设置,也可以通过指定RGB值来设置。...该方法是设置颜色的主要方法,通过改变画布颜色,可以绘制出色彩缤纷的背景。 【基本语法】public void drawColor (int color) 其中,参数color为颜色值。...也可以直接使用系统Color类中定义的颜色。读者可以参阅Paint类中的setColor方法。 【实例演示】下面通过代码来演示如何设置画布背景颜色。...,然后设置画布背景颜色为黄色,接着使用该画笔在画布上绘制了直线和矩形。...drawPoints方法:绘制多个点 【功能说明】该方法用于在画布上绘制多个点,通过指定端点坐标数组来绘制。该方法可以绘制多个点,同时也可以指定哪些点绘制,哪些点不绘制,非常灵活。

5K20

Sketch 93发布

id=NDYyNjc%3D Sketch 93中的新功能 什么是新的 改进和错误修复 这个版本是关于生活质量的小改进,这些改进增加了 Sketch 中更好的整体体验——从将任何画板设置为文档缩略图到改进的智能网格体验...修复了如果在检查器的覆盖部分中启用了“仅显示相同大小的符号”选项,则检查器中的符号菜单不会展开的错误。 修复了删除先前选择的组件后在画布和组件模式之间切换时会导致崩溃的错误。...修复了背景模糊出现在画布上并带有轻微灰色调的错误。 修复了如果光标位于其父组上时矩形上的角半径手柄会出现的问题。 修复了多个编辑器在处理复杂文档时可能影响性能的回归问题。...修复了将符号设为本地或分离符号会重置或丢失任何应用的覆盖的错误。 修复了背景模糊可能在文档预览中显示黑色背景的错误。 修复了当在图层上使用多个不透明填充时,被遮挡的填充在图层边缘仍然可见的错误。...修复了直接在画布上覆盖文本可能会扩大其字体大小的错误。 修复了执行多选时图层列表中选定图层的图标颜色不正确的问题。 修复了在组内交换 Symbol 实例不会正确更新组边界的问题。

1.5K20

ps快捷键常用表格

3、数字键:图层不透明度变化 在图层面板中,选中图层后,直接按数字键即可修改该图层的不透明度,1即10%,以此类推,0是100% 4、空格键+F:更改工作区颜色 工作区即画布所在的地方,就是PS软件中最大的那块区域...,通过改快捷键可以更改工作区的颜色,四种不同灰度的颜色,从死黑到浅黑到灰到亮灰,任君选择。...7、Command+Shift+Option+E:盖印图层 盖印图层,简单说就是将当前所有图层(及效果)合并,且生成一个全新的图层,打个比喻来说,这是一种“无损合成图层”,并不会破坏之前的任何图层,方便我们在设计中...需要注意的是,当文档中存在背景图层时,按下此快捷键则不会选中背景图层,只会选中除它之外的所有图层。...10、D:复位颜色 PS默认的前景色和背景色为黑色、白色,当我们做了一段时间的设计后,难免会遇到颜色已经不再是黑白,而又想用到黑白的时候,这个时候,只要按下键盘快捷键D即可恢复默认状态了。

1.9K20

Photoshop软件应用项目(五)

接下来我们在滤镜菜单下找到模糊找到径向模糊 如果你的文字没有删格式化他就会报错,因为智能对象下的所有图片都是不可更改的,文字也是一样 经向模糊是一个由中心向外环形扩散的逐渐模糊的效果,比较常见的会在游戏里...,或者说是你模糊的整个范围,你移动取样点,后面的画布不会跟着移动,一般只会移动中心点。...,只有在四个方格周围环绕的点向外发散,这并不代表中心四个方格没有变化,反而除了中心点以外的所有区域都在发生变化,网格点只是一个类似参考线的形式,他给了这些点,用这些点来表达他变换后的空间形态。...多按几次就会有这样的效果 2.如何在只有颜色的地方填充颜色? 前景色白色按住 Alt 键加 Delete,是整个画布都填充了。...在背景图层上新建一层填黑色,也可以直接在背景层上填充,但我个人习惯保留背景层,因为 PS 大部分修图都是原图做背景层的。这样我们就得到了一束光。

1.1K40

Android中的各种Drawable类详解

视图View的背景就是一个Drawable对象,在视图需要进行绘制调用draw函数时,内部的一部分实现会将调用委托给背景属性mBackground这个Drawable对象的draw函数来完成背景的绘制...,当对视图调用setBackgroundXXXX方法进行背景设置时会根据不同的函数名来创建不同的Drawable派生类。...你需要为位图指定绘制到画布上的位置以及缩放到区域的方式: //这里的android.view.Gravity参考值。...android:toDegrees="90" android:drawable="@drawable/b0" android:pivotX="50%" android:pivotY...当为某个视图设置了一个StateListDrawable类型的背景时,那么当视图处理某个state时,背景就会根据特定的state不同而显示不同的背景

1.5K20

Android性能优化:过渡绘制解决方案

去除Activity自带的默认背景颜色: 查看Android源码里的Theme主题,如下: ... <!...我们只要在自己的AppTheme里面去除该背景色即可: <item...在抽屉布局弹出时,抽屉布局是不透明的,也就是说抽屉布局背后挡住的内容布局是不需要绘制的,网易云进行了绘制,导致抽屉布局所在区域的像素点绘制了多次。...在开发中,很多时候需要显示图片,在图片加载出来之前通常是需要显示一张默认图片的,很多时候会使用ImageView的background属性来设置默认背景图,imageDrawable来设置需要加载的图片...既然过渡绘制值一个像素点被绘制多次,我们只要保证图片或者背景颜色不要叠加在一起即可。正确的方式应该是尽量减少带背景的View产生重叠区域。如果重叠,使用canvas的clipRect进行裁切。

2K10

UI设计师必须知道的 iOS和Android的APP图标设计指南

iOS和Android设置中的应用程序图标 用户不需要试图理解设计师的想法。设计师确保在多种尺寸的实际设备上试用图标,并在必要时最终确定。由于像素数量的减少导致细节的损失是不可避免的。...相反,暗示应用程序的功能,使用相同的样式和颜色。对于哪个应用与图标相关,不应该有任何疑问。指南可以帮助您实现这一目标!...iOS(左侧)和Android(右侧)相同应用的图标 这并不意味着您需要绘制不同的应用程序图标; 相反,巨大的差异会降低应用识别率。有时它足以调整大小,但在某些情况下,最好进行更多更改。...我使用Sketch,但任何其他图形编辑器也可以使用。 绘制iOS应用程序图标 有许多用于创建图标的模板,但我们暂时不会使用它们。假设我们已经研究了市场,也许确定了这个想法,甚至手工制作了草图。...Android Oreo推出了具有视差和缩放效果的新应用图标格式。您可以将前景与背景分开,然后这些图层将在应用效果的设备上独立移动。因此,前景可以包括透明度。

2K20

「Adobe国际认证」Adobe Photoshop调整裁剪、旋转和画布大小

水平或垂直翻转画布沿着相应的轴翻转图像。 更改画布大小 画布大小是图像的完全可编辑区域。“画布大小”命令可让您增大或减小图像的画布大小。增大画布的大小会在现有图像周围添加空间。...减小图像的画布大小会裁剪到图像中。如果增大带有透明背景的图像的画布大小,则添加的画布是透明的。如果图像没有透明背景,则添加的画布颜色将由几个选项决定。 1.选取“图像”>“画布大小”。...输入一个正数将为画布添加一部分,输入一个负数将从画布中减去一部分。 3.对于“定位”,单击某个方块以指示现有图像在新画布上的位置。...4.从“画布扩展颜色”菜单中选取一个选项: “前景”:用当前的前景颜色填充新画布背景”:用当前的背景颜色填充新画布 “白色”、“黑色”或“灰色”:用这种颜色填充新画布 “其它”:使用拾色器选择新画布颜色...如果图像不包含背景图层,则“画布扩展颜色”菜单不可用。 5.单击“确定”。 通过增加画布的大小,制作画框 通过增加画布的大小并用颜色填充画布,您可以制作画框。

2.4K20

Android开发之自定义View(一)

1、想好需要自定义的属性,在values下创建一个attrs.xml,这里我就演示一个简单的颜色,自定义一个属性集合,命名为CustomView,有一个格式为color的属性custom_color <...Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(100, 100, 50, mPaint);// 用画笔在画布上添加一个圆.../apk/res-auto" 设置宽高为match_parent,并设置了背景色和自定颜色 <com.example.administrator.diyview.CustomView android...自定义View1.png 显示的是一个青色的背景和一个黑色的圆 5、注意: 这种方式无论怎么设置padding的值或者更改宽和高为wrap_content,执行效果都如上,原因就如开头所说,需要自己处理...MeasureSpec的变量(包含SpecMode和SpecSize),其中SpecSize指定了特定测试模式下的大小,SpecMode指定了测量的模式,分为三类: UNSPECIFIED 父容器对View无任何限制

68870

在React Native中构建启动屏

将内容模式设置为“aspect fit”,如下所示: 更改iOS启动屏幕颜色 你可能会问的下一个问题是“我如何在 React Native 中更改启动屏幕的背景颜色?”...为了在 iOS 中为启动屏幕强制使用一致的背景,滚动到背景设置位置并从下拉菜单中选择 Custom。在弹出窗口中,选择启动屏幕的期望颜色。...更改Android的启动屏幕颜色更改Android应用的启动屏幕背景颜色,请在values文件夹中创建一个名为 colors.xml 的文件,并复制下面的代码: /* app/src/main/res...同样,我们可以调整图像的大小(即 contain、cover、stretch),以更好地适应我们的屏幕,最后,我们可以根据我们的选择设置背景颜色。...对于我们的示例,我已经将图片替换为我们的自定义图片,然后将背景更改为我们的样式: /* app.json */ { "expo": { ....

23710

Adobe XD 图文安装教程 A-d-o-b-e 系列怎么下载

能在macOS、Windows10、iOS和Android使用。XD拥有向量绘图设计及网站线框图设计的功能,能创造简单的点击互动原型。...此外,您所做的任何更改都将在所有位置更新。 具有多种用途的快速画板。 无论你处理几十个还是几百个画板,你都可以在没有任何延迟的情况下平移和缩放画布。...在XD的帮助下,您可以为任何尺寸的屏幕或设备定制画板,并在多个画板之间复制,不会丢失设计元素的位置。 重新设计图层和符号。...更改符号,然后更新所有位置,或选择覆盖特定实例。您还可以在资源面板上添加颜色和字符样式,以便在任何位置应用。 强大的工具易于使用。...您在桌面上的更改将反映在您的安卓或iOS设备上。

71300

Android 样式系统 | 主题背景属性

它允许您按主题更改颜色,例如,在 深色主题 中提供一个不同的值: <!...对颜色层级的区分,会迫使您给颜色赋予语义化名称,换句话说,您应该不会在给颜色命名为 @color/white 的同时,又为深色模式提供一个深色变体,这会让人感到非常困惑。...这种方法带来的问题是它合并了颜色声明和具体的值,因此,它并没有指出颜色是可以或者能够随主题背景变化的。 @colors 的变化也会鼓励您创造更多颜色。...通过使用主题背景属性,我们可以将语义颜色的声明从提供它们的值中区分开来,而且让使用方更清楚地了解到颜色会随主题背景变化 (因为它们使用 ?attr/ 语法)。...由于主题背景可以被覆盖或者改变,因此这间接表示: 您不需要创建其他布局或样式就可以更改某些颜色——您可以在相同的布局中使用不同的主题背景。 始终使用? 在某些情况下,您或许不想按照主题背景更改颜色

1.3K20

App项目实战之路(四):UI篇

一个sketch文件中可以新建多个Page,每个Page对应一个无限的画布,可以直接在画布里绘画,但一般都会在画布里插入多个固定尺寸的Artboard,然后在Artboard里绘画。...举个例子,App很多页面的标题栏基本都一样的,标题栏的宽高、背景、控件等都一样,不同的可能就是需要更改标题。这种情况下,用Symbol就很合适了。...那么,如果需要做修改,比如更改背景颜色,那只要修改了该Symbol,所有使用了该Symbol的页面的标题栏也全部会更新。...切图时,主要是图标,需要导出1x、1.5x、2x、3x、4x五个尺寸的图片,五个尺寸主要是为了更好地适配Android适配iOS只用2x和3x两个尺寸即可。...但是,可知道,最新报告指出,2016年第二季度的Android市场占有率为86.2%,iOS为12.9%。Android市场占有率从2014年7月开始就已经超过iOS了。

1.2K30
领券