android 輪播圖AutoScrollViewPager展示網路圖片
阿新 • • 發佈:2018-12-09
1.匯入需要使用的包
compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
2.寫2個需要使用的檔案
第一個檔案 public class AutoScrollPagerFragment extends Fragment { private String[] imgs = {"http://h.hiphotos.baidu.com/image/w%3D1920%3Bcrop%3D0%2C0%2C1920%2C1080/sign=fed1392e952bd40742c7d7f449b9a532/e4dde71190ef76c6501a5c2d9f16fdfaae5167e8.jpg", "http://a.hiphotos.baidu.com/image/w%3D1920%3Bcrop%3D0%2C0%2C1920%2C1080/sign=25d477ebe51190ef01fb96d6fc2ba675/503d269759ee3d6df51a20cd41166d224e4adedc.jpg", "http://c.hiphotos.baidu.com/image/w%3D1920%3Bcrop%3D0%2C0%2C1920%2C1080/sign=70d2b81e60d0f703e6b291d53aca6a5e/0ff41bd5ad6eddc4ab1b5af23bdbb6fd5266333f.jpg"}; private String[] titles = {"Page 1", "Page 2", "Page 3"}; private DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true) .cacheOnDisk(true).imageScaleType(ImageScaleType.IN_SAMPLE_INT).build(); private Toast toast; public AutoScrollPagerFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_auto_scroll_pager, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); AutoScrollViewPager pager = (AutoScrollViewPager) getView().findViewById(R.id.scroll_pager); final TextView title = (TextView) getView().findViewById(R.id.title); CirclePageIndicator indicator = (CirclePageIndicator) getView().findViewById(R.id.indicator); pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int i) { title.setText(titles[i]); } }); pager.setAdapter(new PagerAdapter() { @Override public int getCount() { return imgs.length; } @Override public boolean isViewFromObject(View view, Object o) { return view == o; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView view = new ImageView(container.getContext()); view.setScaleType(ImageView.ScaleType.CENTER_CROP); ImageLoader.getInstance().displayImage(imgs[position], view, options); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }); indicator.setViewPager(pager); indicator.setSnap(true); pager.setScrollFactor(5); pager.setOffscreenPageLimit(4); pager.startAutoScroll(2000); pager.setOnPageClickListener(new AutoScrollViewPager.OnPageClickListener() { @Override public void onPageClick(AutoScrollViewPager autoScrollPager, int position) { if (toast != null) { toast.cancel(); } toast = Toast.makeText(getActivity(), "You clicked page: " + (position + 1), Toast.LENGTH_SHORT); toast.show(); } }); } }
第二個檔案
public class TextFragment extends Fragment { private static final String ARG_PARAM1 = "param1"; private String mParam1; public static TextFragment newInstance(String param1) { TextFragment fragment = new TextFragment(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); fragment.setArguments(args); return fragment; } public TextFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_text, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); TextView tv = (TextView) getView().findViewById(R.id.text); tv.setText(mParam1); } }
3.在需要展示的頁面寫入如下程式碼
public class MyActivity extends AppCompatActivity { private ViewPager contentPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(configuration); contentPager = findViewById(R.id.pager); contentPager.setOffscreenPageLimit(2); contentPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int i) { if (i == 0) { return new AutoScrollPagerFragment(); } return TextFragment.newInstance("Fragment " + i); } @Override public int getCount() { return 3; } }); } }
ps: 啟動ViewPager自動滾動
startAutoScroll() 啟動自動滾動
stopAutoScroll() 停止自動滾動
設定
setInterval(long) 設定自動滾動的間隔時間,單位為毫秒
setDirection(int) 設定自動滾動的方向,預設向右
setCycle(boolean) 是否自動迴圈輪播,預設為true
setScrollDurationFactor(double) 設定ViewPager滑動動畫間隔時間的倍率,達到減慢動畫或改變動畫速度的效果
setStopScrollWhenTouch(boolean) 當手指碰到ViewPager時是否停止自動滾動,預設為true
setSlideBorderMode(int) 滑動到第一個或最後一個Item的處理方式,支援沒有任何操作、輪播以及傳遞到父View三種模式
setBorderAnimation(boolean) 設定迴圈滾動時滑動到從邊緣滾動到下一個是否需要動畫,預設為true