2012-05-01 42 views
5

Rất tiếc, tiêu đề không đủ rõ ràng. Tôi không biết làm thế nào để thể hiện nó, nhưng hình ảnh ở đây nói lên tất cả.Trong Android, khi vuốt để thay đổi màn hình cách hiển thị hoạt ảnh với cả hai màn hình

Trong ứng dụng Google Reader, nếu sử dụng vuốt sang trái hoặc phải trên bài đăng hiện tại, họ sẽ thấy bài đăng đầu tiên di chuyển khi bài đăng thứ hai chuyển vào. Đó là một hiệu ứng tuyệt vời, nhưng tôi không biết cách triển khai nó.

Bất kỳ ý tưởng nào?

enter image description here

Trả lời

1
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#a4c639" 
android:orientation="vertical" > 

<android.support.v4.view.ViewPager 
    android:id="@+id/awesomepager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

</LinearLayout> 





public class ReadRawActivity extends Activity { 

    private ViewPager awesomePager; 
    private static int NUM_AWESOME_VIEWS = 3; 
    private static Context cxt; 
    private AwesomePagerAdapter awesomeAdapter; 

    /** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    cxt = ReadRawActivity.this; 

    awesomeAdapter = new AwesomePagerAdapter(); 
    awesomePager = (ViewPager) findViewById(R.id.awesomepager); 
    awesomePager.setAdapter(awesomeAdapter); 
} 

private class AwesomePagerAdapter extends PagerAdapter{ 




      @Override 
      public int getCount() { 
        return NUM_AWESOME_VIEWS; 
      } 

     /** 
     * Create the page for the given position. The adapter is responsible 
     * for adding the view to the container given here, although it only 
     * must ensure this is done by the time it returns from 
     * {@link #finishUpdate()}. 
     * 
     * @param container The containing View in which the page will be shown. 
     * @param position The page position to be instantiated. 
     * @return Returns an Object representing the new page. This does not 
     * need to be a View, but can be some other container of the page. 
     */ 
      @Override 
      public Object instantiateItem(View collection, int position) { 
        TextView tv = new TextView(cxt); 
        tv.setText("View Pager" + position); 
        tv.setTextColor(Color.WHITE); 
        tv.setTextSize(30); 

        ((ViewPager) collection).addView(tv,0); 

        return tv; 
      } 

     /** 
     * Remove a page for the given position. The adapter is responsible 
     * for removing the view from its container, although it only must ensure 
     * this is done by the time it returns from {@link #finishUpdate()}. 
     * 
     * @param container The containing View from which the page will be removed. 
     * @param position The page position to be removed. 
     * @param object The same object that was returned by 
     * {@link #instantiateItem(View, int)}. 
     */ 
      @Override 
      public void destroyItem(View collection, int position, Object view) { 
        ((ViewPager) collection).removeView((TextView) view); 
      } 



      @Override 
      public boolean isViewFromObject(View view, Object object) { 
        return view==((TextView)object); 
      } 


     /** 
     * Called when the a change in the shown pages has been completed. At this 
     * point you must ensure that all of the pages have actually been added or 
     * removed from the container as appropriate. 
     * @param container The containing View which is displaying this adapter's 
     * page views. 
     */ 
      @Override 
      public void finishUpdate(View arg0) {} 


      @Override 
      public void restoreState(Parcelable arg0, ClassLoader arg1) {} 

      @Override 
      public Parcelable saveState() { 
        return null; 
      } 

      @Override 
      public void startUpdate(View arg0) {} 

} 


} 
Các vấn đề liên quan