简单的ImageView颜色动画

3

你好,我对Android还比较陌生,希望能得到一些指引或建议来解决我的问题。由于我的声望还不够,因此无法上传图片,所以我将尽力用文字描述。

假设我有一个空瓶子,在调用这个片段/活动时,我想要展示一个动画效果,逐渐从下往上,使这个imageView中的水逐渐填满。

有什么想法或方向吗?

非常感谢!


你可以使用自定义的ProgressBar来实现这个功能。更简单的方法是,在下面添加了一个如何实现的答案。 - Joel Fernandes
2个回答

2
希望您可以使用两张瓶子图片,其中一张(在前景)是透明的空瓶子,第二张(在背景)是“液体的形状”。
当您的活动开始时,获取背景图像并按照此主题中发布的内容进行动画处理:https://dev59.com/Imct5IYBdhLWcg3wZMjn#12127985 希望这能帮助您!

谢谢您的快速回答,看起来这正是我想要做的。我将尝试这个方法并接受您的解答!再次感谢。 - thanosChatz

0

您可以通过使用自定义的ProgressBar来实现这一点。更加简单。

<ProgressBar
            android:id="@+id/progressbar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_marginBottom="2dp"
            android:layout_marginTop="2dp"
            android:indeterminateOnly="false"
            android:max="100"
            android:progress="30"
            android:progressDrawable="@drawable/progress_bar_clip" >
        </ProgressBar>

progress_bar_clip.xml

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

    <item android:id="@android:id/background">
        <clip
            android:clipOrientation="vertical"
            android:drawable="@drawable/ic_launcher"
            android:gravity="bottom" />
    </item>
    <item android:id="@android:id/progress">
        <clip
            android:clipOrientation="vertical"
            android:gravity="bottom" >
            <bitmap android:src="@drawable/ic_launcher" >
            </bitmap>
        </clip>
    </item>

</layer-list>

你不需要加载任何动画,只需使用处理程序并将进度条增加1。

final ProgressBar bar = (ProgressBar) findViewById(R.id.progressbar);

        final Handler handler = new Handler();
        runnable = new Runnable() {

            @Override
            public void run() {
                if(bar.getProgress() != 100) {
                    bar.incrementProgressBy(1);
                    handler.postDelayed(runnable, 500);
                }
            }
        };;

        handler.post(runnable);

我在我制作的一个应用程序中不得不使用类似的东西,并想出了这个快速解决方案。很高兴它有所帮助。同时,请确保将空玻璃背景设置为ProgressBar,并在android:id="@android:id/progress"中设置填充的玻璃可绘制对象。这样,它实际上看起来像水正在玻璃中填充。 - Joel Fernandes
嗨Joel,再次感谢您的建议和所有的解决方案都很棒:D!我有一个后续问题,当动画开始时,它显示图片的一部分,我将进度设置为0并尝试了其他一些东西,但似乎没有任何效果,您有什么即时想法吗?再次非常感谢! - thanosChatz
@thanosChatz 在 XML 中,将进度设置为 0 => android:progress="0" - Joel Fernandes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接