package com.example.peng.fuxiqi; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import java.util.ArrayList;import java.util.List;
public class MainActivity extends AppCompatActivity implements Handler.Callback, View.OnTouchListener { private ViewPager mViewPager; private List<ImageView> list; private MyAdapter adapter; private int[] imgarray=new int[]{R.mipmap.txt_theme29,R.mipmap.txt_theme17,R.mipmap.txt_theme26,R.mipmap.txt_theme29,R.mipmap.txt_theme17}; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mViewPager = (ViewPager) findViewById(R.id.viewpager_main); initData(); adapter=new MyAdapter(); mViewPager.setAdapter(adapter); handler=new Handler(this); initTime(); setListener(); mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { if (list.size()>1){ if (position<1){ position=list.size()-2; mViewPager.setCurrentItem(position,false); }else if (position>(list.size()-2)){ mViewPager.setCurrentItem(1,false); position=1; } } } @Override public void onPageScrollStateChanged(int state) { } }); } private void setListener() { mViewPager.setOnTouchListener(this); } private void initTime() { handler.sendEmptyMessage(0); } private void initData() { list=new ArrayList<>(); for (int i = 0; i <imgarray.length ; i++) { ImageView img=new ImageView(MainActivity.this); img.setImageResource(imgarray[i]); list.add(img); } } @Override public boolean handleMessage(Message msg) { mViewPager.setCurrentItem(mViewPager.getCurrentItem()+1); handler.sendEmptyMessageDelayed(0,3000); return false; } //触摸时handler移除发送消息,抬起时发送消息 @Override public boolean onTouch(View v, MotionEvent event) { handler.removeMessages(0); if (event.getAction()==MotionEvent.ACTION_UP){ handler.sendEmptyMessageDelayed(0,3000); } return false; } //适配器 public class MyAdapter extends PagerAdapter{ @Override public int getCount() { return list.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(list.get(position)); return list.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(list.get(position)); } } }
ViewPager+Handler实现轮播加手势滑动
最新推荐文章于 2020-09-06 11:12:10 发布