2012-02-26 13 views
1

サンプル画像の代わりに別のリストビューを使用していますが、サンプル画像のように3d遷移をしようとしていますが、リストビューは画面の右側に表示されますinverted.myリストは次のように表示され、左と言葉の代わりに:アンドロイドの画像ビューの代わりにリストビューを使用する方法3Dトランジション

enter image description here

私のコードです:

public class EventListActivity extends ListActivity { 

private ListView lv1, lv2; 
private ViewGroup mContainer; 
private ArrayList<ArrayAdapter<String>> arr; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.eventlist); 
    arr = new ArrayList<ArrayAdapter<String>>(); 
    String[] eventlist = getResources().getStringArray(R.array.eventlist); 
    String[] eventlist1 = getResources().getStringArray(R.array.techc); 
    String[] eventlist2 = getResources().getStringArray(R.array.presc); 
    String[] eventlist3 = getResources().getStringArray(R.array.roboc); 
    String[] eventlist4 = getResources().getStringArray(R.array.managec); 
    String[] eventlist5 = getResources().getStringArray(R.array.literaryc); 
    String[] eventlist6 = getResources().getStringArray(R.array.creationc); 
    String[] eventlist7 = getResources().getStringArray(R.array.gamingc); 
    ArrayAdapter<String> a1 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, eventlist1); 
    ArrayAdapter<String> a2 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, eventlist2); 
    ArrayAdapter<String> a3 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, eventlist3); 
    ArrayAdapter<String> a4 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, eventlist4); 
    ArrayAdapter<String> a5 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, eventlist5); 
    ArrayAdapter<String> a6 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, eventlist6); 
    ArrayAdapter<String> a7 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, eventlist7); 
    arr.add(a1); 
    arr.add(a3); 
    arr.add(a2); 

    arr.add(a4); 
    arr.add(a5); 
    arr.add(a6); 
    arr.add(a7); 
    final ArrayAdapter<String> a = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, eventlist); 
    lv1 = getListView(); 
    lv2 = (ListView) findViewById(R.id.list2); 
    mContainer = (ViewGroup) findViewById(R.id.container); 
    lv1.setAdapter(a); 
    lv2.setClickable(true); 
    lv2.setFocusable(true); 
    mContainer 
      .setPersistentDrawingCache(ViewGroup.PERSISTENT_ANIMATION_CACHE); 
    lv1.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      // TODO Auto-generated method stub 
      lv2.setAdapter(arr.get(arg2)); 

      applyRotation(arg2, 0, 90); 

     } 
    }); 

} 

protected void applyRotation(int position, int start, int end) { 
    // TODO Auto-generated method stub 
    final float centerX = mContainer.getWidth()/2.0f; 
    final float centerY = mContainer.getHeight()/2.0f; 

    // Create a new 3D rotation with the supplied parameter 
    // The animation listener is used to trigger the next animation 
    final Rotate3dAnimation rotation = new Rotate3dAnimation(start, end, 
      centerX, centerY, 310.0f, true); 
    rotation.setDuration(500); 
    rotation.setFillAfter(true); 
    rotation.setInterpolator(new AccelerateInterpolator()); 
    rotation.setAnimationListener(new DisplayNextView(position)); 

    mContainer.startAnimation(rotation); 
} 

private final class DisplayNextView implements Animation.AnimationListener { 
    private final int mPosition; 

    private DisplayNextView(int position) { 
     mPosition = position; 
    } 

    public void onAnimationStart(Animation animation) { 
    } 

    public void onAnimationEnd(Animation animation) { 
     mContainer.post(new SwapViews(mPosition)); 
    } 

    public void onAnimationRepeat(Animation animation) { 
    } 
} 

/** 
* This class is responsible for swapping the views and start the second 
* half of the animation. 
*/ 
private final class SwapViews implements Runnable { 
    private final int mPosition; 

    public SwapViews(int position) { 
     mPosition = position; 
    } 

    public void run() { 
     final float centerX = mContainer.getWidth()/2.0f; 
     final float centerY = mContainer.getHeight()/2.0f; 
     Rotate3dAnimation rotation; 

     if (mPosition > -1) { 
      lv1.setVisibility(View.GONE); 
      lv2.setVisibility(View.VISIBLE); 
      lv2.requestFocus(); 

      rotation = new Rotate3dAnimation(90, 180, centerX, centerY, 
        310.0f, false); 
     } else { 
      lv2.setVisibility(View.GONE); 
      lv1.setVisibility(View.VISIBLE); 
      lv1.requestFocus(); 

      rotation = new Rotate3dAnimation(90, 0, centerX, centerY, 
        310.0f, false); 
     } 

     rotation.setDuration(500); 
     rotation.setFillAfter(true); 
     rotation.setInterpolator(new DecelerateInterpolator()); 

     mContainer.startAnimation(rotation); 
    } 
}} 

私のXMLコードは `

です

`

どのように私は、正しい位置にあるリストビューを得ることができますか?

+0

uはeventlist.xmlコード – Sumant

+0

を置くことができ、これらのリストビューは.I完全なXMLコード – Arihant

答えて

1

あなたはおそらく、あなたが必要なもの後ろ向きリストに

を結果180度にそれを回転している360度に回転させることです。これにより、より多くの「スピニング」が得られます。

ローテーションリスト〜90になります。リストは90度回転している間は表示されず、リストを新しいものに置き換えることができます。その最後まで聞かず

Rotate3dAnimation rotation = new Rotate3dAnimation(270, 360, centerX, centerY, 60.0f, false); 

: はその後AnimationListener.onAnimationEnd()であなただけの270から360にリスト1つのより多くの時間をアニメーション化。

全onAnimationEnd:

public void onAnimationEnd(Animation animation) {  
    // RENDER YOUR NEW LIST HERE 

    final float centerX = mContainer.getWidth()/2.0f; 
     final float centerY = mContainer.getHeight()/2.0f; 

     Rotate3dAnimation rotation = new Rotate3dAnimation(270, 360, centerX, centerY, 60.0f, false); 

    rotation.setDuration(500); 
    rotation.setFillAfter(true); 
    rotation.setInterpolator(new AccelerateInterpolator()); 
    mContainer.startAnimation(rotation); 
} 
+0

を投稿することが困難を持っていますでframeLayoutで、完全にあなたの努力に感謝を知って働いています – Arihant

関連する問題