2012-04-10 12 views
3
でExpandAnimation

、私は私のプロジェクト
https://github.com/Udinic/SmallExamples/tree/master/ExpandAnimationExample
の場合、この例を使用していますが、私は任意の項目をクリックすると、私はクラッシュしました!
マイコード:アンドロイド:フラグメント

public class AccountContents extends Fragment { 
private AccountItem[] rootContents; 
private ListView ls1; 
private CArrayAdapter adapter; 
private Context context; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 

    final View V = inflater.inflate(R.layout.account_contents, container, 
    false); 
    context = getActivity().getApplicationContext(); 
    rootContents = fourshared.rootContents; 
    adapter = new CArrayAdapter(context, rootContents); 
    ls1 = (ListView) V.findViewById(R.id.AC_listView); 
    ls1.setAdapter(adapter); 
    ls1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, final View view, 
      int position, long id) { 

      View toolbar = V.findViewById(R.id.toolbar); 
      ExpandAnimation expandAni = new ExpandAnimation(toolbar, 500); 
      toolbar.startAnimation(expandAni); 
     } 
    }); 
    return V; 
    } 
} 

ExpandAnimation.java:。私の英語:(申し訳ありません

public class ExpandAnimation extends Animation { 
private View mAnimatedView; 
private LayoutParams mViewLayoutParams; 
private int mMarginStart, mMarginEnd; 
private boolean mIsVisibleAfter = false; 
private boolean mWasEndedAlready = false; 

    /** 
* Initialize the animation 
* @param view The layout we want to animate 
* @param duration The duration of the animation, in ms 
*/ 
public ExpandAnimation(View view, int duration) { 

    setDuration(duration); 
    mAnimatedView = view; 
    mViewLayoutParams = (LayoutParams) view.getLayoutParams(); 

    // if the bottom margin is 0, 
    // then after the animation will end it'll be negative, and invisible. 
    mIsVisibleAfter = (mViewLayoutParams.bottomMargin == 0); 

    mMarginStart = mViewLayoutParams.bottomMargin; 
    mMarginEnd = (mMarginStart == 0 ? (0- view.getHeight()) : 0); 

    view.setVisibility(View.VISIBLE); 
} 

@Override 
protected void applyTransformation(float interpolatedTime, Transformation t) { 
    super.applyTransformation(interpolatedTime, t); 

    if (interpolatedTime < 1.0f) { 

     // Calculating the new bottom margin, and setting it 
     mViewLayoutParams.bottomMargin = mMarginStart 
       + (int) ((mMarginEnd - mMarginStart) * interpolatedTime); 

     // Invalidating the layout, making us seeing the changes we made 
     mAnimatedView.requestLayout(); 

    // Making sure we didn't run the ending before (it happens!) 
    } else if (!mWasEndedAlready) { 
     mViewLayoutParams.bottomMargin = mMarginEnd; 
     mAnimatedView.requestLayout(); 

     if (mIsVisibleAfter) { 
      mAnimatedView.setVisibility(View.GONE); 
     } 
     mWasEndedAlready = true; 
    } 
} 
} 

答えて

2

GETコンテキスト

context = V.getContext(); 

まず間違いこのコードを試してみてください リストのクリックイベントで

2つ目

View toolbar =view.findViewById(R.id.toolbar); 

あなたの更新されたコード

public class AccountContents extends Fragment { 
private AccountItem[] rootContents; 
private ListView ls1; 
private CArrayAdapter adapter; 
private Context context; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 

    final View V = inflater.inflate(R.layout.account_contents, container, 
    false); 
    context = V.getContext(); 
    rootContents = fourshared.rootContents; 
    adapter = new CArrayAdapter(context, rootContents); 
    ls1 = (ListView) V.findViewById(R.id.AC_listView); 
    ls1.setAdapter(adapter); 
    ls1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, final View view, 
      int position, long id) { 

      View toolbar = view.findViewById(R.id.toolbar); 
      ExpandAnimation expandAni = new ExpandAnimation(toolbar, 500); 
      toolbar.startAnimation(expandAni); 
     } 
    }); 
    return V; 
    } 
} 
関連する問題