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

Android – Drawable 详解

Drawable用于定义形状,颜色,边界,渐变等,然后将其应用于Activity中的View。 这通常用于自定义显示在特定View。...用法 在不同情况下有很多可绘制的类型,设置按钮的状态行为,创建可伸缩的按钮背景和创建复合可绘制图层。...这用于创建一个复杂的形状,然后可以作为布局或视图的背景附加在屏幕上。例如,可以使用可绘制的形状来更改按钮背景的形状,边框和渐变。 一个形状只是一个属性的集合,被合并来描述一个背景。...Drawable List 状态集合 StateListDrawable是一个在XML中定义的可绘制对象,根据对象的状态,使用多个不同的图像来表示相同的图形。...LayerList可以用来绘制多个其它的drawable(形状,图像等),并将它们放置在相互之间的关系中。默认情况下,图层被放置在另一个的顶部,最后一个图层被绘制在顶部。

5.7K50

Android入门教程 | res资源目录简介与shape的绘制和使用

drawable/:位图文件(.png、.9.png、.jpg、.gif)或编译为以下可绘制对象资源子类型的 XML 文件: 位图文件、九宫格(可调整大小的位图)、状态列表、形状、动画可绘制对象、其他可绘制对象...其他 res/ 子目录中的 XML 资源文件会根据 XML 文件名定义单个资源,而 values/ 目录中的文件可描述多个资源。...例如,对于可在此目录中创建的资源,下面给出了相应的文件名约定: arrays.xml:资源数组(类型数组)。 colors.xml:颜色值。 dimens.xml:尺寸值。...一种办法是制作相应的美术素材,也就是切图。另一种办法是使用xml格式的资源文件。 本文要介绍的是shape。使用这类资源,可以完成一些比较简单的美术设计。...[1240] shape介绍 shape又称为“形状可绘制对象”。为了简便,以下都称作shape或者“shape文件”。 shape是一种在 XML 文件中定义的通用形状。

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android从零单排系列四十五】《Android中自定义View的实现方法》

    一.Android 自定义view的概念 在Android中,自定义视图(Custom View)是指开发者可以根据自己的需求和创意创建全新的用户界面组件。...添加自定义属性:通过在自定义视图类中定义自己的属性,并在XML布局文件中使用这些属性,可以方便地为自定义视图提供更多的定制选项。...引入自定义视图:在XML布局文件或代码中使用您的自定义视图,将其添加到界面中。...,例如绘制图形、文本等 } } 然后,在XML布局文件中添加自定义视图: <com.example.app.CustomView android:layout_width="match_parent...当应用程序运行时,您将看到一个显示红色矩形和蓝色文字的自定义视图。 通过在CustomView类中添加更多的绘制逻辑和交互操作,您可以根据需要创建出更复杂和丰富的自定义视图。

    54920

    掌握Android自定义View与独家优化技巧

    在Android应用开发中,自定义View是一种强大的工具,可以帮助你创建独特的用户界面元素。...什么是自定义View 自定义View是Android开发中的重要概念,允许你创建不同于标准UI组件的用户界面元素。这些自定义View可以是各种形状、颜色和交互方式,完全满足你的设计需求。...灵活性:自定义View可以满足各种复杂的设计需求,从简单的动画效果到高度定制的绘图应用。 可重用性:一旦创建自定义View,它可以在应用中多次重复使用,提高代码的可维护性和可重用性。...在XML布局文件中,可以使用以下属性启用硬件加速: android:layerType="hardware" 避免不必要的绘制 只在数据发生变化时进行绘制,可以减少CPU和GPU的负载。...在自定义View的类中,你可以创建一个Canvas和一个Bitmap,然后在Canvas上绘制内容。这样,在onDraw方法中,你只需要将Bitmap绘制到屏幕上,而不必每次都重新绘制内容。

    58520

    自定义View:手撸一个带FAB凹槽的底部导航栏

    的特性,设置底部导航栏作为FAB的参照物方便对齐停靠; FAB位移动画以及导航栏凹陷动态变化:自定义导航栏的形状,根据FAB的凹陷深度来动态绘制导航栏。...: 创建好了带导航栏的Activity后界面默认是这样子的效果: 接下来就是根据需求在小细节上修修补补了,由于只需要显示两个导航item,另外需要在导航栏的中间给大按钮预留个空位,于是在导航栏的menu... 到这一步底部导航栏跟页面的基本交互也算完成了 导航栏中间大按钮停靠 在之前已经在导航栏上留好了放置大按钮的位置,接下来就是想办法把这个按钮塞进去,并且设置按钮的中心点与导航栏的顶部居中对齐...只不过这看似挺简单的效果,设计路径和计算相关尺寸大小实践起来还是挺麻烦的,在废弃了n种方案之后决定出采用以下的一种: 如上图所示,橙色实线为底部导航栏的目标形状,canvas的绘制原点默认在左上角,整个形状的直线部分路径比较好确定...let { drawBackground(it) } } } 如上面的代码所示,重写自定义BottomNavigationView的onDraw方法来绘制凹陷效果,外部通过调用updateDistance

    52110

    绘制路径:Android 中矢量图渲染

    了解 Android 的矢量图片格式:VectorDrawable 我们讨论了如何定义组成 assets 中形状的路径。...VectorDrawable 支持许多实际绘制这些形状的方法,我们可以使用这些方法创建丰富的、灵活的、可配置主题的和可交互的资源。...例如,你可以在夜间模式(res/colors-night/colors.xml)或如果 设备支持宽色域(res/colors-widecg/colors.xml)下提供替代的颜色值。...具有重叠路径和半透明主题颜色的资源:比较着色和填充模式 请注意,你可以通过设置 android:theme 属性,在Activity/View 级别改变可绘制对象的主题,或者在代码中使用 ContextThemeWrapper...我也非常喜欢为自定义视图创建自己的状态,这些视图可以与此支持结合使用,以控制资源中的元素,例如在某个特定状态触发之前将路径设为透明。 渐变 ?

    3.3K20

    常用控件之Button详解

    前言 小伙伴们肯定都有在玩儿一些游戏,比如和平精英,在界面上展示的名字,其实就是Android中咱们上一篇介绍到的TextView控件。...:onClick属性为 XML布局中的按钮分配一个方法,而不是对Activity中对按钮实现onClickListener。...三、按钮样式设置 每个按钮都使用系统的默认按钮背景进行样式化,如果您对默认按钮样式不满意,并且希望对其进行自定义以匹配应用程序的设计,那么您可以用可绘制的状态列表替换按钮的背景图像。...状态列表可绘制是在XML中定义的可绘制资源,它根据按钮的当前状态更改其图像。一旦定义了一个可以用XML绘制的状态列表,就可以将它应用到具有 android:background属性的按钮上。...右上角的圆角半径 ) stroke:描边属性,可以定义描边的宽度,颜色,虚实线等( width描边的宽度、 color描边的颜色) 方法一:在xml布局里直接设置自定义 shape背景,如果想给按钮内部文字设置边距还可以自己设置

    1.5K10

    带你快速掌握Flutter的视图(Widgets)

    在Android中,我们通过XML编写布局; 在iOS 中,我们会用 Storyboard 文件来组织 views,并对它们设置约束,或在 view controller 中使用代码来设置约束; 在 Flutter...在Android中,我们可以通过XML创建动画或调用view.animate()。...在Android中,可以使用Canvas 与 Drawable 在屏幕上绘制出自定义形状和图片; 在 iOS 上,可以通过 CoreGraphics 来在屏幕上绘制线条和形状; 在RN中我们通常是由react-native-canvas...因此,对于Android开发人员来说,在Flutter中绘制到画布是一项非常熟悉的任务。...在Android中,可以通过继承View或已经存在的某个控件,然后覆盖其绘制方法来实现自定义View; 在iOS中,可以通过编写 UIView 的子类,或使用已经存在的 view 来重载并实现方法,以达到特定的功能

    11.6K10

    Android中的各种Drawable类详解

    Drawable在绘制调用draw函数之前必须要先指定绘制的区域,这个区域也是Canvas中要绘制的区域。...在下面的StateListDrawable类中可以设置某些状态下的可绘制对象,而你通过设置状态时就会显示在特定状态下的可绘制对象: //设置状态列表 public boolean setState(final...RotateDrawable 旋转可绘制类 这个可绘制类不支持代码建立,只支持XML文件构造。可以指定开始角度,结束角度,旋转的中心点。...最后可以通过setLevel来控制从开始到结束的角度中间的过程。下面是一个XML来设置旋转可绘制类的方法: xml version="1.0" encoding="utf-8"?...(float x, float y) 我们还可以设置在画布内某个特殊的形状下渐变 public void setShape(int shape) 系统可支持如下的形状: RECTANGLE:

    1.7K20

    SurfaceView简单理解,Android混淆,Android openGl开发详解简单图形的绘制,

    假如你需要定义哪些资源必须被保留,在 res/raw/路径下创建一个 xml 文件,例如 keep.xml。...以上就是自定义资源保持规则相关的配置,举个例子: xml version="1.0" encoding="utf-8"?...OpenGl的简单使用实例(绘制一个三角形) 在使用OpenGl之前,需要在AndroidManifest.xml中设置OpenGl的版本:这里我们使用的是OpenGl ES 2.0,所以需要添加如下说明...:绘制图形,因为需要提供很多细节的图形渲染管线,所以绘制图形前至少需要一个顶点着色器来绘制形状和一个片段着色器的颜色,形状。...,我们来写绘制图形的方法,我们在图形类(Triangle)中创建一个绘制的方法onDraw(),可以在onDraw()方法中设置绘制逻辑。

    18900

    Android 8.0 自适应图标

    原来 Android 8.0(API 级别 26)引入了自适应启动器图标,可以在不同设备模型中显示各种形状。下面看下官方酷炫动态图: ? ? 图1. 自适应图标支持各种设备之间不同的掩码。...在 Android 7.1(API级别25)及更早版本中,启动器图标大小为 48 x 48 dp。必须使用以下准则来调整图标图层的大小: 两层的尺寸必须为 108 x 108 dp。...注意: 如果您没有使用必要的图层更新启动器图标,则该图标与系统 UI 显示的其他图标看起来不一致,并且不支持视觉效果。 用 XML 创建自适应图标 我们首先创建一个 Sample 项目,如图: ?...adaptive-icon> 然后清单使用android:icon 属性以指定可绘制资源,还可以使用该android:roundIcon 属性定义图标可绘制资源。...对于动态快捷方式,请在createWithAdaptiveBitmap() 创建方法时调用该 方法。 大功告成,Android 8.0 上能自适应,以下是默认的图标。

    2.8K100

    【专家答疑】疯狂的Android

    ——如果你没有自己掌握图形、图像的绘制,想做好看的自定义控件,几乎是不可能的;反过来,如果你图形、图像绘制掌握好了,那么你可以想把控件绘制成怎样,就绘制成怎样,一切都是你自己做主的。...《疯狂android讲义》有整整一章介绍图形、图像的绘制、变换相关内容;另外第18章的《合金弹头》整个游戏界面都是基于SurfaceView的自定义控件。...后来也补充了nfc相关知识,但篇幅实在太多,如果有可能,可能会放在《疯狂Android讲义》补充篇中系统介绍。 Q:android最新版本又快出来了。技术更新真快。老师,想问一个问题。能有什么办法。...这个可参考《疯狂Android讲义》第6章;如果要做游戏,通常会采用第二种方式,这个可参考《疯狂Android讲义》的第18章的“合金弹头”游戏。...我的app现在是还用的4.0.3,有些缓存机制也用的第三方的框架,经常会出现图片预加载导致内存溢出的问题,我想问你下: 1 不知道5.0在app缓存机制方面有没有好的提升?

    63520

    《移动互联网技术》第六章 资源管理: 掌握定制控件样式、界面主题、可绘制资源程序的编写方法

    2、本单元学习要求 (1) 掌握各种资源的基本访问用法; (2) 掌握定制控件样式、界面主题、可绘制资源程序的编写方法; (3) 掌握原生资源打包方法。...难点 (1) 可绘制资源 Drawable代表了一大类资源。比如:图形、位图图像就是可绘制的资源。...下面主要介绍三种形状绘制资源:state list drawable、 shape drawable和layer list drawable。...在 drawable目录下,创建一个表示圆形按钮样式的xml文件:round_button_normal.xml。再通过shape标签来定制按钮的样式。...定制控件样式和界面主题的方法。 可绘制资源的使用。 使用assets打包资源的方式。 2、本单元课后习题 1、如何打开res/raw目录中的数据库文件?

    22910

    Carson带你学Android:常用界面布局使用教程

    前言 在 Android开发中,绘制UI时常需各种布局 今天,我将全面介绍Android开发中最常用的五大布局 含 Android Studio 2.2中新增的布局:约束布局(ConstraintLayout...布局类型 在Android中,共有2类、6种布局方式,分别是: 2. 布局介绍 具体介绍 本文主要介绍传统的5大布局,关于约束布局(ConstraintLayout)具体点击查看文章 3.... 在布局文件main.xml中控件的属性设置: <Button android:id="@+id/startButton" android:layout_width=...布局形状(Shape) 作用:设置布局的颜色、边框线 使用:通过 xml编写 = shape.xml 具体使用 android="http://schemas.android.com...、大小 <stroke android:width="1dp" android:color="#000000" /> 在布局文件main.xml中控件的属性设置:

    59120

    安卓阴影实现

    除了实践以外,没有别的办法可以识别错误。...CardView(组件自带) 优点:CardView是自带阴影的是Materail设计的组件,效率高;不占位 缺点:阴影方向颜色不可控; 注意:CardView模拟的光源在屏幕中心正上方阴影显示角度会有所差异...Shape(作为背景绘制所以会占位,它的绘制原理是一层层的由深到浅的形状作为阴影) 优点:颜色方向可控制;占位 缺点:没有模糊效果阴影不自然有点生硬(较弱的阴影不太容易看出来); 注意:占位的阴影要考虑预留出阴影的空间...自定义View 理论上我们想要的阴影效果都可以实现,但是如果脱离了系统原生属性就需要考虑的太多; 自定义阴影针对特殊的载体样式和阴影,代码实现较为复杂,绘制成本较高,非必要情况下不建议; 作者:owlling...然后这里我采取的是这篇文章的方式 https://xiaozhuanlan.com/topic/6538724091 最后的xml布局: <com.ruben.customviews.ShadowViewCard

    20310

    绘制优化

    在 Android 手机的开发者选项中,有一个『调试 GPU 过度绘制』的选项,该选项开启之后,手机显示如下,显示出来的蓝色、绿色的色块就是过度绘制信息。...这样一来,只有裁剪矩形内的界面需要绘制,自然就减少了抽屉布局的过度绘制。自定义控件时可以参照这个来优化过度绘制问题。...在可能的情况下,应该尽量直接绘制出需要的形状,而不是裁剪成相应的图形;这样性能更高,并且支持反锯齿; 例如下面这个clipPath 操作: canvas.save(); canvas.clipPath...,在高版本中的一些 widget 新特性就是这样在老版本中也能展示的。...parent 的 generateLayoutParams 函数是线程安全的; 所有构建的 View 中必须不能创建 Handler 或者是调用 Looper.myLooper;(因为是在异步线程中加载的

    92610

    不再切图!CSS实现渐变提示框(tooltips)

    太长了,有很多重复的(4个radial-gradient),非常啰嗦,有没有什么办法优化呢?...,并且内容需要转义,详细可参考这篇文章:学习了,CSS中内联SVG图片有比Base64更好的形式 还是挺不错的,代码量也不多,也比较容易理解,实时效果如下 ?...完整代码可访问 tooltips-mask-svg (codepen.io)点击预览 三、paint 绘制 再来介绍一种未来的解决方式, CSS paint 。...在 canvas 中,相对于 CSS 来说, 这类图形简直就是小儿科,只需要使用 lineTo 和 arc 两个指令就可以绘制了。...现在总结一下要点: 可以用多个容器重叠配合 clip-path 实现复杂的自适应效果 在使用 CSS 渐变绘制图形时,相同的形状充分利用平铺特性 svg 基本形状支持百分比尺寸,用作背景同样有效,可以使用多张背景来组合

    2K10

    了解 Android 的矢量图片格式:`VectorDrawable`

    这会使设计人员和开发人员之间的工作流程复杂化。我们将在以后的文章中深入讨论这个主题。 为什么不用 SVG? 如果你曾经使用矢量图像格式,你可能会遇到网络上的行业标准 SVG 格式(可缩放矢量图形)。...Android 在受限制的移动设备上运行,因此支持整个 SVG 规范并不是一个现实的目标。 然而,SVG 包含一个 路径规范,它定义了如何描述和绘制形状。使用此 API,您可以表达大多数矢量形状。...VectorDrawable 的功能 如上所述,VectorDrawable 支持 SVG 路径规范,允许您指定要绘制的一个或多个形状。它是通过 XML 文件实现的,如下所示: 创建有趣的效果(特别是在动画时),但它成本相对较高,所以你需要以不同的方式绘制形状来避免它。 路径可以修剪;这只是绘制整个路径的一个子集。你可以修剪填充的路径,但结果可能会令人惊讶!...阅读我们的下一篇文章,了解更多信息: 即将到来: 绘制路径 即将到来: 创建Android矢量资源 即将到来: 在 Android 应用中使用 vector assets 即将到来:分析 Android

    2.8K30
    领券