Android广告轮播图实现
来源:互联网 发布:如何参加淘宝客 编辑:程序博客网 时间:2024/04/30 10:36
第一步,布局
<?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.xw.myviewpager.MainActivity"><RelativeLayout android:layout_width="match_parent" android:layout_height="180dp"><android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_alignParentBottom="true" android:orientation="horizontal" android:background="#66000000" android:layout_height="30dp"> <LinearLayout android:id="@+id/point_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center" android:gravity="center" > </LinearLayout> </LinearLayout></RelativeLayout></RelativeLayout>
这里的point_container用来做小圆点的容器
二 圆点形状和状态选择器
bg_shape.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <corners android:radius="5dp"/> <solid android:color="#FFFFFF"/></shape>
bg_shape2.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <corners android:radius="5dp"/> <solid android:color="#808080"/></shape>
selector.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:drawable="@drawable/bg_shape"/> <item android:state_enabled="false" android:drawable="@drawable/bg_shape2"/></selector>enable="false"是灰色圆点,当state_enabled="true"是白色圆点
三 MainActivity
import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import java.util.ArrayList;public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener{ private ViewPager vp; private int[] imas; private LinearLayout ll; private ArrayList<ImageView> imaList; private Boolean flag; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化布局 initViews(); //数据 initData(); //适配器 initAdapter(); flag=true; //实现自动轮播 new Thread(new Runnable() { @Override public void run() { while (flag) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } runOnUiThread(new Runnable() { @Override public void run() { vp.setCurrentItem(vp.getCurrentItem() + 1); } }); } } }).start(); } private void initAdapter() { ll.getChildAt(0).setEnabled(true); vp.setAdapter(new MyAdapter()); vp.setCurrentItem(Integer.MAX_VALUE/2+2);//这里以一个%5为0的数开始,这样打开默认会在第0个item显示 } @Override protected void onDestroy() { super.onDestroy(); flag=false; } private void initData() { } private void initViews() { vp = (ViewPager) findViewById(R.id.vp); vp.setOnPageChangeListener(this); ll= (LinearLayout) findViewById(R.id.point_container); //图片数组 imas = new int[]{R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e,}; ImageView iv; imaList = new ArrayList<ImageView>(); View pointview; for (int i = 0; i < imas.length; i++) { iv = new ImageView(this); iv.setImageResource(imas[i]); imaList.add(iv); //加小白点 pointview =new View(this); pointview.setEnabled(false); pointview.setBackgroundResource(R.drawable.selector); LinearLayout.LayoutParams params =new LinearLayout.LayoutParams(15,15); //params.gravity= Gravity.CENTER; if(i!=0) params.leftMargin=10; ll.addView(pointview, params ); } } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for(int i=0;i<ll.getChildCount();i++){ ll.getChildAt(i).setEnabled(false); } ll.getChildAt(position%5).setEnabled(true);//设置小白点 } @Override public void onPageScrollStateChanged(int state) { } class MyAdapter extends PagerAdapter { @Override public Object instantiateItem(ViewGroup container, int position) { int newposition =position%5;//得到新位置 ImageView imageView=imaList.get(newposition); container.addView(imageView); return imageView;//把View对象返回给框架,必须重写 } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override //判断复用 public boolean isViewFromObject(View view, Object object) { return view==object; } }}
0 0
- Android广告轮播图实现
- Android广告轮播图效果实现
- 【Android UI】ViewFlipper实现广告轮播图
- Android开发之轮播图广告的实现
- Android广告Banner实现
- android—广告实现
- Android实现 广告识别之 广告库
- Android 实现APP开屏广告
- Android循环广告的实现
- Android 实现广告无限循环
- android ViewPager实现广告图轮播
- Android 广告条轮播的实现
- RecyclerView实现广告轮播图
- Android轮播图广告——ViewPager基本实现
- Android 自动广告轮播图
- Android 广告轮播图
- iOS 广告轮播图的实现
- Android利用ViewPager实现滑动广告板
- 编译时:virtual memory exhausted: Cannot allocate memory
- popwindow分析以及使用注意事项(二)
- mysql - 日期函数
- Dojo1.11官方教程文档翻译(1.1)开启Dojo之旅
- MySQL陷阱
- Android广告轮播图实现
- git -- 链接远程仓库
- Python验证哥德巴赫猜想
- JSON方法查询某城市天气
- 【Android - 框架】之Retrofit的使用
- 在centos7通过yum安装PHP7
- 洛谷1071 潜伏者 NOIP2009 字符串模拟
- 关于vue的基础概念
- 中国 “互联网“ + 金融研究报告