Tôi đang cố gắng triển khai ViewPager đơn giản với một số hình động trên VectorDrawable.
Làm theo giải pháp this very good example để cuộn tab đẹp bằng chuyển đổi dấu chấm.ViewPager với TabLayout vấn đề với AnimatedVectorDrawable
Điểm khác biệt duy nhất là tôi đang sử dụng hoạt ảnh vector. Là một hoạt động, nó hoạt động như một sự quyến rũ, với ViewPager được thêm vào, hoạt ảnh là không phải bắt đầu nhất quán.
compileSdkVersion 25
buildToolsVersion "26.0.2"
targetSdkVersion 25
tôi gỡ lỗi trên điện thoại của tôi (SG7), tôi đặt break-điểm trên animation.start()
- trên màn hình trung bình, phá vỡ điểm không phải luôn luôn gọi
- thường xuyên hơn trên màn hình 1 & 3, hoạt ảnh không được kích hoạt
- khi nhảy bằng dấu chấm, giữa 1 & 3 hoạt ảnh luôn được kích hoạt! nhưng không phải khi làm 1-2 hoặc 2-3 !!
Tất cả điều này đang hoạt động trên một VectorDrawable lớn với 3 nhóm hoạt ảnh.
2 chú thích trượt khi bắt đầu, và sau đó là quay lăn vô hạn, quay luôn hoạt động.
Hoạt động
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mHideHandler.post(mHidePart2Runnable);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabDots);
tabLayout.setupWithViewPager(mViewPager, true);
};
Fragment:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
tĩnh Fragment
public static class PlaceholderFragment extends Fragment {
/**
* The fragment argument representing the section number for this
* fragment.
*/
private static final String ARG_SECTION_NUMBER = "section_number";
public PlaceholderFragment() {
}
/**
* Returns a new instance of this fragment for the given section
* number.
*/
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_fullscreen, container, false);
View imgView = rootView.findViewById(R.id.vec_anim);
Drawable drawable = ((ImageView)imgView).getDrawable();
if (drawable instanceof Animatable) {
((Animatable) drawable).start();
};
return rootView;
}
Tôi mới đến tất cả điều này, muốn cấu tác động của kích thước SVG về hiệu suất (suy nghĩ về caching caching svgs và kích hoạt hình ảnh động khi tạo view có thể ...) và tôi đang cố gắng tối ưu hóa nó tất cả nd làm cho nó mịn. Nhưng trước hết, nó không hoạt động đúng.
Tại sao điểm ngắt không phải lúc nào cũng được truy cập khi hoán đổi trang?
Có cách nào tốt hơn để thực hiện việc này không?
Bạn có thể vui lòng đăng 'R.layout.activity_fullscreen' (có chứa' AnimatedVectorDrawable', bên phải) và 'Runnable' của bạn được không? – kalabalik
Tất cả những gì tôi cần trong trường hợp này là 'setUserVisibleHint (bool)' tìm thấy nó trong chủ đề này: [link] (https://stackoverflow.com/questions/10024739/how-to-determine-when-fragment-becomes-visible -in-viewpager? noredirect = 1 & lq = 1) – bua
Nếu không có XML được đăng, chúng ta phải biết như thế nào? – kalabalik