【问题标题】:How to make an ImageView overlay another View and hide it after a certain period of time?如何使 ImageView 覆盖另一个 View 并在一段时间后将其隐藏?
【发布时间】:2013-09-03 12:46:50
【问题描述】:

我正在制作一个非常简单的 Andriod 应用程序,我想知道是否可以就我的应用程序获得一些帮助。

我想在整个 ListView(包括操作栏)上显示一个 ImageView 3 秒钟,然后删除该 ImageView(或隐藏它,任何东西),以返回列表视图。

如何做到这一点?我尝试了一些方法,但它要么破坏了我的代码,要么根本不显示任何内容。

在此先感谢大家 - 如果您需要任何进一步的解释,请告诉我。

编辑:根据下面的问题,我希望 ImageView 在 ListView 显示后立即显示 3 秒钟,然后消失。

【问题讨论】:

  • 当一个列表项被点击时你想要这个行为吗?
  • 不,抱歉,我将编辑我的问题解释。我希望它在 ListView 显示后立即显示 3 秒钟,然后消失。
  • google "显示启动画面 android"
  • 我已经实现了启动画面——这不是我想要的。我的图像是透明的,我希望列表视图显示在下方。
  • 我回答了你的问题是为了展示它是如何工作的。

标签: java android android-layout imageview delay


【解决方案1】:

好的。你想要的其实很简单。

只需创建一个包含 ListView 和其上方的 ImageView 的 RelativeLayout。 然后在 onCreate(...) 方法中,使用处理程序并在 3 秒后将 ImageView 的 Visibility 设置为 GONE

这是 layout.xml 文件:

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

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
    </ListView>

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:scaleType="fitXY"
        android:src="@drawable/your_image" />

</RelativeLayout>

在onCreate(...)方法内:

@Override    
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.yourlayout);

    final ImageView iv = (ImageView) findViewById(R.id.imageView1);

    Handler h = new Handler();
    h.postDelayed(new Runnable() {

        @Override
        public void run() {
            // EITHER HIDE IT IMMEDIATELY
            iv.setVisibility(View.GONE);

            // OR HIDE IT USING ANIMATION
            hideImageAnimated(iv);

            // DONT use both lines at the same time :)
        }
    }, 3000); // 3 seconds
}  

为了使事情变得更更流畅,您可以在 ImageView 上使用 AlphaAnimation

public void hideImageAnimated(final ImageView iv) {

    Animation alpha = new AlphaAnimation(1.0f, 0.0f);
    alpha.setDuration(1000); // whatever duration you want

    // add AnimationListener
    alpha.setAnimationListener(new AnimationListener(){

        @Override
        public void onAnimationEnd(Animation arg0) {
            iv.setVisibility(View.GONE);
        }

        @Override
        public void onAnimationRepeat(Animation arg0) { }

        @Override
        public void onAnimationStart(Animation arg0) { }

    });

    iv.startAnimation(alpha);
}

【讨论】:

  • 效果很好,非常感谢。一些后续问题 - 图像淡出的任何方式?而且,图像看起来很拉伸。我应该更改图像尺寸,还是有办法使用 XML 设置尺寸(看起来不奇怪!)?
  • 看看 .xml 中可用于 ImageView 的不同“比例类型”。如果您希望 ImageView 始终覆盖全屏,那么您可能需要使用与我在上面所做的不同的比例类型,或者更改图像尺寸以正确适应屏幕。我将更新我的问题,向您展示如何正确设置 ImageView 的动画。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 2014-04-08
相关资源
最近更新 更多