广告自动轮播(完美解决人为滑动后按顺序自动轮播)

在手机客户端上,广告的循环播放很是常见,在网上也看过一些Demo,,好多写的不是太完整,人为不干预的情况下确实是按照顺序轮播,但是人为去滑动后,接下来的自动轮播不是按滑动后的currentposition播放的,而是按照手动滑动前position的位置跳跃播放的。闲暇之余,把这个问题简单的解决了一下,为后来者提供一些思路。

=======================================================================================================

版权所有,如需转载请标明出处:

=======================================================================================================

public class MainActivity extends Activity implements OnPageChangeListener{private ViewPager mViewPager;private FoucsAdapter mFoucsAdapter;private ArrayList<View> mFocusViewList;private int mCurrentItem;private boolean isRun;private boolean nowAction;//轮播定时器private ScheduledExecutorService mScheduledExecutorService;private int[] image=new int[]{R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {mViewPager.setCurrentItem(mCurrentItem);};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mViewPager=(ViewPager) findViewById(R.id.electricity_viewPager);mViewPager.setOnPageChangeListener(this);mFoucsAdapter = new FoucsAdapter(getApplicationContext());mViewPager.setAdapter(mFoucsAdapter);mFocusViewList = new ArrayList<View>();for (int i = 0; i < 5 ; i++) {View view = this.getLayoutInflater().inflate(R.layout.electricity_focus_item,null);TextView focusIndex = (TextView)view.findViewById(R.id.electricity_focusIndex);ImageView focusImage = (ImageView)view.findViewById(R.id.electricity_focusImage);focusIndex.setText(i+1+"/"+5);focusImage.setBackgroundResource(image[i]);mFocusViewList.add(view);}mFoucsAdapter.setList(mFocusViewList);handler.postDelayed(new Runnable() {@Override public void run() { //mScrollView.scrollTo(0,0); if(!isRun){ if(mScheduledExecutorService != null){ mScheduledExecutorService.scheduleAtFixedRate(new ScrollTask(), 0, 3, TimeUnit.SECONDS); } } } },500);}@Overrideprotected void onStart() {super.onStart();mScheduledExecutorService = Executors.newSingleThreadScheduledExecutor();}@Overrideprotected void onStop() {super.onStop();if(mScheduledExecutorService!=null){mScheduledExecutorService.shutdown();}}private class ScrollTask implements Runnable {public void run() {synchronized (mViewPager) { if (!nowAction) { mCurrentItem = mCurrentItem+1; handler.obtainMessage().sendToTarget(); } }}}@Overridepublic void onPageScrolled(int position, float positionOffset,int positionOffsetPixels) {}@Override public void onPageSelected(int position) { mCurrentItem = position; } @Override public void onPageScrollStateChanged(int state) { if (state == 0) { nowAction = false; } if (state == 1) { nowAction = true; } }}

===========================================================================================

<RelativeLayout xmlns:android="" xmlns:tools="" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.adscirledemo.MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/electricity_viewPager" android:layout_width="match_parent" android:layout_height="150dp" android:background="#ffffff" /></RelativeLayout>

============================================================================================

穿过紫堇,穿过木棉,穿过时影时现的悲喜和无常。

广告自动轮播(完美解决人为滑动后按顺序自动轮播)

相关文章:

你感兴趣的文章:

标签云: