2010-11-22 20 views
2

Bu uygulamada neyin yanlış olduğunu söyleyen var mı? Burada yapmak istediğim, ekrana dokunduğunuzda yerleri değiştiren iki örtüşen görünüme sahip. Yanlış kullanmıyorsam, View.bringToFront() hiçbir şey yapmıyor mu?Android: iki örtüşen görünümün yerini değiştirme

Uygulamamdaki bütün kodlar aşağıdadır. İkisinin de gerçekten çakıştığından emin olmak için 'backView' öğesine dolgu eklediğimi unutmayın. Gerçekten de ekranda görebiliyordum. Üst görünüme dokunmak gerçekten de onClick yöntemini tetiklerken, hiçbir şey bringToFront çağrılarına yanıt olarak gözle görülür biçimde değişmez.

public class MainActivity extends Activity implements OnClickListener { 
private ImageView frontView; 
private ImageView backView; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    frontView = (ImageView) findViewById(com.example.R.id.FrontView); 
    backView = (ImageView) findViewById(com.example.R.id.BackView); 

    frontView.setOnClickListener(this); 
    backView.setOnClickListener(this); 

    backView.setPadding(10,0,0,0); 
} 

private boolean flag; 
public void onClick(View v) { 
    if (!flag) { 
     backView.bringToFront(); 
    } 
    else { 
     frontView.bringToFront(); 
    } 
    flag = !flag; 
} 
} 

ve ilgili düzen:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    > 
<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/FrontView" 
    android:src="@drawable/front" 
    /> 
<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/BackView" 
    android:src="@drawable/back" 
    /> 
</RelativeLayout> 

Belki de düzen

kullanıyorum ki? Emin değilim ... FrameLayout ve LinearLayout da denedim.

+0

AbsoluteLayout'u kullanmak istediğim sonuçları bana veriyor gibi görünüyor ... ama bu sınıf aslında kullanımdan kaldırıldı olarak işaretlendi. "Neden bu denen şey, neden kullanılmıyor?" Diye sormaya çalışacağım. ve sadece "Bunu yapmak için meşru bir yol var mı?" – Cruinh

cevap

1

ImageViews yerine içerik görünümlerini değiştirmeyi deneyebilirim. farklı bir düzende her imageView koyun ve o zaman kolaydır:

public void onClick(View v) { 
if (!flag) { 
    setContentView(R.layout.main_front); 
    frontView = (ImageView) findViewById(com.example.R.id.FrontView); 
    frontView.setOnClickListener(this); 
} 
else { 
    setContentView(R.layout.main_back); 
    backView = (ImageView) findViewById(com.example.R.id.BackView); 
    backView.setOnClickListener(this); 
} 
flag = !flag; 

} Bu sizin için bunu kullanabilir Bileşenlerinin bir çift vardır

0

. ViewAnimator, ViewFlipper ve ViewSwitcher. Gereksinim duyduğunuz animasyonları ayarlayabilirsiniz.

işte bir örnek. http://www.androidpeople.com/android-viewflipper-example/

Örneğinizi verdiğinizde, bringToFront() öğesini çağırdıktan sonra ebeveynde invalidate() öğesini çağırmanız mı gerekiyor?