如何逐步从顶部向下显示ImageView

20

是否有一种方法可以逐步从上到下显示一个ImageView,就像这样:

enter image description here

抱歉动画效果比较差。


1
你想让 ImageView 自己以那种方式进行动画吗?还是你想在用户执行某些操作时才这样做? - user
不确定有什么区别,但我会说它本身。 - Bruno
1个回答

34

我对Android动画不是很熟悉,但有一种(有些hackish)方法是将图像包装在ClipDrawable中,并动画化其level值。例如:

<ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/clip_source" />

其中clip_source是一个可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="vertical"
    android:drawable="@drawable/your_own_drawable"
    android:gravity="bottom" />

然后在代码中你会有:

// a field in your class
private int mLevel = 0;

ImageView img = (ImageView) findViewById(R.id.imageView1);
mImageDrawable = (ClipDrawable) img.getDrawable();
mImageDrawable.setLevel(0);
mHandler.post(animateImage);

animateImage 是一个 Runnable 对象:

private Runnable animateImage = new Runnable() {

        @Override
        public void run() {
            doTheAnimation();
        }
    };

doTheAnimation方法:

private void doTheAnimation() {
    mLevel += 1000;
    mImageDrawable.setLevel(mLevel);
    if (mLevel <= 10000) {
        mHandler.postDelayed(animateImage, 50);
    } else {
        mHandler.removeCallbacks(animateImage);
    }
}

有趣!在这种情况下,mHandler是什么? - Bruno
我似乎无法使这个方法起作用,我总是看到完整的图像。 - Bruno
@ibiza 我原始代码的某些部分没有显示出来。看看现在是否可以工作了。 - user
1
明白了,已将 XML 图形的 android:gravity="bottom" 更改为 android:gravity="top"。 - Bruno
java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable 无法转换为 android.graphics.drawable.ClipDrawable - Vishal Patoliya ツ
显示剩余3条评论

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