2011-06-21 18 views
21

Şu anda bir ölçek animasyon uygulayarak bir ImageView var. Bu görünüm, layout_height ve wrap_content olarak ayarlanan layout_width olan göreceli bir düzen içinde yer almaktadır. Sorun, animasyon başladığında görüntüyü ana düzeninden daha büyük kılar ve görüntü kesilir. Bunun etrafında zaten var mı? -Android: Animasyon ebeveyn görünümü tarafından kırpılmış

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<RelativeLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="20dip" 
    android:layout_gravity="center_horizontal"> 
    <ImageView 
     android:id="@+id/imgO" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/circle"/> 
    </RelativeLayout> 
</LinearLayout> 

java dosyası -

ImageView imgO; 

ScaleAnimation makeSmaller; 
ScaleAnimation makeBigger; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.titlescreen); 

    //Animation 
    imgO = (ImageView)findViewById(R.id.imgO); 

    makeSmaller = new ScaleAnimation((float)10.0, (float)1.0, (float)10.0, (float)1.0, Animation.RELATIVE_TO_SELF, (float)0.5, Animation.RELATIVE_TO_SELF, (float)0.5); 
    makeSmaller.setAnimationListener(new MyAnimationListener()); 
    makeSmaller.setFillAfter(true); 
    makeSmaller.setDuration(500); 
    makeBigger = new ScaleAnimation((float)1.0, (float)10.0, (float)1.0, (float)10.0, Animation.RELATIVE_TO_SELF, (float)0.5, Animation.RELATIVE_TO_SELF, (float)0.5); 
    makeBigger.setAnimationListener(new MyAnimationListener()); 
    makeBigger.setFillAfter(true); 
    makeBigger.setDuration(750); 
    imgO.startAnimation(makeBigger); 
} 

class MyAnimationListener implements AnimationListener { 

    public void onAnimationEnd(Animation animation) { 

     ScaleAnimation sa = (ScaleAnimation)animation; 

     if (sa.equals(makeSmaller)) 
      imgO.startAnimation(makeBigger); 
     else 
      imgO.startAnimation(makeSmaller); 
    } 

    public void onAnimationRepeat(Animation animation) { 
    } 

    public void onAnimationStart(Animation animation) { 
    } 

} 

Teşekkür

xml dosyası: Burada

çalışan bir örnektir.

cevap

0

Bunu her şeyi dolduruyor ve sonra resimleri yatay ve dikey olarak ortalayarak düzeltdim. Biraz sizin için geç oldu ama bir cevap arayan herkes için

65

: Sen çevreleyen ViewGroups üzerinde setClipChildren(false) (gibi RelativeLayout veya LinearLayout) çağırabilir.

+10

excelent anwser! XML kullanıyorsanız, kodunuzu da temizleyebilirsiniz: android: clipChildren = "false" – Ricky

+0

Teşekkürler, eğer bu düğmelerdeyse, onClickListener olaylarını nasıl saklarsınız? Benimki yok oluyor. – tricknology

+0

Üstün cevap! Teşekkürler! Değinmek gerekirse, ana ebeveyn (root düzeni) üzerinde clipChildren'i "false" olarak ayarlamak yeterlidir. – daxgirl

İlgili konular