新人求助,关于ViewPager里图片ios 图片添加点击事件件的问

Jquery ajax在select中动态加载option并且添加点击事件 - CSDN博客
他的最新文章Android广告轮播图添加标题及点击事件_Android开发-织梦者
当前位置:&>&&>& > Android广告轮播图添加标题及点击事件
Android广告轮播图添加标题及点击事件
广告轮播图添加标题及点击事件
前言:广告轮播图,网上的例子多如牛毛,但是,你想要找到满足自己项目需求的例子,还是需要花费一些时间寻找,可能还需要花费精力去修改。写这篇文章,主要是在项目中遇到了这样的需求,广告轮播图底部要有标题,每个图都绑定一个链接,点击后用WebView加载这个链接。本文主要讲给广告轮播图添加标题及点击事件和自己的一些小心得,不涉及ViewPager各种炫酷的效果。如果你的项目需要这些效果,请参考张鸿洋的巧用ViewPager 打造不一样的广告轮播切换效果。
因为本文不涉及炫酷的效果,所以主要在PagerAdapter上做文章。广告轮播图标题展示如图:
看了效果图,有两种模式,一种展示标题,另一种不展示,具体下面会讲到,说正题!为什么图片时刘诗诗的!因为在百度图片中明星入驻今天正好是她,就是这么简单,来不及解释,猝不及防的开车了~咳咳咳。
二、添加标题
言归正传,其实添加标题和增加点击事件都很简单,添加标题就是利用FrameLayout实现的,二添加点击事件也不过是写个回调接口而已。既然这么简单,为什么还要写呢?俗话说:“重要的不是结果,而是过程。”这篇文章只是抛砖引玉、管中窥豹。好吧,我们先来看看实现添加上标题的布局文件:
&?xml version="1.0" encoding="utf-8"?&
&FrameLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" &
&ImageView
android:id="@+id/img_item_auto_play"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@null"
android:scaleType="fitXY"/&
android:id="@+id/tv_item_label_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_gravity="bottom"
android:gravity="center_vertical"
android:textSize="15sp"
android:textColor="@android:color/white"
android:background="@drawable/focus_bg"/&
&/FrameLayout&
是不是非常简单,只需要一张有透明度的背景图就可以轻轻松松的搞定了。
三、PagerAdapter的处理
这里,我将PagerAdapter的处理和广告轮播切换的效果封装到了一起,命名为AutoPlayingViewPager。轮播图的切换间隔用ScheduledExecutorService实现,而轮播的实现方法不能免俗,使用最简单的将item 数量设置为Integer.MAX_VALUE。对广告轮播的原理就不做过多的介绍,简单看看源码就知道,有兴趣的可以自己深入了解。
(1)初始化数据
* 通过本地图片资源Id获得默认的数据
private List&AutoPlayInfo& getImageIdAutoPlayInfoList(int [] imageIds){
List&AutoPlayInfo& autoPlayInfoList = new ArrayList&AutoPlayInfo&();
for(int i = 0 ; i & imageIds. i ++){
AutoPlayInfo autoPlayInfo = new AutoPlayInfo();
autoPlayInfo.setImageId(imageIds[i]);
autoPlayInfoList.add(autoPlayInfo);
return autoPlayInfoL
* 通过图片URL地址获得默认的数据
private List&AutoPlayInfo& getDefaultUrlAutoPlayInfoList(){
List&AutoPlayInfo& autoPlayInfoList = new ArrayList&AutoPlayInfo&();
for(int i = 0 ; i & defaultUrl. i ++){
AutoPlayInfo autoPlayInfo = new AutoPlayInfo();
autoPlayInfo.setImageUrl(defaultUrl[i]);
//添加链接
autoPlayInfo.setAdLinks("");
autoPlayInfo.setTitle(defaultTitle[i]);
autoPlayInfoList.add(autoPlayInfo);
return autoPlayInfoL
* @param imageIds 需要加载的图片Id,根据传入数量动态创建容器。
public AutoPlayingViewPager initialize(int [] imageIds) {
if (imageIds != null && imageIds.length != 0) {
mAutoPlayInfoList = getImageIdAutoPlayInfoList(imageIds);
} else {//没有数据使用默认的图片资源
mAutoPlayInfoList = getImageIdAutoPlayInfoList(defaultIds);
IMAGE_COUNT = mAutoPlayInfoList.size();
* @param imageUrls 需要加载的图片地址,根据传入数量动态创建容器。
public AutoPlayingViewPager initialize(List&AutoPlayInfo& autoPlayInfoList) {
if (autoPlayInfoList != null && !autoPlayInfoList.isEmpty()) {
mAutoPlayInfoList = autoPlayInfoL
} else {//没有数据使用默认的图片资源
mAutoPlayInfoList = getDefaultUrlAutoPlayInfoList();
IMAGE_COUNT = mAutoPlayInfoList.size();
数据初始化也很简单,主要做了传入空数据时使用默认的数据,并且分为两种模式,一种加载本地图片,一种加载网络图片,至于标题和链接,就要看你的需求了,参照getImageIdAutoPlayInfoList和getDefaultUrlAutoPlayInfoList方法你想要哪些,就setXXX,这个地方使用了一个对象AutoPlayInfo :
public class AutoPlayInfo {
//轮播图片URL
private String imageU
//轮播本地图片资源Id
private int imageId;
private String adL
//图片对应的标题
//......get、set方法
(2)在PagerAdapter中数据的处理
主要在PagerAdapter的instantiateItem方法中:
public Object instantiateItem(ViewGroup container, final int position) {
final AutoPlayInfo autoPlayInfo = mAutoPlayInfoList.get(position % IMAGE_COUNT);
View view = mInflate.inflate(R.layout.item_label_auto_play_viewpager, null);
ImageView imageView = (ImageView) view.findViewById(R.id.img_item_auto_play);
TextView labelTitle = (TextView) view.findViewById(R.id.tv_item_label_title);
if(!TextUtils.isEmpty(autoPlayInfo.getAdLinks())){//有链接时才添加监听
view.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
onPageItemClickListener.onPageItemClick(position % IMAGE_COUNT,autoPlayInfo.getAdLinks());
if(!TextUtils.isEmpty(autoPlayInfo.getImageUrl())){//通过URL时使用ImageLoader加载图片
ImageLoader.getInstance().displayImage(autoPlayInfo.getImageUrl(),imageView);
}else if(autoPlayInfo.getImageId() != 0){//本地图片时直接设置
imageView.setImageResource(autoPlayInfo.getImageId());
if(!TextUtils.isEmpty(autoPlayInfo.getTitle())){//有标题数据才显示
labelTitle.setText(autoPlayInfo.getTitle());
}else{//没有标题数据不显示文本透明背景
labelTitle.setBackgroundDrawable(null);
container.addView(view);
instantiateItem方法中,通过数据的有无来控制标题展示、点击事件的响应,标题的实现上文中已经过,至于点击事件也是通过接口回调实现,比较简单,不做过多分析。这样全局没有一个boolean变量,引发我们的思考:”你对全局变量有什么理解?”。我个人认为,尽量少的使用全局变量。
四、AutoPlayingViewPager 的使用
private AutoPlayingViewPager mAutoPlayingViewP
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAutoPlayingViewPager = (AutoPlayingViewPager) findViewById(R.id.auto_play_viewpager);
mAutoPlayingViewPager.initialize(new ArrayList&AutoPlayInfo&()).build();
mAutoPlayingViewPager.setOnPageItemClickListener(onPageItemClickListener);
mAutoPlayingViewPager.startPlaying();
private OnPageItemClickListener onPageItemClickListener = new OnPageItemClickListener(){
public void onPageItemClick(int position, String adLink) {
//根据position获取对应的链接,使用WebView加载
Intent intent = new Intent(MainActivity.this,AdvertisementActivity.class);
intent.putExtra("linkPath", adLink);
startActivity(intent);
public void onResume() {
//重新开启轮播
mAutoPlayingViewPager.startPlaying();
super.onResume();
public void onPause() {
//暂停轮播
mAutoPlayingViewPager.stopPlaying();
super.onPause();
这里需要注意两点,mAutoPlayingViewPager.initialize(new ArrayList()).build()和onResume、onPause中的处理。
build()方法是用来生成右下角小圆点。我们的点击监听事件,就是简简单单的把返回的链接用WebView,加载出来。
虽然这篇文章涉及到的很浅显,我相信大家会有所收获,窥一斑而知全豹,项目中大大小小的功能,总有你没有研究过的,网上找的例子总有不满足项目需求的。这个时候,不要纠结造新轮子和重复造轮子的问题,也许在你纠结的时候,花时间实践一下,说不定简单的把轮子改造一下,就成了呢。没有绝对的正确或错误,要有一颗积极向上的心,永不绝望,便有希望,永不放弃,总会成功。
因为今天CSDN上传资源又出问题了,这里用百度云分享出来,源码和APK都在里面,看来是时候用github存资料了。
以上就是Android广告轮播图添加标题及点击事件的全文介绍,希望对您学习Android应用开发有所帮助.
这些内容可能对你也有帮助
更多可查看Android开发列表页。
猜您也会喜欢这些文章问题:新人求助,关于ViewPager里图片点击事件的问题
刚学Android想边做东西边学,想实现一个手机图片浏览器。
请问怎么在ViewPager里的图片设置点击监听,当单击图片后返回到GridView?
另外,PagerAdaptr方法里instantiateItem方法里传入参数Position是什么。我Debug的时候发现position每次都不一样,但是最后显示结果不影响。
为什么图片index值要用position&%&mImageViews.length,我Debug的时候发现每次这个值都在变化,可是为什么不影响图片显示顺序?
小白一枚,还请大神赐教或提供点资料我仔细研究解决方案1:
点击时间你可以写到Adapter中,也可以给viewpager加上onTouch&事件处理,postion:&举个例子加入你的viewpager中共有5个界面,当前页是第二页,则potion就是1,也就是当前页所在viewpager中的位置,位置也是从0开始的
以上介绍了“新人求助,关于ViewPager里图片点击事件的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/718213.html
上一篇: 下一篇:本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 html图片区域点击事件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信