1

私はクラスのためにこのプロジェクトに取り組んでいます。
バート・シンプソンの画像をクリックすると、ホーマー・シンプソンがフェードインする間にフェードアウトします。

私が助けを必要としているのは、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>

主な活動

    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);
    }




    }
4

4 に答える 4

4

簡単です。OnClickListener を homer オブジェクトに定義し、それがトリガーされたときにフェード関数を呼び出す必要があります。

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;
        }
    }
}
于 2016-08-12T04:13:13.847 に答える
2

以下は、クロスフェードを実行し、別のクリックで戻る簡単な方法です。

XML :

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.constraintlayout.widget.Barrier
        android:id="@+id/barrier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="top" />

    <ImageView
        android:id="@+id/bart"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true"
        android:onClick="fade"
        app:srcCompat="@drawable/bart"
        tools:layout_editor_absoluteX="105dp"
        tools:layout_editor_absoluteY="190dp" />
    <ImageView
        android:id="@+id/homer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:alpha="0"
        app:srcCompat="@drawable/homer"
        tools:layout_editor_absoluteX="105dp"
        tools:layout_editor_absoluteY="190dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

メイン :

public class MainActivity extends AppCompatActivity {

    public void fade(View view){
        ImageView bart = (ImageView) findViewById(R.id.bart);
        ImageView homer = (ImageView) findViewById(R.id.homer);
        if (bart.getAlpha()==1f) {
            bart.animate().alpha(0f).setDuration(4000);
            homer.animate().alpha(1f).setDuration(4000);
        }
        else{
            bart.animate().alpha(1f).setDuration(4000);
            homer.animate().alpha(0f).setDuration(4000);
        }

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
于 2020-05-11T17:09:03.420 に答える