android - 交叉淡入淡出 ImageViews 的最佳方式

标签 android cross-fade

我正在为我的类(class)做这个项目。
您可以单击 Bart Simpson 的图像,它会淡出,而 Homer Simpson 会淡入。

我需要帮助的是让点击 Homer 并返回 Bart 成为可能。

我的代码是

Activity_xml

   <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.eric.layoutdemo2.MainActivity">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:id="@+id/bart"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:src="@drawable/bart"
        android:onClick="fade"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:id="@+id/homer"
        android:layout_alignTop="@+id/bart"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:alpha="0"
        android:src="@drawable/homer"
       />
     </RelativeLayout>

主要 Activity

    import android.support.v7.app.ActionBarActivity;
        import android.os.Bundle;
        import android.view.Menu;
        import android.view.MenuItem;
        import android.view.View;
        import android.widget.ImageView;


   public class MainActivity extends ActionBarActivity {

       public void fade(View view) {

        ImageView bart = (ImageView) findViewById(R.id.bart);

        ImageView homer = (ImageView) findViewById(R.id.homer);


        bart.animate().alpha(0f).setDuration(2000);

        homer.animate().alpha(1f).setDuration(2000);
        bart.bringToFront();
    }

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




    }

最佳答案

很简单,你必须定义一个 OnClickListener 到 homer 对象,当它触发时调用 fade 函数。

public class MainActivity extends ActionBarActivity implements View.OnClickListener{
    ImageView homer, bart;

    private void fade(ImageView v1, ImageView v2) {
        v1.animate().alpha(0f).setDuration(2000);
        v2.animate().alpha(1f).setDuration(2000);
        v2.bringToFront();
    }

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

        bart = (ImageView) findViewById(R.id.bart);
        homer = (ImageView) findViewById(R.id.homer);

        bart.setOnClickListener(this);
        homer.setOnClickListener(this);
    }

    @Override
    public void onClick(View v){
        switch(v.getId()){
            case R.id.bart:
                fade(bart, homer);
                     break;

            case R.id.homer:
                fade(homer, bart);
                     break;
        }
    }
}

关于android - 交叉淡入淡出 ImageViews 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38906818/

相关文章:

css - 交叉淡入淡出图像库,剩下 3 张图像

javascript - jquery 响应式图像淡入淡出过渡

android - 如何导出所有 firebase 远程配置键和值?

Android:仅文件夹选择器

android - 对 Android Gradle 中的 testCompile 和 androidTestCompile 感到困惑

java - 如何解决定期通知不发送的问题

linux - 如何使用 ffmpeg 重叠和合并多个音频文件?

css - 没有 HTML 的图像淡入淡出 - 仅 CSS

java - Android studio crossfade drawables 崩溃应用程序

android - 内存 - 将大型数据集从 Activity 传递到 fragment