顶部轮播图(自动循环滚动)
来源:互联网 发布:专业数据分析团队介绍 编辑:程序博客网 时间:2024/06/05 17:01
1.MainActivity:
public class MainActivity extends Activity {private ViewPager viewPager;private TextView tv_title;private LinearLayout dot_layout;private ArrayList<Ad> list = new ArrayList<Ad>();// 使用handler实现自动循环滚动图片private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);if (isRunning) {handler.sendEmptyMessageDelayed(0, 5000);}};};private boolean isRunning = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initView();initListener();initData();}private void initView() {setContentView(R.layout.activity_main);viewPager = (ViewPager) findViewById(R.id.viewPager);tv_title = (TextView) findViewById(R.id.tv_title);dot_layout = (LinearLayout) findViewById(R.id.dot_layout);isRunning = true;handler.sendEmptyMessageDelayed(0, 2000);}private void initListener() {viewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {updateTitleAndDots();}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageScrollStateChanged(int arg0) {}});}private void initData() {list.add(new Ad(R.drawable.a, "巩俐不低俗,我们就不低俗"));list.add(new Ad(R.drawable.b, "朴树又回来了,再唱经典老歌引万人同唱"));list.add(new Ad(R.drawable.c, "揭秘北京电影如何升级"));list.add(new Ad(R.drawable.d, "乐视网TV版,大放送"));list.add(new Ad(R.drawable.e, "热血屌丝的反杀"));initDots();viewPager.setAdapter(new AdPagerAdapter());updateTitleAndDots();}/** * 初始化点 */private void initDots() {for (int i = 0; i < list.size(); i++) {View view = new View(this);LayoutParams params = new LayoutParams(15, 15);// 设置点的大小if (i != 0) {params.leftMargin = 10;}view.setLayoutParams(params);view.setBackgroundResource(R.drawable.selector_dot);dot_layout.addView(view);}}/** * 更新文本 */private void updateTitleAndDots() {int currentPager = viewPager.getCurrentItem() % list.size();tv_title.setText(list.get(currentPager).getTitle());for (int i = 0; i < dot_layout.getChildCount(); i++) {dot_layout.getChildAt(i).setEnabled(i == currentPager);}}private class AdPagerAdapter extends PagerAdapter {/** * 返回多少Pager */@Overridepublic int getCount() {return 100;}/** * true:表示不去创建,使用缓存 false:表示去重新创建 */@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}/** * 类似于BaseAdapter的getView方法, 用来将数据设置给view */@Overridepublic Object instantiateItem(ViewGroup container, int position) {View view = View.inflate(MainActivity.this, R.layout.adapter_ad, null);ImageView imaView = (ImageView) view.findViewById(R.id.image);Ad ad = list.get(position % list.size());// 对position取余,实现循环滑动imaView.setImageResource(ad.getResId());container.addView(view);// 将view加入到ViewPagerreturn view;}/** * 销毁pager position:当前要销毁的是第几个pager object:当前要销毁的pager */@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}}@Overrideprotected void onDestroy() {super.onDestroy();isRunning = false;// 停止自动轮播效果}}
2.数据bean,Ad.class
public class Ad {private int resId;private String title;public Ad(int resId, String title) {super();this.resId = resId;this.title = title;}public int getResId() {return resId;}public void setResId(int resId) {this.resId = resId;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}}3.activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="200dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignBottom="@id/viewPager" android:background="#88000000" android:orientation="vertical"> <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:gravity="center_horizontal" android:textSize="18sp" android:textColor="#ffffff" android:singleLine="true" android:ellipsize="end" android:text="我是文本"/> <LinearLayout android:id="@+id/dot_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="horizontal"> </LinearLayout> </LinearLayout></RelativeLayout>
4.adapter_ad.xml:
<?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" > <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitXY" android:src="@drawable/a" /></LinearLayout>
Demo地址:http://download.csdn.net/detail/qq_26323183/8807327
0 0
- 顶部轮播图(自动循环滚动)
- Android 自动滚动循环轮播图
- 滚动条自动回到顶部
- 循环自动滚动代码
- UIScrollView自动循环滚动
- 自动循环滚动textview
- 自动滚动到顶部jquery功能代码
- iOS uiscrollview 自动循环滚动
- android横向循环自动滚动
- AutoScrollViewPager 自动循环滚动viewpager
- iOS scrollView循环自动滚动
- Android 循环自动滚动广告
- iOS-自动循环滚动视图
- UIScrollView自动滚动 循环滚动视图实现
- 滚动视图的自动循环滚动
- UIScrollView实现循环滚动和自动滚动
- 无线循环的可自动滚动播放轮播图
- iOS UIScrollView滚动视图/无限循环滚动/自动滚动
- redis 基本的了解
- DuiLib : 修改内嵌网页的安全选项
- redis 学习笔记(2)-client端示例代码
- Java并发编程基础构建模块(04)——线程阻塞与中断
- 6800与8080
- 顶部轮播图(自动循环滚动)
- 【HDU 1269】迷宫城堡
- linux 编译进内核 && 编译成模块module
- Servlet--ServletInputStream类,ServletOutputStream类
- Android如何自定义一个View(一)
- 图片压缩之PNG
- redis 学习笔记(3)-master/slave(主/从模式)
- 图像处理和图像识别中常用的OpenCV函数
- 更改git远程仓库