ANDROID轮播广告图片
来源:互联网 发布:藏文软件输入法 编辑:程序博客网 时间:2024/04/30 16:03
【转】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>
- ANDROID轮播广告图片
- Android广告图片轮播控件
- Android 商品广告轮播图 图片轮播
- Android广告图片轮播控件banner
- Android-----------广告图片轮播控件
- Android之本地图片轮播(广告轮播)
- ANDROID广告轮播DEMO_仿淘宝广告轮播_滑动图片广告例子
- Android轮播广告
- Android广告轮播
- Android实现广告页图片无限轮播
- android图片轮播+点击跳转广告页面
- Android实现Banner界面广告图片循环轮播
- Android广告图片轮播控件之banner
- Android实现Banner界面广告图片循环轮播
- android实现banner界面广告图片循环轮播(包括手动活动轮播)
- Android自定义轮播广告
- android Banner 广告轮播
- Android无限广告轮播
- C++使用内存映射文件入门
- 关于const,内联函数和宏
- 12个最好的免费和开源的NoSQL数据库
- (不定时更新)使用myeclispe自带ssh框架而产生的包冲突
- NYOJ 171 聪明的kk
- ANDROID轮播广告图片
- bing的搜索api简介
- MySQL中的配置参数interactive_timeout和wait_timeout(可能导致过多sleep进程的两个参数)
- Windows批处理
- 8条注意事项降低改版带来的风险
- 囚鸟
- 深入了解Struts2返回JSON数据的原理及具体应用范例
- ListView的属性及方法详解
- nrpe监控远程Linux主机