繁体   English   中英

如何使ImageView覆盖另一个View并在一段时间后将其隐藏?

[英]How to make an ImageView overlay another View and hide it after a certain period of time?

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

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

如何才能做到这一点? 我已经尝试了一些方法,但是它破坏了我的代码,或者什么都不显示。

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

编辑:按照下面的问题,我希望ImageView一经显示就显示出来,持续3秒钟,然后消失。

好吧。 您想要的实际上很容易。

只需创建一个RelativeLayout,其中包含一个ListView和一个上方的ImageView。 然后在onCreate(...)方法内部, 使用Handler并在3秒后将ImageView的可见性设置为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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM