想要的图片轮播Activity
public class BannerMediaActivity extends AppCompatActivity implements View.OnClickListener {
private RelativeLayout full_screen;
private BannerPager banner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_banner_media);
//设置屏幕长亮
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
full_screen = (RelativeLayout)findViewById(R.id.full_screen);
// 从布局文件中获取名叫banner_media的横幅轮播条
banner = (BannerPager)findViewById(R.id.banner_media);
// 获取横幅轮播条的布局参数
LayoutParams params = (LayoutParams) banner.getLayoutParams();
//params.height = (int) (Utils.getScreenWidth(this) * 250f / 640f);
// 设置横幅轮播条的布局参数
banner.setLayoutParams(params);
// 设置横幅轮播条的广告图片队列
banner.setImage(ImageList.getDefault());//这里我的图片是从网络上拉下来的,你可以自定义List
// 开始广告图片的轮播滚动
banner.start();
full_screen.setOnClickListener(this);
//全屏展示
StatusBarUtil.fullScreen(this);
}
@Override
public void onClick(View v) {
finish();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
banner.stop();
System.gc();
}
}
对应activity_banner_media.xml文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--自定义的轮播图,需要使用全路径-->
<com.example.shopingcart.widget.BannerPager
android:id="@+id/banner_media"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_weight="5"
android:layout_width="0dp"
android:layout_height="match_parent"></LinearLayout>
<LinearLayout
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_weight="3"
android:layout_width="match_parent"
android:layout_height="0dp">
</LinearLayout>
<ImageView
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@drawable/guide" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/full_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0">
</RelativeLayout>
</FrameLayout>
BannerPager类
public class BannerPager extends RelativeLayout {
private static final String TAG = "BannerPager";
private Context mContext;//声明一个上下文对象
private ViewPager vp_banner;//声明一个翻页视图对象
private List<ImageView> mViewList = new ArrayList<ImageView>();//声明一个图像视图队列
private int mInterval = 10000;//轮播的时间间隔,单位毫秒
public BannerPager(Context context){
this(context,null);
}
public BannerPager(Context context, AttributeSet attrs) {
super(context,attrs);
mContext = context;
initView();
}
//开始广告轮播
public void start(){
//延迟若干秒后启动任务
mHandler.postDelayed(mScroll,mInterval);
}
//停止广告轮播
public void stop(){
//移除滚动任务
mHandler.removeCallbacks(mScroll);
}
//设置广告轮播的间隔时间
public void setInterval(int interval) {
mInterval = interval;
}
//设置广告图片队列
public void setImage(ArrayList<Bitmap> imageList){
//根据图片队列生成图像视图队列
for(int i=0;i<imageList.size();i++){
ImageView iv = new ImageView(mContext);
iv.setImageBitmap(imageList.get(i));
iv.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
iv.setScaleType(ImageView.ScaleType.FIT_XY);
mViewList.add(iv);
}
//设置翻页视图的图像适配器
vp_banner.setAdapter(new ImageAdapter());
//设置翻页视图默认显示第一页
vp_banner.setCurrentItem(0);
}
private Handler mHandler = new Handler();//声明一个处理器对象
//定义一个滚动任务
private Runnable mScroll = new Runnable() {
@Override
public void run() {
scrollToNext();//滚动广告任务
//延迟若干秒之后继续启动滚动任务
mHandler.postDelayed(this,mInterval);
}
};
//滚动到下一张广告图
public void scrollToNext(){
int index =vp_banner.getCurrentItem()+1;
if(index>= mViewList.size()){
index = 0;
}
//设置翻页视图显示指定位置的页面
vp_banner.setCurrentItem(index);
}
//定义一个图像翻页适配器
private class ImageAdapter extends PagerAdapter {
@Override
public int getCount() {
return mViewList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
//从容器中销毁指定位置的页面
public void destroyItem(ViewGroup container,int position,Object object){
container.removeView(mViewList.get(position));
}
public Object instantiateItem(ViewGroup container, int position){
container.addView(mViewList.get(position));
return mViewList.get(position);
}
}
//初始化视图
private void initView() {
//根据布局文件media.xml生成视图对象
View view = LayoutInflater.from(mContext).inflate(R.layout.banner_media,null);
//从布局文件中获取名叫vp_banner的视图
vp_banner = view.findViewById(R.id.vp_banner);
addView(view);// 将该布局视图添加到横幅轮播条
}
}
倒计时CountDownTimer
public class BackMedia extends CountDownTimer {
private String TAG = "BackMedia";
private Context context;
/*
* 参数millisInFuture 倒计时总时间
* 参数 countDownInterval 渐变时间
* */
public BackMedia(long millisInFuture,long countDownInterval ,Context context){
super(millisInFuture,countDownInterval);
this.context = context;
}
//计时完毕时触发
@Override
public void onFinish() {
context.startActivity(new Intent(context, BannerMediaActivity.class));
}
//计时过程显示
@Override
public void onTick(long millisUntilFinished) {
//Log.i(TAG,"BackMedia seconds remaining"+millisUntilFinished/1000);
}
}
这是banner_media.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/vp_banner"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
直接在想要的activity类中使用BackMedia就可以了,因为我这个是直接从项目中截取下来的,没有本地图片,读者可以自己自定义图片,可能有些地方有小错误,但不影响使用,欢迎指出,