Kotlin使用TransitionDrawable实现颜色渐变效果流程讲解

 更新时间:2023年02月16日 14:37:16   作者:破浪会有时  
这篇文章主要介绍了Kotlin使用TransitionDrawable实现颜色渐变效果,这里,我们通过TransitionDrawable显示颜色渐变效果,包括背景颜色的变化,以及图片与图片的渐变效果

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.pngidea2.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 按钮后,灯泡会变亮(实际上就是两张灯泡之间的颜色渐变),字体背景也会从红色变化到绿色。

到此这篇关于Kotlin使用TransitionDrawable实现颜色渐变效果流程讲解的文章就介绍到这了,更多相关Kotlin颜色渐变效果内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Kotlin编程条件控制示例详解

    Kotlin编程条件控制示例详解

    这篇文章主要为大家介绍了Kotlin编程条件控制示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Android Canva实现渐变进度条

    Android Canva实现渐变进度条

    这篇文章主要为大家介绍了Android Canva实现渐变进度条示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Android 多渠道打包详细

    Android 多渠道打包详细

    这篇文章主要介绍了Android 打包类型,主要有命令行打包、IDE 打包、编译器打包,若对此内容感兴趣的话,请继续阅读下文
    2021-09-09
  • Android源码学习之工厂方法模式应用及优势介绍

    Android源码学习之工厂方法模式应用及优势介绍

    工厂方法模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类,感兴趣的朋友可以了解下哦
    2013-01-01
  • Android实现断点多线程下载

    Android实现断点多线程下载

    这篇文章主要为大家详细介绍了Android实现断点多线程下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Android EditText被软键盘遮盖的处理方法

    Android EditText被软键盘遮盖的处理方法

    android app新增了透明栏效果,结果发现键盘弹起后会遮盖屏幕底部的EditText,没有像想象中的调整窗口大小,并滚动ScrollView,将EditText显示在键盘上方。下面小编把解决方法记录一下,特此分享到脚本之家平台,感兴趣的朋友一起看看吧
    2016-10-10
  • Android Manifest中meta-data扩展元素数据的配置与获取方式

    Android Manifest中meta-data扩展元素数据的配置与获取方式

    这篇文章主要介绍了Android Manifest中meta-data扩展元素数据的配置与获取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android混合开发教程之WebView的使用方法总结

    Android混合开发教程之WebView的使用方法总结

    WebView是一个基于webkit引擎、展现web页面的控件,下面这篇文章主要给大家介绍了关于Android混合开发教程之WebView的使用方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-05-05
  • android ListView 一些重要属性详解

    android ListView 一些重要属性详解

    android ListView 一些重要属性详解,需要的朋友可以参考一下
    2013-06-06
  • Android图片三级缓存开发

    Android图片三级缓存开发

    这篇文章主要为大家详细介绍了Android图片三级缓存开发的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论