2013-01-11 12 views
5

Tôi có một PageTransfomer áp dụng cho ViewPager, nó hoạt động tốt nhưng tôi muốn khởi chạy chuyển đổi của trang ngay sau khi tôi đặt PageTransformer thành ViewPager. Tôi đã cố gắng:áp dụng PageTransformer cho PagerView càng sớm càng tốt

  • setCurrentItem (int)
  • setCurrentItem (int, true)
  • beginFakeDrag(), fakeDragBy (float), endFakeDrag()
  • vô hiệu()
  • getAdapter () .notifyDataSetChanged()

Tôi đã thử tất cả những điều này trong onCreate hoạt động của tôi nhưng có thể tôi đã sai.

Có ai có đầu mối không?

Cảm ơn

Trả lời

2

Hãy thử một trong những điều sau:

  1. Đặt mã trong onPostCreate()
  2. Đặt mã trong một handler; tức là new Handler().post(new Runnable() { /* your code */ });
+2

Cảm ơn nó hoạt động với Trình xử lý và startFakeDrag(), fakeDragBy (0f), endFakeDrag() – magiccyril

4

Dựa trên câu trả lời của Oleg được sử dụng mã bên dưới cho ứng dụng của tôi.

Ngoài ra của tôi là để kiểm tra kết quả trả về của beginFakeDrag() bên trong _invalidatePageTransformer.

tôi gọi sendInvalidatePageTransformer() từ bên

  • khi định hướng thay đổi
  • bên trong LoaderCallback<Cursor> -methods trong Fragment tôi

    private Handler handler = new Handler() 
    { 
         public void handleMessage(Message msg) 
         { 
           switch(msg.what) 
           { 
             case 0: 
               _invalidatePageTransformer(); 
               break; 
           } 
         } 
    }; 
    
    private void _invalidatePageTransformer() 
    { 
         //no need to invalidate if we have no adapter or no items 
         if (this.getAdapter() != null && this.getAdapter().getCount() > 0) 
         { 
           //import check here, only fakeDrag if "beginFakeDrag()" returns true 
           if (this.beginFakeDrag()) 
           { 
             this.fakeDragBy(0f); 
             this.endFakeDrag(); 
           } 
         } 
    } 
    
    public void sendInvalidatePageTransformer() 
    { 
         this.handler.sendEmptyMessage(0); 
    } 
    

EDIT: Lưu ý: Mã này nằm bên trong một lệnh om ViewPager-subclass