如何让我的图像在androidstudio中淡出?

时间:2017-03-07 22:04:55

标签: java android xml android-studio android-animation

我是编程和编程的新手。到目前为止,我找不到我的问题的具体答案,所以我的问题非常简短:

我正在使用android studio 2.2.3

当我点击第一张图片时,它会变为第二张图片

public void fade(View view) {

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

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

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

        ja2.animate().alpha(1f).setDuration(2000);


    }

现在,当我想制作第二张已经可见的淡入淡出的图像时,首先使用淡入淡出的图像回来时没有任何反应!我的应用程序甚至不会做任何事情!我只是坚持第一张图片,这是我尝试使用的代码:

public void fade(View view) {

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

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

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


        ja2.animate().alpha(1f).setDuration(2000);


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


        ja1.animate().alpha(1f).setDuration(2000);

    }

如果有人可以帮助我,我将非常感激,

谢谢你。

更新:这是我的xml代码,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    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.dlx.myapplication.MainActivity"
    android:onClick="fade2">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/textView" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:srcCompat="@drawable/ja1"
        android:id="@+id/ja1"
        android:onClick="fade" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:srcCompat="@drawable/ja2"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/ja2"
        android:alpha="0" />
</RelativeLayout>

6 个答案:

答案 0 :(得分:1)

它无效。你知道为什么??因为第一张图像只会淡化到alpha 0但它仍然保持在另一张图像的顶部。所以你无法点击第二张图片。尝试使用if语句。祝你好运。

答案 1 :(得分:0)

你应该在新方法中采取相反的行动:

public void fadeImageView1(View view) {

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

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

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

    ja1.animate().alpha(1f).setDuration(2000);
}

在ImageView1消失后单击ImageView2时调用此方法。

答案 2 :(得分:0)

这种方式对我有用我有一种方法让一个消失而另一个消失,反之亦然。代码...

public class MainActivity extends AppCompatActivity {

ImageView ja1,ja2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
   ja1 = (ImageView) findViewById(R.id.ja1);
    ja2 = (ImageView) findViewById(R.id.ja2);

    ja1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            fadeIN(getCurrentFocus());
        }
    });

    ja2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            fadeOUT(getCurrentFocus());
        }
    });

}

public void fadeOUT(View view) {
            ja1.animate().alpha(0f).setDuration(2000);
            ja2.animate().alpha(1f).setDuration(2000);
            ja2.animate().alpha(0f).setDuration(2000);
            ja1.animate().alpha(1f).setDuration(2000);
        }

public void fadeIN(View view) {
    ja2.animate().alpha(0f).setDuration(2000);
    ja1.animate().alpha(1f).setDuration(2000);
    ja1.animate().alpha(0f).setDuration(2000);
    ja2.animate().alpha(1f).setDuration(2000);
}

}

答案 3 :(得分:0)

我认为您的问题可能是0的alpha不会使图像无法点击。你可以尝试在它们的顶部都有一个透明按钮,只需在点击它时打开一个布尔值,或者使alpha 0图像可见.GONE或其中的一些变体。

答案 4 :(得分:0)

public void fade(View view) {

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

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

    float alpha = cat2.getAlpha();

    if (alpha == 0) {

        cat2.animate().alpha(1).setDuration(3000);

        alpha = 1;
    }

    else {

        cat2.animate().alpha(0).setDuration(3000);
    }
}

答案 5 :(得分:0)

我就是这样做的,我将一个整数i初始化为1然后根据它的值运行不同的代码:

package com.example.dell.test;

import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;


public class MainActivity extends AppCompatActivity {
public int i = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void bbd(View view) {



    Log.d(" value of i is ", String.valueOf(i));
    if (i == 1) {
        i++;
        ImageView img2 = (ImageView) findViewById((R.id.cc));
        img2.animate().alpha(0f).setDuration(2000);
        ImageView img = (ImageView) findViewById(R.id.bb);
        img.animate().alpha(1f).setDuration(2000);

    } else if (i == 2) {
        ImageView img = (ImageView) findViewById(R.id.bb);
        ImageView img2 = (ImageView) findViewById((R.id.cc));
        img.animate().alpha(0f).setDuration(2000);
        img2.animate().alpha(1f).setDuration(2000);
        i--;

    }
   }

   }