ANDROID轮播广告图片

【转】http://www.cnblogs.com/carrotRol/articles/3654739.html

import java.util.ArrayList;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.vsstoo.vbox.R;
import com.vsstoo.vbox.helper.UIHelper;
import com.vsstoo.vbox.util.AppUtils;

public class HeadAd extends RelativeLayout implements OnClickListener {
private ViewPager vp;
private LinearLayout symbolLayout, bottomLayout;
private TextView titleTv;
private LayoutParams lp;
private ArrayList<ImageView> imageViews, symbolViews;
private ArrayList<AdResult> showResults;
private int normal, focus;
private int currentItem = 0; // 当前图片的索引号


private ScheduledExecutorService updateService;
private Context context;

private void initData(){
showResults=new ArrayList<AdResult>();
AdResult result=new AdResult();
result.setResId(R.drawable.ad);
result.setTitle("");
result.setUrl("");//设置点击图片跳转的网页url
showResults.add(result); 
}


public HeadAd(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
setBackgroundResource(R.color.black);
normal = R.drawable.dot_normal;
focus = R.drawable.dot_focused;

initData();

lp = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
vp = new ViewPager(context);
vp.setLayoutParams(lp);

lp = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
titleTv = new TextView(context);
titleTv.setSingleLine(true);
titleTv.setPadding(0, 5, 0, 5);
titleTv.setTextSize(15);
titleTv.setTextColor(Color.WHITE);
titleTv.setText(showResults.get(0).getTitle());
titleTv.setLayoutParams(lp);
titleTv.setGravity(Gravity.CENTER);

lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
bottomLayout = new LinearLayout(context);
bottomLayout.setGravity(Gravity.CENTER);
bottomLayout.setOrientation(LinearLayout.VERTICAL);
bottomLayout.setLayoutParams(lp);
bottomLayout.setBackgroundResource(R.color.footerBg);

bottomLayout.addView(titleTv);

lp = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
symbolLayout = new LinearLayout(context);
symbolLayout.setGravity(Gravity.CENTER);
symbolLayout.setOrientation(LinearLayout.HORIZONTAL);
symbolLayout.setPadding(0, 0, 0, 5);

lp = new LayoutParams(15, 15);
lp.setMargins(10, 0, 10, 0);
symbolViews = new ArrayList<ImageView>();
imageViews = new ArrayList<ImageView>();
ImageView imageView, symbolIv;
for (int i = 0; i < showResults.size(); i++) {
imageView = new ImageView(context);
imageView.setImageResource(showResults.get(i).getResId());
imageView.setScaleType(ScaleType.CENTER_CROP);
imageView.setOnClickListener(this);
imageViews.add(imageView);
symbolIv = new ImageView(context);
if (i == 0) {
symbolIv.setImageResource(focus);
} else {
symbolIv.setImageResource(normal);
}
symbolIv.setLayoutParams(lp);
symbolViews.add(symbolIv);
symbolLayout.addView(symbolIv);
}
bottomLayout.addView(symbolLayout);
vp.setAdapter(new MyAdapter());
vp.setOnPageChangeListener(new MyPageChangeListener());
addView(vp);
addView(bottomLayout);
}

private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
vp.setCurrentItem(currentItem);// 切换当前显示的图片
};
};


//直接在activity的OnResume里调用,当前界面是该activity时开始循环

public void startUpdate() {
this.updateService = Executors.newSingleThreadScheduledExecutor();
this.updateService.scheduleAtFixedRate(new ScrollTask(), 5, 5,
TimeUnit.SECONDS);
}

 

//直接在activity的OnPause里调用,当前界面不是该activity时停止循环

public void stopUpdate() {
this.updateService.shutdown();
updateService=null;
}

private class MyAdapter extends PagerAdapter {

@Override
public int getCount() {
return showResults.size();
}

@Override
public Object instantiateItem(View arg0, int arg1) {
((ViewPager) arg0).addView(imageViews.get(arg1));
return imageViews.get(arg1);
}

@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}

@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {

}

@Override
public Parcelable saveState() {
return null;
}

@Override
public void startUpdate(View arg0) {

}

@Override
public void finishUpdate(View arg0) {

}
}

/**
* 当ViewPager中页面的状态发生改变时调用

* @author Administrator

*/
private class MyPageChangeListener implements OnPageChangeListener {
private int oldPosition = 0;

public void onPageSelected(int position) {
currentItem = position;
titleTv.setText(showResults.get(position).getTitle());
symbolViews.get(oldPosition).setImageResource(normal);
symbolViews.get(position).setImageResource(focus);
oldPosition = position;
}

public void onPageScrollStateChanged(int arg0) {

}

public void onPageScrolled(int arg0, float arg1, int arg2) {

}
}

/**
* 换行切换任务

* @author Administrator

*/
private class ScrollTask implements Runnable {

public void run() {
synchronized (vp) {
System.out.println("currentItem: " + currentItem);
currentItem = (currentItem + 1) % imageViews.size();
handler.obtainMessage().sendToTarget(); // 通过Handler切换图片
}
}

}

@Override
public void onClick(View v) {
AppUtils.write("当前显示的是第" + currentItem + "项");//点击图要做什么操作在这里写
}

public class AdResult {
private int resId;
private String title;
private String url;

public int getResId() {
return resId;
}

public void setResId(int resId) {
this.resId = resId;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}
}
}

 

dot_focused.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >

<solid android:color="#aaFFFFFF" />

<corners android:radius="5dip" />

</shape>

 

dot_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >

<solid android:color="#33000000" />

<corners android:radius="5dip" />

</shape>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio可以使用ViewPager和Fragment实现轮播广告。具体步骤如下: 1. 创建一个ViewPager布局,用于显示广告图片。 2. 创建一个Fragment,用于显示每张广告图片。 3. 在Activity中创建一个PagerAdapter,用于管理Fragment。 4. 在PagerAdapter中重写getItem()方法,返回对应位置的Fragment。 5. 在Activity中设置ViewPager的Adapter为PagerAdapter。 6. 在Activity中使用Handler和Runnable实现自动轮播。 7. 在Fragment中加载广告图片,并设置点击事件。 8. 在Activity中处理广告图片的点击事件。 以上是Android Studio实现轮播广告的基本步骤,具体实现可以根据需求进行调整。 ### 回答2: Android Studio轮播广告是一种非常流行和实用的广告形式,它能够有效地吸引用户的注意力,提高广告的曝光率和点击率。轮播广告主要是指多个广告素材在同一位置轮流展示,用户可以通过滑动或自动跳转的方式浏览轮播广告。 在Android Studio中实现轮播广告,通常需要使用一些第三方的轮播库,例如ViewPager、BannerViewPager、LoopViewPager等。其中,ViewPager是最基本也是最常用的轮播控件,它可以实现滑动切换广告的效果,但是需要自己编写轮播循环和indicator指示器部分的代码。 使用ViewPager实现轮播广告的步骤如下: 1. 在布局文件中添加ViewPager和indicator指示器控件。 2. 编写适配器Adapter类,重写getView和getCount方法,添加广告图片和相应的点击事件。 3. 设置ViewPager的适配器为上一步创建的适配器类,指定轮播方式和初始位置。 4. 自定义indicator指示器样式,将indicator控件和ViewPager关联。 除此之外,还有一些轮播控件库可以直接使用,例如BannerViewPager和LoopViewPager。它们可以方便地实现自动轮播、无限轮播、自定义indicator指示器等功能,开发者可以根据需求选择适合自己项目的轮播库。 总之,通过使用Android Studio轮播广告,可以有效地增加产品或服务的曝光率和意识度,提高用户的粘性和转化率,具有非常重要的营销价值。 ### 回答3: 在Android应用程序中,轮播广告是很常见的一种交互方式,主要用于向用户展示一组像或者视频,这些像或者视频会不断地循环播放,从而引导用户关注应用程序中的重要信息或者活动。与此同时,轮播广告也是提高用户体验和应用程序曝光度的重要因素。 在使用Android Studio开发轮播广告应用程序时,我们可以通过以下步骤来实现: 1. 在Android Studio中创建一个新的项目,并在项目中添加需要的像或者视频资源文件。 2. 在MainActivity.java文件的onCreate()方法中,使用ViewPager控件(Android中的一个UI组件,用于在屏幕中展示一个滑动的视)来创建一个可以循环滑动的轮播广告。 3. 添加适配器类(Adapter)来对ViewPager中的像或者视频进行设置和操作,这里我们可以使用FragmentPagerAdapter类(Android中的一个适配器类)。需要注意的是,在FragmentPagerAdapter中,需要重写getItem()和getCount()方法来对ViewPager进行设置。 4. 在设置ViewPager属性时,需要确保往ViewPager中添加的像或者视频数量大于等于3张,这才能让轮播广告生效。 5. 最后,我们需要在应用程序中添加一个计时器来控制轮播广告的滑动时间,这个计时器可以使用Android中的Handler类来实现。 以上就是通过Android Studio实现轮播广告的基本步骤。需要注意的是,在实践过程中,我们还需要根据具体的需求和开发场景来进行一些适当的修改和调整,以确保广告应用程序可以顺利运行和满足用户的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值