您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何解決Android ViewPager自定義輪播圖播放沖突”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“如何解決Android ViewPager自定義輪播圖播放沖突”吧!
一定要將ArrayList集合&Handler機(jī)制傳到適配器,否則無(wú)法完成展示,也解決不了滑動(dòng)沖突,代碼有點(diǎn)多,但是它通俗易懂啊
layout布局內(nèi)寫法:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/pager01" android:layout_width="match_parent" android:layout_height="300dp" /> <RadioGroup android:id="@+id/radioGroup" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > </RadioGroup> </LinearLayout>
Activity內(nèi)寫法:
public class Frag_01 extends Fragment { private RadioGroup radioGroup; private ViewPager pager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag_01, container, false); // 找Viewpager控件 radioGroup = (RadioGroup) view.findViewById(R.id.radioGroup); pager = (ViewPager) view.findViewById(R.id.pager01); // 圖片數(shù)據(jù)自擬-->drawable文件夾下 int arr[] = { R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4, R.drawable.a5 }; final ArrayList<ImageView> list = new ArrayList<ImageView>(); for (int i = 0; i < arr.length; i++) { ImageView imageView = new ImageView(getActivity()); imageView.setImageResource(arr[i]); list.add(imageView); // 生成小圓點(diǎn) RadioButton radioButton = new RadioButton(getActivity()); radioGroup.addView(radioButton); } // 默認(rèn)選中第一個(gè) radioGroup.check(radioGroup.getChildAt(0).getId()); // 適配器 pager.setAdapter(new MyPagerAdapter(list, handler)); // 頁(yè)面切換監(jiān)聽 pager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { //根據(jù)頁(yè)面索引控制小圓點(diǎn)切換 arg0 %= list.size(); radioGroup.check(radioGroup.getChildAt(arg0).getId()); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); //handler發(fā)送消息 handler.sendEmptyMessageDelayed(0, 3000); return view; } //Handler機(jī)制----------------------------------------- Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case 0: //獲取到下一頁(yè)的條目--->賦值給當(dāng)前條目 int currentItem = pager.getCurrentItem() + 1; pager.setCurrentItem(currentItem); handler.sendEmptyMessageDelayed(0, 3000); break; default: break; } }; }; }
PagerAdapter適配器的寫法:(內(nèi)含滑動(dòng)沖突解決方案)
public class MyPagerAdapter extends PagerAdapter { private ArrayList<ImageView> list; private Handler handler; //構(gòu)造 public MyPagerAdapter(ArrayList<ImageView> list, Handler handler) { super(); this.list = list; this.handler = handler; } @Override public int getCount() { // 設(shè)置最大值 return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { //當(dāng)前視圖和新加載視圖判斷-->為真才能去銷毀 return arg0 == arg1; } // 添加視圖 // ----該方法內(nèi)包含滑動(dòng)沖突---- @Override public Object instantiateItem(ViewGroup container, int position) { position %= list.size(); ImageView imageView = list.get(position); imageView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // 獲取事件 int action = event.getAction(); switch (action) { case MotionEvent.ACTION_MOVE:// 滑動(dòng) handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_DOWN:// 按下 handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_CANCEL:// 非人為操作 handler.sendEmptyMessageDelayed(0, 3000); break; case MotionEvent.ACTION_UP:// 抬起 handler.sendEmptyMessageDelayed(0, 3000); break; } return true; } }); //獲取的圖片存進(jìn)容器 container.addView(imageView); return imageView; } // 銷毀視圖 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }
感謝各位的閱讀,以上就是“如何解決Android ViewPager自定義輪播圖播放沖突”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)如何解決Android ViewPager自定義輪播圖播放沖突這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。