2 düzenleri arasında solmasını geçmeye çalışan bir çözüm olabilir:
public class CrossFadeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.crossfade);
final View l1 = findViewById(R.id.l1);
final View l2 = findViewById(R.id.l2);
final Animation fadeOut = AnimationUtils.loadAnimation(CrossFadeActivity.this, R.anim.fade_out);
final Animation fadeIn = AnimationUtils.loadAnimation(CrossFadeActivity.this, R.anim.fade_in);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
fadeOut.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
l1.setVisibility(View.GONE);
}
});
l1.startAnimation(fadeOut);
l2.setVisibility(View.VISIBLE);
l2.startAnimation(fadeIn);
}
});
findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
fadeOut.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
l2.setVisibility(View.GONE);
}
});
l2.startAnimation(fadeOut);
l1.setVisibility(View.VISIBLE);
l1.startAnimation(fadeIn);
}
});
}
}
crossfade.xml: L1 ve L2 2 rasgele örnek düzenlemeleridir
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/l1"
android:layout_width="fill_parent"
android:layout_height="300dip"
android:orientation="vertical"
android:background="@drawable/someimage"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
<RelativeLayout
android:id="@+id/l2"
android:layout_width="fill_parent"
android:layout_height="300dip"
android:orientation="vertical"
android:background="@drawable/someimage2"
android:visibility="gone"
>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_centerInParent="true"
/>
</RelativeLayout>
</RelativeLayout>
. İşin sırrı, XML'leri, görünür/yok ile birbirleriyle (örn. RelativeLayout) üst üste gelebilecekleri, animasyonları bitişte görünürlüğü değiştirmek için canlandırıcılara ekleyebilecekleri ve daha önce görünmesi gereken görüntüyü ayarlayabilmeleridir. animasyon başlar, aksi halde animasyon görünmez.
Düğmeleri, düzenleri kendi içinde değiştirmek için dinleyicilere koydum, çünkü bu yolu uygulamak zorundayım, ancak tıklama dinleyicisi elbette başka bir yerde olabilir (yalnızca bir tanesiyle birlikte kullanılmalıdır) biraz bayrak veya nasıl geçiş yapacağınızı kontrol edin).
Bunlar animasyon dosyalarıdır. Onlar/klasör res saklanabilir zorunda anim:
fade_in.xml
<?xml version="1.0" encoding="UTF-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fillAfter="true"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
fade_out.xml
<?xml version="1.0" encoding="UTF-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fillAfter="true"
android:fromAlpha="1.0"
android:toAlpha="0" />
GÜNCELLEME: Yerine R.anim.fade_in kullanmanın
, Android API'sından (android.R.fade_in) varsayılan fade_in'i kullanabilirsiniz:
final Animation fadeIn = AnimationUtils.loadAnimation(CrossFadeActivity.this, android.R.anim.fade_in);
android.R.anim.fade_in dosyasını kullanarak res/anim/fade_in.xml dosyasını oluşturmanıza gerek yoktur.
Android, android.R'deki bazı yararlı animasyonları içeren bir pakettir.anim: http://developer.android.com/reference/android/R.anim.html
Ben android.R.anim.fade_in ve fade_out kullanmak istiyorum ve overridePendingTransiction yöntemi hakkında bir şey okudum. Ama ben LinearLayout'a animasyonu nasıl ayarlayacağımı anlamıyorum. Bana yardımcı olabilir misiniz? – CeccoCQ
Öğretici anim.fade_in ve fade_out'u kapsar, abit aşağı kaydırırsanız örnek kodu görebilirsiniz! Bu seni düşünmeli. – Citroenfris