2011-07-22 10 views
1

iOSからAndroidにアプリを移植しています。 iOSアプリでは、ビューのアニメーションがその下にあるビューを下に押しながら「ドロップダウン」します。ここでの例を参照してください(「参加」ボタンがドロップダウンパネルの効果を参照してくださいするにはここをクリックこのアプリ&をダウンロードしてください):私はアンドロイドでこの効果を再現しようとしてきた AppFreewayビューをスライドさせるには?

、私はかなり親しまTranslateAnimation内を作成することにより、 XMLおよび以降の落下のビューのためにsetAnimationを呼び出す:親が瞬時に下にすべてを移動するため、私はparent.addView(パネル、0)を使用して、親ビューにビューを追加するときに問題がある

<translate xmlns:android="http://schemas.android.com/apk/res/android" 
android:fromXDelta="0%" android:toXDelta="0%" 
android:fromYDelta="-100%" android:toYDelta="0%" 
android:duration="500" /> 

anim = AnimationUtils.loadAnimation(
       this, R.anim.contact_animation_enter); 
joinPanel.startAnimation(anim); 

後でアニメーションが始まります。 iOSのバージョンを見ると、「参加」ボタンをクリックすると、ドロップダウンパネルが表示されるたびにすべてがアニメーション表示されます。

どのように同じ効果を達成するためのアイデアですか?

答えて

2

これは私が作成したカスタムビューでこれを行った方法です。 android:visibility = "gone"でxmlレイアウトファイルに既にコード化して表示したかったビューがありました。私がまだ理解していない唯一の事は、EditTextボックスがスケーリングされ、テキストが拡大されてから通常のサイズに縮小されるときです。私がこの問題の解決策を見つけたら、私はそれを掲示するでしょう。

private EditText m_editText; 

protected void onFinishInflate() 
{ 
    super.onFinishInflate(); 

    m_editText = (EditText) findViewById(R.id.edit_text); 
} 


public void displayView(View activateView) 
{ 
    if (activateView.getVisibility() == View.GONE) 
    { 
     //fade in from top 
     activateView.setVisibility(View.VISIBLE); 
     final Animation fadeInFromTopAnimation = AnimationUtils.loadAnimation(context, R.anim.fade_in_from_top); 
     fadeInFromTopAnimation.setAnimationListener(new AnimationListener() 
      { 
       public void onAnimationStart(Animation anim) 
       { 
        //Shrink the text box down while inserting new view 
        //Add any padding or margins if needed 
        float scale = (float)(m_editText.getHeight() + m_weatherRow.getHeight())/m_editText.getHeight(); 

        AnimationSet shrinkDownAnimation = new AnimationSet(true); 
        shrinkDownAnimation.setInterpolator(new LinearInterpolator()); 
        ScaleAnimation scaleAnimation = new ScaleAnimation(1, 1, //X Scale 
                     scale, 1, //Y Scale 
                     Animation.RELATIVE_TO_SELF, 0.5f, //X Pivot Point (set to center but it shouldn't matter) 
                     Animation.RELATIVE_TO_SELF, 1.0f); //Y Pivot Point (bottom) 
        scaleAnimation.setDuration(fadeInFromTopAnimation.getDuration()); 
        shrinkDownAnimation.addAnimation(scaleAnimation); 

        m_editText.startAnimation(shrinkDownAnimation); 
       } 
       public void onAnimationEnd(Animation anim) {} 
       public void onAnimationRepeat(Animation anim) {} 
      }); 

     activateView.startAnimation(fadeInFromTopAnimation); 

そして、ここに私のfade_in_from_top.xmlアニメーションファイルです:

<?xml version="1.0" encoding="utf-8"?> 
<set 
    xmlns:android   = "http://schemas.android.com/apk/res/android" 
    android:interpolator = "@android:anim/linear_interpolator"> 

    <alpha 
     android:fromAlpha  = "0" 
     android:toAlpha   = "1" 
     android:duration  = "500"> 
    </alpha> 

    <scale 
     android:fromXScale  = "1" 
     android:fromYScale  = "0" 
     android:toXScale  = "1" 
     android:toYScale  = "1" 
     android:pivotX   = "50%" 
     android:pivotY   = "0%" 
     android:duration  = "500"> 
    </scale> 
</set> 
関連する問題