ViewPager翻页,下标,循环播放
来源:互联网 发布:互联网大数据优点 编辑:程序博客网 时间:2024/04/30 23:25
package com.example.viewpagerdemo2;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends Activity implements OnPageChangeListener{ private ViewPager viewPager; private List<ImageView> list; private LinearLayout layout; private TextView tv; private String[] strs; private int privious; private boolean isLoop=false; private Handler handler=new Handler(){ public void handleMessage(Message msg) { if(msg.what==0){ viewPager.setCurrentItem(viewPager.getCurrentItem()+1); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化视图 initView(); //初始化数据 initDatas(); //初始化适配器,控制层 initAdapter(); //循环播放 loopPlay(); } private void loopPlay() { isLoop=true; new Thread(){ public void run() { try { while(isLoop){ Thread.sleep(2000); Message msg=Message.obtain(); msg.what=0; handler.sendMessage(msg); Log.d("PAGER", "viewPagernum"+viewPager.getCurrentItem()); } } catch (InterruptedException e) { e.printStackTrace(); } }; }.start(); } private void initView() { viewPager = (ViewPager) findViewById(R.id.viewpager); tv = (TextView) findViewById(R.id.tv); } private void initDatas() { //初始化ViewPager需要的图片数组和TextView数据数据 int[] images=new int[]{R.drawable.num_one,R.drawable.num_two,R.drawable.num_three ,R.drawable.num_four,R.drawable.num_five}; strs = new String[]{"第一页","第二页","第三页","第四页","第五页"}; //把VipewPager中需要的图片用ImageView创建,然后添加到list集合中。 ImageView imageView; list = new ArrayList<ImageView>(); for(int i=0;i<images.length;i++){ imageView=new ImageView(this); imageView.setBackgroundResource(images[i]); list.add(imageView); //创建下标小白点,然后用LinearLayout作为父容器,把5个小白点加进去 View view=new View(this); view.setBackgroundResource(R.drawable.shape_point_disable); LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(5, 5); if(i!=0){ lp.leftMargin=10; } layout = (LinearLayout) findViewById(R.id.layout_point); layout.addView(view,lp); } } private void initAdapter() { //设置小白点的默认位置0是选中状态的白点。 layout.getChildAt(0).setBackgroundResource(R.drawable.shape_point_enable); tv.setText("第一页"); viewPager.setAdapter(new MyPagerAdapter()); //设置监听 viewPager.setOnPageChangeListener(this); //把当前位置放在一个可靠的位置,如果从0开始的话,一开始就不能向左滑动了 viewPager.setCurrentItem(1000000); } class MyPagerAdapter extends PagerAdapter{ //设置最大值, @Override public int getCount() { // TODO Auto-generated method stub return Integer.MAX_VALUE; } //默认写法,判断是否复用。 @Override public boolean isViewFromObject(View view, Object obj) { // TODO Auto-generated method stub return view==obj; } //初始化条目 //container:父容器 //position:当前位置 @Override public Object instantiateItem(ViewGroup container, int position) { int num=position%list.size(); ImageView imageView=list.get(num); container.addView(imageView); return imageView; } //销毁条目 //container:父容器 //object:代表当前的View对象,如果需要销毁的话,就调用父容器的removeView()方法销毁这个object对象。 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); } } //以下三个是ViewPager的onPageChangedListener监听需要实现的方法。 //这个方法是滑动状态改变时调用,当手指点击和松开屏幕的时候都会调用 @Override public void onPageScrollStateChanged(int arg0) { } //滚动的时候调用,从开始滑动到结束滑动一直被多次调用,中间会夹杂着反弹动画期间也会被调用 @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } //ViewPager翻页结束,页面稳定之后被调用 @Override public void onPageSelected(int position) { int num=position%list.size(); tv.setText(strs[num]); layout.getChildAt(num).setBackgroundResource(R.drawable.shape_point_enable); layout.getChildAt(privious).setBackgroundResource(R.drawable.shape_point_disable); privious=num; } //之前死循环中的标识,别忘记在Activity销毁后跟着销毁,否则之前的死循环会一直循环下去。 @Override protected void onDestroy() { isLoop=false; super.onDestroy(); }}
0 0
- ViewPager翻页,下标,循环播放
- ViewPager自动循环播放
- ViewPager自动循环播放
- ViewPager 循环播放广告
- Android ViewPager自动循环播放
- ViewPager 无限循环 + 周期播放
- ViewPager添加圆点,循环翻页。fragment的使用
- 带指示器的ViewPager循环翻页的实现
- LoopViewPager可以循环播放的ViewPager
- ViewPager左右滑动,自动循环播放
- ViewPager循环滑动及自动播放
- ViewPager无限循环滑动+自动播放
- 用viewPager实现简易循环播放页
- ViewPager实现简单的循环播放
- android 自定义viewPager 下标
- ViewPager禁止滑动翻页
- ViewPager禁止滑动翻页
- ViewPager禁止滑动翻页
- [C#]六十甲子纳音 v2.0 By:LESLIE
- UIApplication对象会将事件从队列顶部取出
- 面试 最详细的Nginx学习教程
- JavaScript权威指南笔记之数组方法
- 《电磁兼容设计》0
- ViewPager翻页,下标,循环播放
- 管道
- Codeforces Round #258 (Div. 2)-D. Count Good Substrings
- 图片读取整理
- [C#]六十甲子纳音WM版 v2.1 By:LESLIE
- 161022
- 论文的发表流程、会议的组织流程
- C++程序中调用exe可执行文件
- 用管道写守护进程