Android 轮番播放广告图片

来源:互联网 发布:百慕达网络超市招聘 编辑:程序博客网 时间:2024/04/30 20:33

项目中有很多需求是显示网络图片的,然后进行轮番播放,下面先贴上效果图片,看一下效果

两种方式进行加载,一种是从网上直接下载图片并进行显示,另一种是加载res下的图片,直接进行显示,可以根据需求进行选择,下面上项目结构图片,是自定义的FrameLayout,然后直接在MainActivity中进行调用,


下面是代码,xml文件的代码就不上传了,很简单,稍后会把代码直接上传至网上,有需要的话可以直接下载即可

<span style="font-size:18px;">public class MyFrameLayout extends FrameLayout {private int count;// 记录图片的数量private Context context;private int cuttentItem;private ImageLoader mImageLoader;// ImageLoader组件private List<ImageView> imageViews;// 放置显示图片的数组private List<ImageView> iv_dots;// 放置是否选中点点的数组private ViewPager viewPager;//private LinearLayout line;private boolean isAutoPlay;// 是否滑动的标志private Handler handler = new Handler() {};public MyFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);this.context = context;init();}public MyFrameLayout(Context context) {// this(context, null);super(context);this.context = context;init();}public MyFrameLayout(Context context, AttributeSet attrs) {// this(context, attrs, 0);super(context, attrs);this.context = context;init();}public void init() {initData();initImageLoader(context);}public void initData() {imageViews = new ArrayList<ImageView>();iv_dots = new ArrayList<ImageView>();}// 从网络上获取图片public void setImageUrl(String[] image) {initLayout();initNet(image);showTime();}// 从本地获取图片public void setImageRes(int[] image) {initLayout();initRes(image);showTime();}public void initRes(int[] image) {count = image.length;for (int i = 0; i < count; i++) {ImageView imag = new ImageView(context);LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);param.leftMargin = 5;param.rightMargin = 5;line.addView(imag, param);iv_dots.add(imag);}iv_dots.get(0).setBackgroundResource(R.drawable.image_select);for (int i = 0; i < count + 1; i++) {ImageView im = new ImageView(context);im.setScaleType(ScaleType.FIT_XY);im.setBackgroundResource(R.drawable.loading);if (i == 0) {im.setBackgroundResource(image[count - 1]);} else if (i == count + 1) {im.setBackgroundResource(image[0]);} else {im.setBackgroundResource(image[i-1]);}imageViews.add(im);}}public void initLayout() {imageViews.clear();View view = LayoutInflater.from(context).inflate(R.layout.myself_view,this, true);viewPager = (ViewPager) view.findViewById(R.id.pager);line = (LinearLayout) view.findViewById(R.id.line);line.removeAllViews();}public void initNet(String[] image) {count = image.length;for (int i = 0; i < count; i++) {ImageView img = new ImageView(context);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);params.leftMargin = 5;params.rightMargin = 5;line.addView(img, params);iv_dots.add(img);}iv_dots.get(0).setBackgroundResource(R.drawable.image_select);for (int i = 0; i <= count + 1; i++) {ImageView imag = new ImageView(context);imag.setScaleType(ScaleType.FIT_XY);imag.setBackgroundResource(R.drawable.loading);if (i == 0) {mImageLoader.displayImage(image[count - 1], imag);} else if (i == count + 1) {mImageLoader.displayImage(image[0], imag);} else {mImageLoader.displayImage(image[i - 1], imag);}imageViews.add(imag);}}public void showTime() {viewPager.setAdapter(new MyAdapter());viewPager.setCurrentItem(1);cuttentItem = 1;viewPager.setFocusable(true);viewPager.setOnPageChangeListener(new MyOnPagerChangeListener());startPlay();}public void startPlay() {isAutoPlay = true;handler.postDelayed(runabnle, 2000);}private final Runnable runabnle = new Runnable() {@Overridepublic void run() {if (isAutoPlay) {cuttentItem = cuttentItem % (count + 1) + 1;if (cuttentItem == 1) {viewPager.setCurrentItem(cuttentItem, false);handler.post(runabnle);} else {viewPager.setCurrentItem(cuttentItem);handler.postDelayed(runabnle, 3000);}} else {handler.postDelayed(runabnle, 5000);}}};class MyAdapter extends PagerAdapter {@Overridepublic int getCount() {return imageViews.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {container.addView(imageViews.get(position));return imageViews.get(position);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(imageViews.get(position));}}class MyOnPagerChangeListener implements OnPageChangeListener {@Overridepublic void onPageScrollStateChanged(int arg0) {switch (arg0) {case 1:isAutoPlay = false;break;case 2:isAutoPlay = true;break;case 0:if (viewPager.getCurrentItem() == 0) {viewPager.setCurrentItem(count, false);} else if (viewPager.getCurrentItem() == count + 1) {viewPager.setCurrentItem(1, false);}cuttentItem = viewPager.getCurrentItem();isAutoPlay = true;break;default:break;}}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {for (int i = 0; i < iv_dots.size(); i++) {if (i == arg0 - 1) {iv_dots.get(i).setBackgroundResource(R.drawable.image_select);} else {iv_dots.get(i).setBackgroundResource(R.drawable.image);}}}}/** * 初始化ImageLoader组件 * */public void initImageLoader(Context context) {ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2).denyCacheImageMultipleSizesInMemory().diskCacheFileNameGenerator(new Md5FileNameGenerator()).tasksProcessingOrder(QueueProcessingType.LIFO).writeDebugLogs().build();ImageLoader.getInstance().init(config);mImageLoader = ImageLoader.getInstance();}}</span>
在MainActivity之中直接金鼎调用::
<span style="font-size:18px;">myFrame.setImageRes(new int[] { R.drawable.image01, R.drawable.image02,R.drawable.image03, R.drawable.image04 });:</span>
或者:::
<span style="font-size:18px;"> myFrame.setImageUrl(new String[] { "http://e.hiphotos.baidu.com/image/pic/item/b2de9c82d158ccbf0881c1d01dd8bc3eb135411e.jpg", "http://c.hiphotos.baidu.com/image/pic/item/0ff41bd5ad6eddc4c3dbc0113ddbb6fd5266331f.jpg", "http://h.hiphotos.baidu.com/image/pic/item/d058ccbf6c81800a7e38fce4b53533fa838b477e.jpg", "http://f.hiphotos.baidu.com/image/pic/item/adaf2edda3cc7cd9b87b41333d01213fb90e9181.jpg" });</span>
下面的代码链接有需要的请点击下载::点我打开代码

0 0