Android实现Banner界面广告图片循环轮播
来源:互联网 发布:seo任务优化网站排名 编辑:程序博客网 时间:2024/05/21 09:45
主Activity代码如下
import android.app.Activity;import android.os.Bundle;import android.os.SystemClock;import android.support.v4.view.ViewPager;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.LinearLayout.LayoutParams;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity { //声明控件 private ViewPager mViewPager; private List<ImageView> mlist; private TextView mTextView; private LinearLayout mLinearLayout; //广告素材 private int[] bannerImages = { R.drawable.img1, R.drawable.img3, R.drawable.img4, R.drawable.pic1 }; // 广告语// private String[] bannerTexts = { "因为专业 所以卓越", "坚持创新 行业领跑", "诚信 专业 双赢", "精细 和谐 大气 开放" }; // ViewPager适配器与监听器 private BannerAdapter mAdapter; private BannerListener bannerListener; // 圆圈标志位 private int pointIndex = 0; // 线程标志 private boolean isStop = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); initAction(); // 开启新线程,2秒一次更新Banner new Thread(new Runnable() { @Override public void run() { while (!isStop) { SystemClock.sleep(2000); runOnUiThread(new Runnable() { @Override public void run() { mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1); } }); } } }).start(); } /** * 初始化事件 */ private void initAction() { bannerListener = new BannerListener(); mViewPager.setOnPageChangeListener(bannerListener); //取中间数来作为起始位置 int index = (Integer.MAX_VALUE / 2) - (Integer.MAX_VALUE / 2 % mlist.size()); //用来出发监听器 mViewPager.setCurrentItem(index); mLinearLayout.getChildAt(pointIndex).setEnabled(true); } /** * 初始化数据 */ private void initData() { mlist = new ArrayList<ImageView>(); View view; LayoutParams params; for (int i = 0; i < bannerImages.length; i++) { // 设置广告图 ImageView imageView = new ImageView(MainActivity.this); imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); imageView.setBackgroundResource(bannerImages[i]); mlist.add(imageView); // 设置圆圈点 view = new View(MainActivity.this); params = new LayoutParams(5, 5); params.leftMargin = 10; view.setBackgroundResource(R.drawable.point_background); view.setLayoutParams(params); view.setEnabled(false); mLinearLayout.addView(view); } mAdapter = new BannerAdapter(mlist); mViewPager.setAdapter(mAdapter); } /** * 初始化View操作 */ private void initView() { mViewPager = (ViewPager) findViewById(R.id.viewpager); mTextView = (TextView) findViewById(R.id.tv_bannertext); mLinearLayout = (LinearLayout) findViewById(R.id.points); } //实现VierPager监听器接口 class BannerListener implements ViewPager.OnPageChangeListener { @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { int newPosition = position % bannerImages.length;// mTextView.setText(bannerTexts[newPosition]); mLinearLayout.getChildAt(newPosition).setEnabled(true); mLinearLayout.getChildAt(pointIndex).setEnabled(false); // 更新标志位 pointIndex = newPosition; }} @Override protected void onDestroy(){ // 关闭定时器 isStop = true; super.onDestroy(); }}
acticity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.rrd.bannerdemo.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="250dp"> </android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBottom="@id/viewpager" android:background="#33000000" android:orientation="vertical" android:padding="5dp" > <TextView android:id="@+id/tv_bannertext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:padding="5dp" android:text=" " android:textColor="@android:color/white" /> <LinearLayout android:id="@+id/points" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="horizontal" > </LinearLayout> </LinearLayout></RelativeLayout>
BannerAdapter 适配器
import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import java.util.List;/** * ViewPager适配器 */public class BannerAdapter extends PagerAdapter { //数据源 private List<ImageView> mList; public BannerAdapter(List<ImageView> list){ this.mList = list; } @Override public int getCount() { //获取最大数实现无线循环效果 return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(mList.get(position%mList.size())); return mList.get(position % mList.size()); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mList.get(position % mList.size())); }}
point_bg_enable.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <corners android:radius="0.5dp" /> <solid android:color="#AAFFFFFF" /></shape>
point_bg_normal.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/point_bg_enable" android:state_enabled="true"></item> <item android:drawable="@drawable/point_bg_normal" android:state_enabled="false"></item></selector>
point_background.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/point_bg_enable" android:state_enabled="true"></item> <item android:drawable="@drawable/point_bg_normal" android:state_enabled="false"></item></selector>
0 0
- Android实现Banner界面广告图片循环轮播
- Android实现Banner界面广告图片循环轮播
- android实现banner界面广告图片循环轮播(包括手动活动轮播)
- Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
- Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
- Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
- Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
- Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
- Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)
- Android实现一款不错Banner界面广告图片循环轮播
- Android 实现广告Banner循环轮播
- Android 实现广告Banner循环轮播
- Android实现Banner界面循环轮播
- Android实现Banner图片循环轮播
- Android广告图片轮播控件banner
- android Banner 广告轮播
- Android广告图片轮播控件之banner
- Android 图片轮播Banner的实现
- Hrbust 1638 新年快乐【对称博弈】
- 【解决方案】Ubuntu14.04 卸载ibus导致System Settings异常
- git 基本技能
- Linux 学习总结(2)——w命令详解
- Oracle数据库的安全性措施概述
- Android实现Banner界面广告图片循环轮播
- ubuntu下增加swap空间的方法
- Qualcomm平台camera调试移植入门
- ubuntu16.04 caffe再安装—从nvidia显卡安装的循环登陆界面说起。
- struts2入门
- LayaAir引擎学习日志14----LayaAir内存优化的问题
- Sublime Text3 + Golang搭建开发环境
- Linux 文件编码大挪移
- NOIP原题----传纸条解析