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
- Android 轮番播放广告图片
- android 流行的广告轮番图
- 图片轮番
- 交替播放图片广告
- Android 图片轮番 继承ViewGroup实现 可以直接使用
- 图片的轮番效果
- 广告图片滚动播放ViewPage
- Android 轮番图
- 原生js图片轮番代码
- ajax实现图片轮番滚动
- Android 广告轮询播放
- 使用VideoView实现视频轮番播放
- Android高效率实现广告图片循环播放,手把手教会你实现效果,项目中直接使用
- viewpager实现图片轮番(本地图片)
- android 轮番图——viewpager实现(自动轮番,手动轮番);bug汇总以及解决
- 擦除式图片轮番显示效果
- 擦除式图片轮番显示效果
- 擦除式图片轮番显示效果
- iOS 观察者模式以及代理的例子
- iOS 使屏幕常亮代码
- sql server & oracle 加千分位
- 字符串输入函数
- 科学发明家特斯拉传记
- Android 轮番播放广告图片
- 黑马程序员——JavaSE之数组排序的小总结一
- intellij第一个项目之hello world
- Lucene 5.3 使用Lucene自定义StopAnalyzer
- Android开发总结笔记 SeekBar(滑块条) 1-1-13
- 编写让别人能读懂的代码
- Fragment 嵌套 Fragment 首次加载没问题,第二次加载子Fragment出现问题
- 事务总结
- 分页sql语句