【问题标题】:Android: Animating Images?Android:动画图像?
【发布时间】:2011-02-16 00:13:27
【问题描述】:

我有一个带有几个 ImageView 的栏,每个都用作一个按钮(通过使用 OnClickListener)。现在我想要实现的是当用户按下图像时,图像周围会出现某种发光效果(就像你在 iPhone 上按下 barButton 时一样)。

这可能吗?

【问题讨论】:

    标签: android animation imageview


    【解决方案1】:

    这是可能的。实现这一点的正确方法是定义一个StateList Drawable
    statelist 为每个状态定义了一个单独的可绘制对象。

    例如,下面的 xml 定义了一个可绘制对象,如果按钮被按下则显示 blue_button_pressed 可绘制对象,而在所有其他情况下则显示 blue_button_active 可绘制对象。

    <?xml version="1.0" encoding="utf-8"?>
    <selector
     xmlns:android="http://schemas.android.com/apk/res/android">
    
     <item
      android:state_pressed="true"
      android:drawable="@drawable/blue_button_pressed"/>
    
     <item
      android:drawable="@drawable/blue_button_active"/>
    
    </selector>
    

    您可以像任何其他图像一样将此文件放在可绘制文件夹中,并像任何其他可绘制图像一样在布局文件中引用它。

    【讨论】:

    • 好的,但这意味着我必须手动创建 2 个图像。那里没有内置动画吗?
    • 没有内置动画。据我所知,上述建议是实现这一点的最佳方法
    【解决方案2】:

    尽管出于某种原因,大多数视图实际上并没有为可动画的 Drawable 设置动画。为此,您必须通过在AnimationDrawable(或Animatable,就此而言)调用start() 方法来手动启动动画。

    由于某些奇怪的原因,您不能在将 Drawable 设置为 View 后立即执行此操作。相反,您可以尝试将 start 调用发布到 Handler,以便在 Drawable 的初始设置与其动画开始之间有一段时间。

    还没来得及找出它为什么会这样,但这是我最终不得不做的。

    【讨论】:

      【解决方案3】:

      您可以手动将此发光效果生成为背景图片,并使其在单击时显示为实际图像后面的父视图。但我认为没有任何本机功能。

      【讨论】:

        猜你喜欢
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多