VP无限轮播
来源:互联网 发布:青色的数据 编辑:程序博客网 时间:2024/04/29 13:48
public class MainActivity extends Activity { private ViewPager viewPager; private MyAdapter adapter; private List<View> viewList; private LayoutInflater layoutInflater; private LinearLayout layout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager=(ViewPager) findViewById(R.id.viewpager); layout=(LinearLayout) findViewById(R.id.linearlayout); initView(); //发送消息 myHandler.sendEmptyMessage(1); }/** * 初始化视图 */ public void initView() { viewList=new ArrayList<View>(); layoutInflater=LayoutInflater.from(MainActivity.this); View view1=layoutInflater.inflate(R.layout.item, null); view1.setBackgroundResource(R.drawable.meinv1); View view2=layoutInflater.inflate(R.layout.item, null); view2.setBackgroundResource(R.drawable.meinv2); View view3=layoutInflater.inflate(R.layout.item, null); view3.setBackgroundResource(R.drawable.meinv3); View view4=layoutInflater.inflate(R.layout.item, null); view4.setBackgroundResource(R.drawable.meinv4); viewList.add(view1); viewList.add(view2); viewList.add(view3); viewList.add(view4); adapter=new MyAdapter(viewList); viewPager.setAdapter(adapter); viewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub //将arg0换算到viewList的索引范围之内 int position=arg0%viewList.size(); //遍历所有的点对应的ImageView ,判断点的索引是否跟ViewPager当前的索引一致 for(int i=0;i<layout.getChildCount();i++){ ImageView imageView=(ImageView) layout.getChildAt(i); if(i==position){ imageView.setSelected(true); }else{ imageView.setSelected(false); } } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); //添加下面的圆点 for(int i=0;i<viewList.size();i++){ //动态实例化ImageView对象,添加到LinearLayout里面 ImageView imageView=new ImageView(MainActivity.this); //手动代码设置间距 LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(5, 0, 5, 0); //将当前属性设置给ImageView imageView.setLayoutParams(params); //给ImageView设置显示资源 imageView.setBackgroundResource(R.drawable.item_selector); //将ImageView添加到LinearLayout里面 layout.addView(imageView); //设置默认选中第一个 if(i==0){ imageView.setSelected(true); } } }/** * 更新显示UI */ public Handler myHandler =new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch(msg.what){ case 1: //获得ViewPager当前索引 int index=viewPager.getCurrentItem(); //当前页卡索引加1 //设置当前显示页卡 viewPager.setCurrentItem(index+=1); //延迟发送消息,调用自己 myHandler.sendEmptyMessageDelayed(1, 2000); break; } } };}
public class MyAdapter extends PagerAdapter{ List<View> mList; public MyAdapter(List<View> list){ mList=list; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub //将索引控制在mList索引范围之内 position=position%mList.size(); container.removeView(mList.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { //将索引控制在mList范围之内 position=position%mList.size(); // TODO Auto-generated method stub container.addView(mList.get(position)); return mList.get(position); } @Override public int getCount() { // TODO Auto-generated method stub return Integer.MAX_VALUE;//最大的整数值 } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; }}
//XML布局
<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" > </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/linearlayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" > </LinearLayout>
//小圆点样式
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/over_select" android:state_selected="true"></item> <item android:drawable="@drawable/over_normal" android:state_selected="false"></item> </selector>
//选中
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!-- 描边 --> <stroke android:color="#ffffff" android:width="1dp"/> <!-- 填充 --> <solid android:color="#ff0000"/> <size android:width="10dp" android:height="10dp"/></shape>
//空白
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <!-- 描边 --> <stroke android:color="#ffffff" android:width="1dp"/> <!-- 填充 --> <solid android:color="#000000"/> <size android:width="10dp" android:height="10dp"/></shape>
0 0
- VP无限轮播
- viewpager无限轮播
- 无限轮播加点
- Viewpager无限轮播
- 无限轮播
- 图片无限轮播
- 无限轮播
- Viewpager无限轮播
- ViewPager无限轮播
- 无限轮播
- 无限轮播
- 无限轮播
- 无限轮播
- ViewPager无限轮播
- 无限轮播
- ViewPager无限轮播
- 无限轮播
- 无限轮播
- 系统调用、POSIX、C库、系统命令和内核函数
- java异常处理
- Restore IP Addresses
- linux基础教程:文件系统和磁盘
- 大部分人都会做错的经典JS闭包面试题
- VP无限轮播
- 1012 数字分类
- 【Consul】Consul实践指导-telemetry
- 面向对象设计原则
- 浙大PAT甲级 1063
- 技术的正宗与野路子
- 深入剖析angular-ui-router插件
- Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
- ios之录音+播放