博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
viewpage广告条的制作
阅读量:6844 次
发布时间:2019-06-26

本文共 6243 字,大约阅读时间需要 20 分钟。

 

1 package com.itheima27.viewpagerdemo;  2   3 import java.util.ArrayList;  4 import java.util.List;  5   6 import android.app.Activity;  7 import android.os.Bundle;  8 import android.os.SystemClock;  9 import android.support.v4.view.PagerAdapter; 10 import android.support.v4.view.ViewPager; 11 import android.support.v4.view.ViewPager.OnPageChangeListener; 12 import android.view.View; 13 import android.view.ViewGroup; 14 import android.widget.ImageView; 15 import android.widget.LinearLayout; 16 import android.widget.LinearLayout.LayoutParams; 17 import android.widget.TextView; 18  19 public class MainActivity extends Activity implements OnPageChangeListener { 20  21     private List
imageViewList; 22 private TextView tvDescription; 23 private LinearLayout llPointGroup; 24 private int previousEnabledPosition = 0; // 前一个被选中的"点"的索引, 默认情况下: 0 25 26 private String[] imageDescriptionArray = { 27 "巩俐不低俗,我就不能低俗", 28 "扑树又回来啦!再唱经典老歌引万人大合唱", 29 "揭秘北京电影如何升级", 30 "乐视网TV版大派送", 31 "热血屌丝的反杀" 32 }; 33 private ViewPager mViewPager; 34 35 private boolean isStop = false; // 是否停止子线程, 不会停止 36 37 38 @Override 39 protected void onDestroy() { 40 isStop = true; 41 super.onDestroy(); 42 } 43 44 @Override 45 protected void onCreate(Bundle savedInstanceState) { 46 super.onCreate(savedInstanceState); 47 setContentView(R.layout.activity_main); 48 49 init(); 50 51 // 开启线程无限自动移动 52 Thread mThread = new Thread(new Runnable() { 53 @Override 54 public void run() { 55 while(!isStop) { 56 // 每隔2秒钟, 发送一条消息到主线程, 更新viewpager的界面 57 SystemClock.sleep(2000); 58 59 runOnUiThread(new Runnable() { 60 @Override 61 public void run() { 62 // 此方法是在主线程中执行 63 mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1); 64 } 65 }); 66 } 67 } 68 }); 69 mThread.start(); 70 } 71 72 private void init() { 73 mViewPager = (ViewPager) findViewById(R.id.viewpager); 74 llPointGroup = (LinearLayout) findViewById(R.id.ll_point_group); 75 tvDescription = (TextView) findViewById(R.id.tv_image_description); 76 77 imageViewList = new ArrayList
(); 78 79 int[] imageResIDs = { 80 R.drawable.a, 81 R.drawable.b, 82 R.drawable.c, 83 R.drawable.d, 84 R.drawable.e 85 }; 86 87 ImageView iv; 88 View view; 89 LayoutParams params; 90 for (int id : imageResIDs) { 91 iv = new ImageView(this); 92 iv.setBackgroundResource(id); 93 imageViewList.add(iv); 94 95 96 // 每循环一次, 添加一个点到Linearlayout中 97 view = new View(this); 98 view.setBackgroundResource(R.drawable.point_background); 99 params = new LayoutParams(5, 5);100 params.leftMargin = 5;101 view.setEnabled(false);102 view.setLayoutParams(params);103 104 llPointGroup.addView(view); // 向线性布局中添加"点"105 }106 107 mViewPager.setAdapter(new MyAdapter());108 mViewPager.setOnPageChangeListener(this);109 110 // 初始化图片描述, 和哪一个点被选中111 // tvDescription.setText(imageDescriptionArray[0]);112 // llPointGroup.getChildAt(0).setEnabled(true);113 114 115 // 初始化ViewPager的默认position为Integer.Max_value的一半116 int index = (Integer.MAX_VALUE / 2) - (Integer.MAX_VALUE / 2 % imageViewList.size());117 mViewPager.setCurrentItem(index); // 设置当前viewpager选中的pager页, 会触发OnPageChangeListener.onPagerSelected118 119 }120 121 class MyAdapter extends PagerAdapter {122 123 @Override124 public int getCount() {125 return Integer.MAX_VALUE;126 }127 128 /**129 * 复用对象.130 * true 复用对象131 * false 用的是object132 */133 @Override134 public boolean isViewFromObject(View arg0, Object arg1) {135 return arg0 == arg1;136 }137 138 /**139 * 销毁对象140 * @param position 将要被销毁对象的索引位置141 */142 @Override143 public void destroyItem(ViewGroup container, int position, Object object) {144 container.removeView(imageViewList.get(position % imageViewList.size()));145 }146 147 /**148 * 初始化一个view对象149 * @param position 将要被创建的对象的索引位置150 */151 @Override152 public Object instantiateItem(ViewGroup container, int position) {153 // 先把对象添加到viewpager中, 再返回当前对象154 container.addView(imageViewList.get(position % imageViewList.size()));155 return imageViewList.get(position % imageViewList.size());156 }157 }158 159 @Override160 public void onPageScrollStateChanged(int arg0) {161 // TODO Auto-generated method stub162 163 }164 165 @Override166 public void onPageScrolled(int arg0, float arg1, int arg2) {167 // TODO Auto-generated method stub168 169 }170 171 @Override172 public void onPageSelected(int position) {173 174 // 取余后的索引175 int newPosition = position % imageViewList.size();176 177 // 根据索引设置图片的描述178 tvDescription.setText(imageDescriptionArray[newPosition]);179 180 // 把上一个点设置为未选中181 llPointGroup.getChildAt(previousEnabledPosition).setEnabled(false);182 183 // 根据索引设置哪一个点被选中184 llPointGroup.getChildAt(newPosition).setEnabled(true);185 186 previousEnabledPosition = newPosition;187 }188 }
View Code

 

转载于:https://www.cnblogs.com/friends-wf/p/4566207.html

你可能感兴趣的文章