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>

0 0
原创粉丝点击