推广

Android 使用 RotateDrawable 实现箭头动画

iseeyu3年前 (2024-02-22)推广112

最终效果.gif

xml代码

TextView设置文字及背景色以及代码设置drawableStart、drawableEnd,Button用于设置点击事件。

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>

        <import type="com.john.test.FAndroid" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:fitsSystemWindows="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/test_text_view"
            android:layout_width="wrap_content"
            android:layout_height="100dp"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:background="@color/colorAccent"
            android:layout_gravity="center"
            android:padding="12dp"
            android:text="123123123" />

        <Button
            android:id="@+id/test_click"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="200dp"
            android:text="click" />
    </LinearLayout>
</layout>

Kotlin 代码

注意,mutate()方法非常重要,它是一个不可逆的操作,可以将drawable�实例状态独立出来。

class TestActivity : AppCompatActivity() {
    private lateinit var mBinding:ActivityTestBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        mBinding = DataBindingUtil.setContentView(this,R.layout.activity_test)
        mBinding.lifecycleOwner = this
        
        val d1 = ResourcesCompat.getDrawable(resources, R.drawable.rotate, null) as RotateDrawable
        val d2 = ResourcesCompat.getDrawable(resources, R.drawable.rotate, null) as RotateDrawable
        Log.d("lq", "is drawable the same: ${d1 == d2}")
        d1.mutate()
        mBinding.testTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(d1, null, d2, null)

        var chose = true
        mBinding.testClick.setOnClickListener {
            if (chose) {
                ObjectAnimator.ofInt(d1, "level", 0, 5000).setDuration(300).start()
                ObjectAnimator.ofInt(d2,"level",5000,10000).setDuration(300).start()
            } else {
                ObjectAnimator.ofInt(d2,"level",0,5000).setDuration(300).start()
                ObjectAnimator.ofInt(d1, "level", 5000, 10000).setDuration(300).start()
            }
            chose = !chose
        }
    }
}

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/56514.html

相关文章

我来分享密云优化公司:什么是正确的网站SEO优化思路。

我来分享密云优化公司:什么是正确的网站SEO优化思路。

网站seo优化是一项系统性工程,要想完成一个工程项目,就必须要有一个具体的,只有在正确的思路引导下,才能够让SEO优化工作有条不紊的展开。与此同时,也正是在正确思路的指引下,可以让SEO优化工作不断取得完善,进而有效提升优化工作效果。 很多时候,讨论具体的工作思路往往被人们认...

比努力更重要的是思维:九种超经典的思维法则,送给不甘平庸的你

成年人的世界,不再是喝鸡汤、喊口号的人生,绝大多数时候,比努力更重要的是,这可以说是一条富人定律。以下分享九种超经典的思维法则,送给不甘平庸的你,穷人要想成为富人,努力次之,具备这九种思维,少走弯路。 一、变革思维:改变乃至颠覆思维模式 人是会思维的动物,所以,当人在...

To B企业如何从0到1做好内容营销?

To B企业如何从0到1做好内容营销?

正在成为当前很多企业都要采用的营销方式。那什么是内容营销呢?美国内容营销协会给出了官方定义:内容营销是一种战略营销方法,通过生产发布有价值的、有关联的、持续性的内容来吸引、获取和聚集匹配度高的目标人群,最终改变或强化目标人群行为,推动商业转化,带来收益。全球B2B内容营销正...

深度|如何让你的产品思维卓有成效?

深度|如何让你的产品思维卓有成效?

编辑导语:一个正确的产品对于产品经理来说十分重要,产品思维有助于打造有效用、有利润和可持续的产品。本文作者分享了让产品思维卓有成效的具体方法逻辑,分别从五个方面进行阐述卓有成效的产品思维,一起来学习一下吧。 “如果你无法描述,...

销售的十大技巧 解决这三个问题必成交(干货)

销售的十大技巧 解决这三个问题必成交(干货)

做销售最忌讳的九个问题,切记1、忘了自己的微笑,2、争辩,3、离客户太近,过于热情,4、轻易地作出了让步,5、忽略了客户,真正的需求,6、轻易地给客户下结论,7、忽略了老客户,8、过于专业,9、轻易的承诺。刘强东对销售员工说过的金句1、一流的推销员是想不想的问题2、二流推销...

极简主义网站设计的案例。

极简主义网站设计的案例。

极简主义是一门被低估的艺术,我们都听过"少即是多"的说法,但这是一个说起来容易做起来难的原则。随着技术的进步为网站设计开辟了新的更多可能性,越来越难以抗拒添加一些花哨的装饰。 极简主义的网站设计有利于用户更快的加载时间和更好的匹配屏幕尺寸之间的兼容性。更重要的是,一个简单的UI设计与移动浏览相协调...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片