Kotlin使用TransitionDrawable实现颜色渐变效果流程讲解
作者:破浪会有时 发布时间:2023-03-28 06:54:08
1 导入需要渐变的图片
如果需要实现图片之间的渐变效果,我们需要两张照片,这样才能实现照片1到照片2的渐变。在路径 /res/values/
下,我们新建一个 arrays.xml
文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="icons">
<item>@drawable/idea1</item>
<item>@drawable/idea2</item>
</array>
</resources>
这个文件包含了两个 item:@drawable/idea1
以及 @drawable/idea2
,把它们写在一个 array 里面。这里,我们导入的两张图片的名字分别是 idea1.png
和 idea2.png
,存放于 res/drawable/
路径下。
从上面两张照片我们可以看到,我们希望通过 TransitionDrawable
呈现出灯泡的开关效果。
2 activity_main.xml
这里例子涉及到的前端由三部分组成,一个 TextView,一个 ImageView,以及一个 Switch,当我们点击了 Switch 按钮,图片的灯光就可以实现亮暗之间的变化,以及字体背景的渐变。
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:text="案例2:灯泡颜色渐变"
android:textSize="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pushButton" />
<ImageView
android:id="@+id/iv_light"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/idea"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2"
app:layout_constraintVertical_bias="0.218" />
<Switch
android:id="@+id/switchView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginTop="20dp"
android:showText="true"
android:textOff="关"
android:textOn="开"
app:layout_constraintTop_toBottomOf="@+id/iv_light"
tools:ignore="UseSwitchCompatOrMaterialXml" />
3 MainActivity.kt
@SuppressLint("ClickableViewAccessibility", "ResourceType")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val resources: Resources = resources
val icons: TypedArray = resources.obtainTypedArray(R.array.icons)
val drawable = icons.getDrawable(0) // ending image
val drawableTwo = icons.getDrawable(1) // starting image
val iconDrawables = arrayOf(drawable,drawableTwo)
var transitionDrawableIcon = TransitionDrawable(iconDrawables);
val colorDrawables = arrayOf(ColorDrawable(Color.RED),ColorDrawable(Color.GREEN) )
var transitionDrawable = TransitionDrawable(colorDrawables)
switchView.setOnCheckedChangeListener { buttonView, isChecked ->
iv_light.setImageDrawable(transitionDrawableIcon)
transitionDrawableIcon.reverseTransition(
2000
)
transitionDrawable.isCrossFadeEnabled = false
val transitionDrawableTextView = TransitionDrawable(colorDrawables)
textView2.background = transitionDrawableTextView
transitionDrawableTextView.startTransition(1000)
}
}
我们先导入这两张图片,然后这个array作为输入给到 TransitionDrawable
函数:var transitionDrawableIcon = TransitionDrawable(iconDrawables);
。对于文字背景也是一个道理,我们需要把需要渐变的颜色先放到一个array里面:val colorDrawables = arrayOf(ColorDrawable(Color.RED),ColorDrawable(Color.GREEN) )
,然后再作为输入给到 TransitionDrawable
函数:var transitionDrawable = TransitionDrawable(colorDrawables)
。当我们点击 Switch 按钮后,灯泡会变亮(实际上就是两张灯泡之间的颜色渐变),字体背景也会从红色变化到绿色。
来源:https://blog.csdn.net/zyctimes/article/details/128977276
猜你喜欢
- public class ReflexTest { public static void main(St
- 1、Service的种类按运行地点分类:类别区别 优点缺点 应用本地服务(Local)该服务依附在主进程上,
- 本文实例为大家分享了C#实现简易点餐功能的具体代码,供大家参考,具体内容如下图示效果实现过程1.设计界面2.设计控件及其属性3.实现点击事件
- 我们开发WinFrom程序,很多时候都希望程序只有一个实例在运行,避免运行多个同样的程序,一是没有意义,二是容易出错。为了更便于使用,笔者整
- 本文主要介绍了spring-boot-maven-plugin报红解决方案,亲测有效,具体如下:<?xml version="
- 节点折叠 this.treeList1.CollapseAll(); 一、简介二、属性列表1、OptionsSelection:
- 创建WebService项目首先安装下.NET Framework4.6.2-4.7.1开发工具。然后就是新建 ASP.NET Web应用程
- 本文实例为大家分享了java通过PDF模板填写PDF表单的具体代码,包括图片,供大家参考,具体内容如下需要用到的java包: it
- 本文实例为大家分享了Unity3D实现旋钮控制灯光效果的具体代码,供大家参考,具体内容如下前言实际上使用的是非常简单的方式,通过开启以及关闭
- public static IPAddress GetHostIP(){ &nbs
- 定义JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动
- 前言前面小空带大家了解了TextView的属性,实践了一些自定义粗细,阴影效果,链接形文字。但这还仅仅局限在用她本身的能力来实现的,那么她还
- 一般情况下,我们大部分人都是在XML文件直接写布局,可是有些时候需要用代码动态添加布局,比如我昨天做一个viewpager的页数
- Java:对象创建和初始化过程1.Java中的数据类型 Java中有3个数据类型:基本数据类型(在Jav
- 整理文档,搜刮出一个Java实现身份证号码验证源码示例代码,稍微整理精简一下做下分享。package xxx;/** * Created b
- 前言飞行棋小游戏是学习C#以来,接触的第一个游戏项目,根据小杨老师的思路引导,自己的代码也实现了功能,经过思路的梳理,试着不借助代码自己去实
- 1、系统信息:Windows10 64位2、环境搭建参考:https://www.jb51.net/article/185086.htm3、
- 目录实现效果实现方式实现步骤Blend绘制Path绘制Path绘制直线绘制曲线改变曲线形状移除Path上的线段移除Path上的点Path添加
- 在网上看到一个进度条效果图,非常美观,如下:进行效果分解:1.渐变色,看起来颜色变化并不复杂,使用LinearGradient应该可以实现。
- 相信大家和我一样,接触java这门语言的时候就听过java位运算的鼎鼎大名,当然也仅限于听说过。日常开发过程中使用过么?使用位运算的好处是什