一.概述

对于一个联网的Android应用, 首页广告无限轮播基本已经成为标配了.

那么它是怎么实现的呢?

有几种实现方式呢?

二.无限轮播的实现

1.最常规的手段是用 ViewPager来实现

2.比较原始的手段是: Gallery 画廊来实现

3.最简单的实现手段是: Android image slider第三方库

下面由简到难依次实现

第三方库 Android image slider

github:https://github.com/daimajia/AndroidImageSlider/

只看图片就发现,非常绚丽, 有很多轮播方式可以选择,并且指示器图标也有很多选择方式, DIY 非常自由化.

步骤一:如果用AS开发需引入下面的库:

dependencies {compile "com.android.support:support-v4:+"compile 'com.squareup.picasso:picasso:2.3.2'compile 'com.nineoldandroids:library:2.4.0'compile 'com.daimajia.slider:library:1.1.5@aar'
}

步骤二:添加权限:

<!-- if you want to load images from the internet -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- if you want to load images from a file OR from the internet -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

步骤三: xml 的写法

Add the Slider to your layout:<com.daimajia.slider.library.SliderLayoutandroid:id="@+id/slider"android:layout_width="match_parent"android:layout_height="200dp"
/>
There are some default indicators. If you want to use a provided indicator:<com.daimajia.slider.library.Indicators.PagerIndicatorandroid:id="@+id/custom_indicator"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"/>

最后奉上代码:

package com.daimajia.slider.demo;import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;import com.daimajia.slider.library.Animations.DescriptionAnimation;
import com.daimajia.slider.library.Indicators.PagerIndicator;
import com.daimajia.slider.library.SliderLayout;
import com.daimajia.slider.library.SliderTypes.BaseSliderView;
import com.daimajia.slider.library.SliderTypes.TextSliderView;
import com.daimajia.slider.library.Tricks.ViewPagerEx;import java.util.HashMap;public class MainActivity extends ActionBarActivity implements BaseSliderView.OnSliderClickListener, ViewPagerEx.OnPageChangeListener{private SliderLayout mDemoSlider;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mDemoSlider = (SliderLayout)findViewById(R.id.slider);HashMap<String,String> url_maps = new HashMap<String, String>();url_maps.put("Hannibal", "http://static2.hypable.com/wp-content/uploads/2013/12/hannibal-season-2-release-date.jpg");url_maps.put("Big Bang Theory", "http://tvfiles.alphacoders.com/100/hdclearart-10.png");url_maps.put("House of Cards", "http://cdn3.nflximg.net/images/3093/2043093.jpg");url_maps.put("Game of Thrones", "http://images.boomsbeat.com/data/images/full/19640/game-of-thrones-season-4-jpg.jpg");HashMap<String,Integer> file_maps = new HashMap<String, Integer>();file_maps.put("Hannibal",R.drawable.hannibal);file_maps.put("Big Bang Theory",R.drawable.bigbang);file_maps.put("House of Cards",R.drawable.house);file_maps.put("Game of Thrones", R.drawable.game_of_thrones);for(String name : file_maps.keySet()){TextSliderView textSliderView = new TextSliderView(this);// initialize a SliderLayout
            textSliderView.description(name).image(file_maps.get(name)).setScaleType(BaseSliderView.ScaleType.Fit).setOnSliderClickListener(this);//add your extra informationtextSliderView.bundle(new Bundle());textSliderView.getBundle().putString("extra",name);mDemoSlider.addSlider(textSliderView);}mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);mDemoSlider.setCustomAnimation(new DescriptionAnimation());mDemoSlider.setDuration(4000);mDemoSlider.addOnPageChangeListener(this);ListView l = (ListView)findViewById(R.id.transformers);l.setAdapter(new TransformerAdapter(this));l.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {mDemoSlider.setPresetTransformer(((TextView) view).getText().toString());Toast.makeText(MainActivity.this, ((TextView) view).getText().toString(), Toast.LENGTH_SHORT).show();}});}@Overrideprotected void onStop() {// To prevent a memory leak on rotation, make sure to call stopAutoCycle() on the slider before activity or fragment is destroyed
        mDemoSlider.stopAutoCycle();super.onStop();}@Overridepublic void onSliderClick(BaseSliderView slider) {Toast.makeText(this,slider.getBundle().get("extra") + "",Toast.LENGTH_SHORT).show();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater menuInflater = getMenuInflater();menuInflater.inflate(R.menu.main,menu);return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case R.id.action_custom_indicator:mDemoSlider.setCustomIndicator((PagerIndicator) findViewById(R.id.custom_indicator));break;case R.id.action_custom_child_animation:mDemoSlider.setCustomAnimation(new ChildAnimationExample());break;case R.id.action_restore_default:mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);mDemoSlider.setCustomAnimation(new DescriptionAnimation());break;case R.id.action_github:Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/daimajia/AndroidImageSlider"));startActivity(browserIntent);break;}return super.onOptionsItemSelected(item);}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {Log.d("Slider Demo", "Page Changed: " + position);}@Overridepublic void onPageScrollStateChanged(int state) {}
}

注意一点: 如果 图片不带标题, 可以使用DefaultSliderView  , 如果图片有标题 就用TextSliderView

分割线-------------------------------------------------------------------------------------------------------

方式2: 使用Gallery 画廊来实现图片无限轮播

Android实现广告页图片无限轮播相关推荐

  1. Android 广告机图片视频轮播

    最近因为要做一个广告机上图片视频轮播,所以又是百度,github上一堆找,结果发现并没有特别合适的,不是播放视频首帧黑屏,就是切换界面后,没法继续播放,或者动态更新数据后,没法继续轮播等等问题,所以最 ...

  2. android 轮换实现动画,怎么在Android中实现一个首页无限轮播功能

    怎么在Android中实现一个首页无限轮播功能 发布时间:2021-04-12 16:22:49 来源:亿速云 阅读:74 作者:Leah 这期内容当中小编将会给大家带来有关怎么在Android中实现 ...

  3. BannerLayoutSimple 支持图片无限轮播的 BannerLayout,支持自定义小圆点位置以及显示位置等等,反正支持的挺多的,源码也有注释

    BannerLayoutSimple 项目地址: 7449/BannerLayoutSimple 简介:支持图片无限轮播的 BannerLayout,支持自定义小圆点位置以及显示位置等等,反正支持的挺 ...

  4. iOS开发之ImageView复用实现图片无限轮播

    在上篇博客中iOS开发之多图片无缝滚动组件封装与使用给出了图片无限轮播的实现方案之一,下面在给出另一种解决方案.今天博客中要说的就是在ScrollView上贴两个ImageView, 把ImageVi ...

  5. iOS 两种不同的图片无限轮播

    代码地址如下: http://www.demodashi.com/demo/11608.html 前记 其实想写这个关于无限轮播的记录已经很久很久了,只是没什么时间,这只是一个借口,正如:时间就像海绵 ...

  6. iOS 自定义图片无限轮播控件

    一:简介 图片轮播功能在App中是一个非常常见的功能,即允许定时滚动,也允许拖拽滚动,也可以点击每张图片触发事件. 二:实现方式 图片轮播功能的实现方式有很多中, UIScrollView + N个U ...

  7. 引导界面滑动导航 + 大于等于1页时无限轮播 + 各种切换动画轮播效果

    参考地址: https://github.com/bingoogolapple/BGABanner-Android#%E6%95%88%E6%9E%9C%E5%9B%BE%E4%B8%8E%E7%A4 ...

  8. 安卓实现广告栏图片无限轮播播放效果

    //经常在安卓app中页面上方放置一个广告栏,用到的无限轮播代码: public class MainActivity extends Activity { // 广告控件 private MyPag ...

  9. android带视频和图片的轮播(banner)解决方案

    方案只包含一个视频和多张图片,如果又多个视频的,可以修改适配器中的的播放器为一个list,并且在滑动中做相应的释放操作 一:实现一个视频和多张图片的轮播banner,使用到第三方框架有 1.轮播的基础 ...

最新文章

  1. 【Python】30个Pandas高频使用技巧
  2. 昨天又写到个结构体排序,用多种cmp
  3. 向日葵远程使用备忘录
  4. C 的 6 种内存顺序,你都知道吗?
  5. 高并发服务器开源项目,百万级高并发WebRTC流媒体服务器设计与开发(示例代码)...
  6. 软件工程概论第十三周学习进度
  7. linux中有关于dhcp的选择题,未指定试题(2014-11-18):DHCP协议的功能是(1)。在Linux中提供DHCP服务的...
  8. java action url,Java ViewHandler.getActionURL方法代码示例
  9. 国都企信通短信平台发送手机短信的python脚本一例
  10. 查看电脑的admin的密码
  11. 云服务器如何链接本地打印机_如何在服务器上安装网络打印机
  12. UVa 11991 - Easy Problem from Rujia Liu?
  13. oracle安装点下一步退出,学习笔记:oracle之win10安装卸载oracle 11gR2步骤及常见问题解决...
  14. Win10怎么隐藏任务栏时间 如何看不到右下角时间
  15. 计算机相关专业的兼职大总结
  16. C++实现Socket连接通信
  17. github监控平台hawkeye搭建
  18. 如何查看进程所打开的端口
  19. Oracle定时任务dbms_scheduler
  20. python爬取微博热搜榜教程,python爬取微博热搜并存入表格

热门文章

  1. css使用flex布局实现骰子1~6
  2. oracle存储过程rowcount用法,oracle中的sql%rowcount,sql%found、sql%notfound、sql%rowcount和sql%isopen...
  3. dr.oracle素颜霜好用吗,经常用素颜霜对皮肤有危害吗 怎么涂比较好
  4. 棒呆!如何用css3实现烟花绽放效果
  5. 那个准点下班的人,比我先升职了,这年头,不卷还有出路?
  6. 读书笔记-《大话数据结构》第一章数据结构绪论
  7. 计算机芯片组的分类,主板及芯片组-主板芯片组分类有哪些
  8. Opencv3概述及框架介绍
  9. 关于网络创业:投资者所看到的现状
  10. java与C语言之间socket通信(java客户端 C服务端)