2013-09-03 21 views
14

Ekranda bir düzen yapmak için animasyonu kullanmaya çalışıyorum. Fikir, düzenin 0 yüksekliği ile başlayacağı ve% 100'e çıkacağıdır.Android, animasyonu kullanarak LinearLayout'u büyütün

Bu konuda gerçekten sıkıntılarım var ve biraz yardıma ihtiyacım var. Bazı sebeplerden dolayı animasyon yapılmaz. İşte

<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
     android:fromXScale="0.0" 
     android:toXScale="1" 
     android:fromYScale="1.0" 
     android:toYScale="1.0" 
     android:fillAfter="false" 
     /> 

</set> 

düzen dosya kuyunun olarak çok temel bir çok temel ve

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> 

<LinearLayout 
     android:id="@+id/dialog" 
     android:layout_width="wrap_content" 
     android:layout_height="200dp" 
     android:layout_centerHorizontal="true" 
     android:orientation="vertical" 
     android:layout_centerVertical="true" 
     android:background="@drawable/border"> 
    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:text="Phone" 
      android:id="@+id/textView"/> 
    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:text="Address" 
      android:id="@+id/textView1"/> 
    <Button android:id="@+id/btn1" 
      android:layout_width="200dp" 
      android:layout_height="wrap_content" 
      android:text="Action 1" 
      /> 
    <Button android:id="@+id/btn2" 
      android:layout_width="200dp" 
      android:layout_height="wrap_content" 
      android:text="Action 2" 
      /> 
</LinearLayout> 
<Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Animate" 
     android:id="@+id/btnAnimate" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" 
     android:onClick="animate"/> 
</RelativeLayout> 

Benim aktivite kodunu şu şekilde tasarlanmıştır benim animasyon XML dosyasıdır

public class MyActivity extends Activity implements Animation.AnimationListener{ 

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

public void animate(View view){ 
    LinearLayout dialog = (LinearLayout)findViewById(R.id.dialog); 
    dialog.setVisibility(LinearLayout.VISIBLE); 
    Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim); 
    Log.i("animate","Begin Animation"); 
    animation.reset(); 
    // animation.setFillAfter(true); 
    animation.setAnimationListener(this); 
    dialog.setAnimation(null); 
    Log.i("animate","End Animation"); 
} 

@Override 
public void onAnimationStart(Animation animation) { 
    //To change body of implemented methods use File | Settings | File Templates. 
} 

@Override 
public void onAnimationEnd(Animation animation) { 
    //To change body of implemented methods use File | Settings | File Templates. 
} 

@Override 
public void onAnimationRepeat(Animation animation) { 
    //To change body of implemented methods use File | Settings | File Templates. 
} 
} 

Teşekkür ederiz

+0

sorunu nedir:

sonra anim klasöründe (grow_anim1) etkinliği sınıf kullanımda

bu şekilde animation.xml eklemek? Kodun şimdi ne yapıyor? – nedaRM

+0

Kodum kesinlikle hiçbir şey yapmaz. Sadece iyi çalışır ama animasyon yok ... – svager

cevap

23

Tamam, anladım.

Canlandırma XML düzeni

<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:fillEnabled="true" 
android:fillAfter="true"> 
<scale 

     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
     android:fromXScale="1.0" 
     android:toXScale="1.0" 
     android:fromYScale="0.0" 
     android:toYScale="1.0" 
     android:fillAfter="false" 
     /> 

</set> 
Düzen XML dosyası

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> 

    <LinearLayout 
     android:id="@+id/dialog" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:orientation="vertical" 
     android:layout_centerVertical="true" 
     android:visibility="invisible" 
     android:background="@drawable/border"> 
    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:text="Phone" 
      android:id="@+id/textView"/> 
    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:text="Address" 
      android:id="@+id/textView1"/> 
    <Button android:id="@+id/btn1" 
      android:layout_width="200dp" 
      android:layout_height="wrap_content" 
      android:text="Action 1" 
      /> 
    <Button android:id="@+id/btn2" 
      android:layout_width="200dp" 
      android:layout_height="wrap_content" 
      android:text="Action 2" 
      /> 
    </LinearLayout> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Animate" 
     android:id="@+id/btnAnimate" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" 
     android:onClick="animate"/> 
</RelativeLayout> 

ve

yukarıda
public class MyActivity extends Activity{ 

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

public void animate(View view){ 
    LinearLayout dialog = (LinearLayout)findViewById(R.id.dialog); 
    dialog.setVisibility(LinearLayout.VISIBLE); 
    Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim); 
    animation.setDuration(500); 
    dialog.setAnimation(animation); 
    dialog.animate(); 
    animation.start(); 
} 

} 
+0

Ortalama yöntem dialog.animate();? – anivaler

+0

Şimdi nasıl android.R.anim denir. * – delive

+0

for Animasyon dosyasında gerekli olan değişiklik nedir ?? –

1

, animasyon hiç başlanmadı. eklemeyi deneyin: animation.start()?

+0

Tamam, ben anladım ama tam bir cevap gönderemiyorum çünkü benim itibarım çok düşük :( – svager

5

Android 3.0 için en kolay yolu ve bu özelliği ayarlamak için benim Etkinlik sınıfı childs'ı eklemek istediğinizi görüntüleyin:

android:animateLayoutChanges="true"

Ayrıca kendi animasyonlar oluşturabilirsiniz:

Eğer özel düzen animasyonlar tedarik bir LayoutTransition nesnesi oluşturmak ve setLayoutTransition() metodu ile düzene bunu tedarik etmek istiyorum.

fazla bilgi için bkz:

+0

Bu bir cevap değil, OP özel bir animasyon istiyor, ancak özel bir animasyonun nasıl sağlanacağını açıklamıyorsunuz. –

+0

Luke ile katılıyorum, cevabın en önemli kısmını kaçırdınız. Cevabınıza bağlı olarak view.setLayoutTransition (yeni LayoutTransition()) 'çözümdür, ancak hiçbir şey yapmaz. – TWiStErRob

2

http://developer.android.com/training/animation/layout.html#activity android büyüyen LinearLayout tasarlama: Xamarin Mono android kullanan olanlar için

:

kaynakların altında bir klasör anim olun.

(benim durumumda ben Fragment kullanıyorum)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Util; 
using Android.Views; 
using Android.Widget; 
using Android.Views.Animations; 
namespace BehnoudAndroidApp { 
    public class StartPageFragment : Fragment{ 
     public override View OnCreateView(LayoutInflater p0, ViewGroup p1, Bundle p2){ 
      var rootView = p0.Inflate(Resource.Layout.StartPageLayout, p1, false); 

      LinearLayout menu1 = rootView.FindViewById<LinearLayout>(Resource.Id.linearlayout1); 

      Animation animation1 = AnimationUtils.LoadAnimation(this.Activity, Resource.Animation.grow_anim1); 

      animation1.Duration = 5000; 

      menu1.Click += delegate { menu1.StartAnimation(animation1); }; 

      return rootView; 
     } 
    } 
} 
İlgili konular