2016-08-11 3 views
0

私はこのプロジェクトのために私のクラスで作業しています。
あなたはバートシンプソンの画像をクリックするとホーマーシンプソンがフェードインしながら、それがフェードアウト。私は助けが必要ImageViewsをクロスフェードする最も良い方法

何ホーマーをクリックして、バートに戻ることを可能にすることです。

私のコードは

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




    } 
+0

基本的には何が表示されているかを把握しているので、どの画像をフェードする必要があるか分かります。 –

+0

私が必要とするのは、ホーマーをクリックしてバートに戻ることができるようにすることですが、どうすればいいのでしょうか? –

答えて

1

シンプルで、あなたがオブジェクトとするとき、それはフェード機能を呼び出すトリガーをホーマーしOnClickListenerを定義する必要があります。

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; 
     } 
    } 
} 
+0

働いていただきありがとうございます! –

+0

チックをクリックしてください意味ソリューションは正しい:) –

1

これははるかに簡単な方法です。ホーマーにonclick関数を追加して、.bringToFront();を使用して、彼がバートの前に連れて来るようにします。これは、ホーマーは見えますが、バートは彼の前であり、第2の関数は同様に実行されないからです。バートに.bringToFront();を使用してください。私は他の画像を使用しています。 ここにxmlがあります。

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.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="com.example.pembatamang.myapplication.MainActivity" 
    tools:layout_editor_absoluteX="0dp" 
    tools:layout_editor_absoluteY="0dp"> 

    <ImageView 
     android:id="@+id/eevee" 
     android:layout_width="368dp" 
     android:layout_height="495dp" 
     android:alpha="0" 
     android:onClick="fade1" 
     android:src="@drawable/evee" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <ImageView 
     android:id="@+id/squirtle" 
     android:layout_width="wrap_content" 
     android:layout_height="495dp" 
     android:onClick="fade" 
     android:src="@drawable/squirtle" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 


</android.support.constraint.ConstraintLayout> 

ここはJavaコードです。

package com.example.pembatamang.myapplication; 


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

public class MainActivity extends AppCompatActivity { 

    public void fade(View view) { 
     ImageView squirtle1 = (ImageView) findViewById(R.id.squirtle); 
     ImageView eevee1 = (ImageView) findViewById(R.id.eevee); 
     squirtle1.animate().alpha(0f).setDuration(2000); 
     eevee1.animate().alpha(1f).setDuration(2000); 
     eevee1.bringToFront(); 
    } 

    public void fade1(View view) { 
     ImageView squirtle1 = (ImageView) findViewById(R.id.squirtle); 
     ImageView eevee1 = (ImageView) findViewById(R.id.eevee); 
     eevee1.animate().alpha(0f).setDuration(2000); 
     squirtle1.animate().alpha(1f).setDuration(2000); 
     squirtle1.bringToFront(); 
    } 


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


    } 
} 
関連する問題