热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kotlin28.Kotlin如何通过TransitionDrawable显示颜色渐变效果

Kotlin如何通过TransitionDrawable显示颜色渐变效果这里,我们通过TransitionDrawable显示颜色渐变效果,包括背景颜

Kotlin 如何通过 TransitionDrawable 显示颜色渐变效果

这里,我们通过 TransitionDrawable 显示颜色渐变效果,包括背景颜色的变化,以及图片与图片的渐变效果。




文章目录


  • Kotlin 如何通过 `TransitionDrawable` 显示颜色渐变效果
    • 1 导入需要渐变的图片
    • 2 activity_main.xml
    • 3 MainActivity.kt





1 导入需要渐变的图片

如果需要实现图片之间的渐变效果,我们需要两张照片,这样才能实现照片1到照片2的渐变。在路径 /res/values/ 下,我们新建一个 arrays.xml 文件:


<resources>
<array name&#61;"icons">
<item>&#64;drawable/idea1item>
<item>&#64;drawable/idea2item>
array>
resources>

这个文件包含了两个 item&#xff1a;&#64;drawable/idea1 以及 &#64;drawable/idea2&#xff0c;把它们写在一个 array 里面。这里&#xff0c;我们导入的两张图片的名字分别是 idea1.pngidea2.png&#xff0c;存放于 res/drawable/ 路径下。

请添加图片描述
请添加图片描述

从上面两张照片我们可以看到&#xff0c;我们希望通过 TransitionDrawable 呈现出灯泡的开关效果。

2 activity_main.xml

这里例子涉及到的前端由三部分组成&#xff0c;一个 TextView&#xff0c;一个 ImageView&#xff0c;以及一个 Switch&#xff0c;当我们点击了 Switch 按钮&#xff0c;图片的灯光就可以实现亮暗之间的变化&#xff0c;以及字体背景的渐变。

<TextView
android:id&#61;"&#64;&#43;id/textView2"
android:layout_width&#61;"wrap_content"
android:layout_height&#61;"wrap_content"
android:layout_marginTop&#61;"100dp"
android:text&#61;"案例2&#xff1a;灯泡颜色渐变"
android:textSize&#61;"20dp"
app:layout_constraintEnd_toEndOf&#61;"parent"
app:layout_constraintStart_toStartOf&#61;"parent"
app:layout_constraintTop_toBottomOf&#61;"&#64;&#43;id/pushButton" />

<ImageView
android:id&#61;"&#64;&#43;id/iv_light"
android:layout_width&#61;"80dp"
android:layout_height&#61;"80dp"
android:src&#61;"&#64;drawable/idea"
app:layout_constraintBottom_toBottomOf&#61;"parent"
app:layout_constraintHorizontal_bias&#61;"0.498"
app:layout_constraintLeft_toLeftOf&#61;"parent"
app:layout_constraintRight_toRightOf&#61;"parent"
app:layout_constraintTop_toBottomOf&#61;"&#64;&#43;id/textView2"
app:layout_constraintVertical_bias&#61;"0.218" />

<Switch
android:id&#61;"&#64;&#43;id/switchView"
android:layout_width&#61;"wrap_content"
android:layout_height&#61;"wrap_content"
app:layout_constraintLeft_toLeftOf&#61;"parent"
app:layout_constraintRight_toRightOf&#61;"parent"
android:layout_marginTop&#61;"20dp"
android:showText&#61;"true"
android:textOff&#61;""
android:textOn&#61;""
app:layout_constraintTop_toBottomOf&#61;"&#64;&#43;id/iv_light"
tools:ignore&#61;"UseSwitchCompatOrMaterialXml" />


3 MainActivity.kt

&#64;SuppressLint("ClickableViewAccessibility", "ResourceType")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val resources: Resources &#61; resources
val icons: TypedArray &#61; resources.obtainTypedArray(R.array.icons)
val drawable &#61; icons.getDrawable(0) // ending image
val drawableTwo &#61; icons.getDrawable(1) // starting image
val iconDrawables &#61; arrayOf(drawable,drawableTwo)
var transitionDrawableIcon &#61; TransitionDrawable(iconDrawables);
val colorDrawables &#61; arrayOf(ColorDrawable(Color.RED),ColorDrawable(Color.GREEN) )
var transitionDrawable &#61; TransitionDrawable(colorDrawables)
switchView.setOnCheckedChangeListener { buttonView, isChecked ->
iv_light.setImageDrawable(transitionDrawableIcon)
transitionDrawableIcon.reverseTransition(
2000
)
transitionDrawable.isCrossFadeEnabled &#61; false
val transitionDrawableTextView &#61; TransitionDrawable(colorDrawables)
textView2.background &#61; transitionDrawableTextView
transitionDrawableTextView.startTransition(1000)
}
}

我们先导入这两张图片&#xff0c;然后这个array作为输入给到 TransitionDrawable 函数&#xff1a;var transitionDrawableIcon &#61; TransitionDrawable(iconDrawables);。对于文字背景也是一个道理&#xff0c;我们需要把需要渐变的颜色先放到一个array里面&#xff1a;val colorDrawables &#61; arrayOf(ColorDrawable(Color.RED),ColorDrawable(Color.GREEN) )&#xff0c;然后再作为输入给到 TransitionDrawable 函数&#xff1a;var transitionDrawable &#61; TransitionDrawable(colorDrawables)。当我们点击 Switch 按钮后&#xff0c;灯泡会变亮&#xff08;实际上就是两张灯泡之间的颜色渐变&#xff09;&#xff0c;字体背景也会从红色变化到绿色。






推荐阅读
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 在探讨如何在Android的TextView中实现多彩文字与多样化字体效果时,本文提供了一种不依赖HTML技术的解决方案。通过使用SpannableString和相关的Span类,开发者可以轻松地为文本添加丰富的样式和颜色,从而提升用户体验。文章详细介绍了实现过程中的关键步骤和技术细节,帮助开发者快速掌握这一技巧。 ... [详细]
  • 作文记录:合并区间的技巧与应用
    本文详细记录了合并区间问题的解题技巧与应用场景。首先介绍了问题背景和题目描述,接着从排序最大值的角度探讨了解决思路,并提供了具体的程序代码及运行结果。此外,还探讨了其他可能的解决方案。最后,对整个解题过程进行了总结,为读者提供了全面的理解和参考。 ... [详细]
  • 提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射)
    提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射) ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在《ChartData类详解》一文中,我们将深入探讨 MPAndroidChart 中的 ChartData 类。本文将详细介绍如何设置图表颜色(Setting Colors)以及如何格式化数据值(Formatting Data Values),通过 ValueFormatter 的使用来提升图表的可读性和美观度。此外,我们还将介绍一些高级配置选项,帮助开发者更好地定制和优化图表展示效果。 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • 在本文中,我们将详细介绍如何构建一个用于自动回复消息的XML类。当微信服务器接收到用户消息时,该类将生成相应的自动回复消息。以下是具体的代码实现:```phpclass We_Xml { // 代码内容}```通过这个类,开发者可以轻松地处理各种消息类型,并实现高效的自动回复功能。我们将深入探讨类的各个方法和属性,帮助读者更好地理解和应用这一技术。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
author-avatar
香港冫耐思得
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有