2012-04-05 54 views
9

Tôi đã có một Activity được tạo bởi XML, tôi đã đặt nền của nó thành hình nền mà tôi có trong thư mục có thể kéo.Các vấn đề về hiệu suất của ViewPager trên Android khi sử dụng nền

Trong cùng một hoạt động tôi đã tạo ViewPager để cho phép vuốt qua lại giữa các chế độ xem. Tất cả các chế độ xem bên trong ViewPager chứa một hình ảnh.

Bất cứ khi nào tôi vuốt sang trái hoặc phải, quá trình chuyển đổi rất chậm.

Tôi đã thử xóa hình nền bằng cách đặt hình ảnh thành màu trắng (#fff) và tất cả độ trễ đã biến mất. Nó hoạt động hoàn hảo! Vấn đề là tôi cần nền tảng đó cho ứng dụng.

Có cách nào để tối ưu hóa hình nền hoặc thứ gì đó để việc vuốt sẽ diễn ra suôn sẻ trở lại? Hiện tại, nó quá bực bội khi sử dụng vì độ trễ.

Tôi cũng đã thử cắt hình ảnh thành một kích thước nhỏ và sau đó chỉ kéo dài nó trên màn hình, nhưng tôi không nhận thấy bất kỳ cải tiến hiệu suất nào. Ngoài ra nó không phải là lỗi hình ảnh được đặt trong ViewPager, khi tôi thử nghiệm nó với TextViews thay vì có sự chậm trễ tương tự.

Trả lời

16

Tôi đã tự mình tìm ra sau khi một số tìm kiếm, tôi sẽ để lại câu trả lời ở đây cho bất kỳ ai khác gặp phải sự cố này.

Dường như Android có nhiều sự cố khi hiển thị nền khi hình ảnh được kéo dài. Ít nhất trên Galaxy Tab 10.1 chạy Android 3.2 nó.

Hình nền tôi đang sử dụng là hình ảnh sàn gỗ, vì đó là mẫu của cùng một tấm ván lặp lại chính tôi đã cắt hình ảnh từ 1440 x 1050 xuống còn khoảng 350x500. Khi sử dụng hình ảnh này làm nền trong khi kéo dài trên toàn bộ màn hình, có một hiệu suất giảm rất lớn. Tuy nhiên, khi hiển thị như một hình ảnh ở góc trên cùng bên trái, nó hoạt động tốt.

Sử dụng phương pháp được mô tả here Tôi đã quản lý để lặp lại hình ảnh trên toàn bộ màn hình thay vì kéo dài nó. Đáng ngạc nhiên là đủ, tôi nhận thấy hoàn toàn không có thêm căng thẳng và quá trình chuyển đổi diễn ra rất suôn sẻ.

Vì vậy, ở đây, hy vọng điều này sẽ giúp những người khác ở đó với cùng một vấn đề về hiệu suất!

14

Một giải pháp khác trong những năm sau: Bạn phải đặt bản vẽ của mình vào các thư mục thích hợp. Tôi đã có background.png của tôi trong thư mục drawable và nó tụt lại bởi vì nó đấu tranh với streching. Tôi không thể sử dụng lặp lại được vì tôi không có kiểu mẫu trên điện thoại của mình.

Nhưng khi tôi đặt nền có thể vẽ của mình trong drawable-xhdpi, hoạt động mà không bị trễ. Vì vậy, để tham khảo trong tương lai của nó cũng possbile rằng điều này có thể giải quyết vấn đề của bạn. Từ chối câu hỏi này giải quyết chính nó: ViewPager really slow on Samsung S4

+0

Điều này thật tuyệt vời, tôi gặp sự cố với Moto X của mình và chỉ bằng cách đối phó với các bản vẽ có thể draw-xhdpi đã giải quyết được vấn đề! – marcwjj

2

Thủ thuật này giúp tôi rất nhiều khi vuốt bằng máy nhắn tin. Nó dựa trên tăng tốc phần cứng.

 viewPager.setOnPageChangeListener(new OnPageChangeListener() { 
       @Override 
       public void onPageScrollStateChanged(int scrollState) { 
        if (scrollState != ViewPager.SCROLL_STATE_IDLE) { 
         final int childCount = viewPager.getChildCount(); 
         for (int i = 0; i < childCount; i++) 
          viewPager.getChildAt(i).setLayerType(View.LAYER_TYPE_NONE, null); 
        } 
       } 

      .... 
}); 

Hy vọng điều đó sẽ hữu ích.

+0

Cảm ơn! rất nhiều người, –

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