轮播图

example
xml

 <FrameLayout
   android:id="@+id/lunbo"
   android:layout_width="match_parent"
   android:layout_height="150dip" >

  <android.support.v4.view.ViewPager
      android:id="@+id/vp"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />

  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="35dip"
      android:layout_gravity="bottom"
      android:background="#33000000"
      android:gravity="center"
      android:orientation="vertical" >

     <TextView
         android:id="@+id/title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="图片标题"
         android:textColor="@android:color/white" />

     <LinearLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="3dip"
         android:orientation="horizontal" >

        <View
            android:id="@+id/dot_0"
            android:layout_width="5dip"
            android:layout_height="5dip"
            android:layout_marginLeft="2dip"
            android:layout_marginRight="2dip"
            android:background="@drawable/f10"/>

        <View
            android:id="@+id/dot_1"
            android:layout_width="5dip"
            android:layout_height="5dip"
            android:layout_marginLeft="2dip"
            android:layout_marginRight="2dip"
            android:background="@drawable/f10"/>
        <View
            android:id="@+id/dot_2"
            android:layout_width="5dip"
            android:layout_height="5dip"
            android:layout_marginLeft="2dip"
            android:layout_marginRight="2dip"
            android:background="@drawable/f10"/>
        <View
            android:id="@+id/dot_3"
            android:layout_width="5dip"
            android:layout_height="5dip"
            android:layout_marginLeft="2dip"
            android:layout_marginRight="2dip"
            android:background="@drawable/f10"/>
        <View
            android:id="@+id/dot_4"
            android:layout_width="5dip"
            android:layout_height="5dip"
            android:layout_marginLeft="2dip"
            android:layout_marginRight="2dip"
            android:background="@drawable/f10"/>

     </LinearLayout>
  </LinearLayout>复制代码

java

private ViewPager mViewPaper;
private List<ImageView> images;
private List<View> dots;
private int currentItem;
//记录上一次点的位置
private int oldPosition = 0;
//存放图片的id
private int[] imageIds = new int[]{
        R.drawable.f10,
        R.drawable.lb2,
        R.drawable.lb3,
        R.drawable.lb4,
        R.drawable.lb5,
};
//存放图片的标题
private String[]  titles = new String[]{
        "发姐",
        "发麻麻",
        "陈一发儿",
        "陈...",
        "发发"
};
private TextView title;
private ViewPagerAdapter adapter;
private ScheduledExecutorService scheduledExecutorService;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chengzhang);
    clearWebViewCache();
    init();
    mViewPaper = (ViewPager) findViewById(R.id.vp);

    //显示的图片
    images = new ArrayList<ImageView>();
    for(int i = 0; i < imageIds.length; i++){
        ImageView imageView = new ImageView(this);
        imageView.setBackgroundResource(imageIds[i]);
        images.add(imageView);
    }
    //显示的小点
    dots = new ArrayList<View>();
    dots.add(findViewById(R.id.dot_0));
    dots.add(findViewById(R.id.dot_1));
    dots.add(findViewById(R.id.dot_2));
    dots.add(findViewById(R.id.dot_3));
    dots.add(findViewById(R.id.dot_4));

    title = (TextView) findViewById(R.id.title);
    title.setText(titles[0]);

    adapter = new ViewPagerAdapter();
    mViewPaper.setAdapter(adapter);

    mViewPaper.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {


        @Override
        public void onPageSelected(int position) {
            title.setText(titles[position]);
            dots.get(position).setBackgroundResource(R.drawable.f10);
            dots.get(oldPosition).setBackgroundResource(R.drawable.f10);

            oldPosition = position;
            currentItem = position;
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {

        }
    });
}

/**
 * 自定义Adapter
 * @author liuyazhuang
 *
 */
private class ViewPagerAdapter extends PagerAdapter{

    @Override
    public int getCount() {
        return images.size();
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == arg1;
    }

    @Override
    public void destroyItem(ViewGroup view, int position, Object object) {
        // TODO Auto-generated method stub

    @Override
    public Object instantiateItem(ViewGroup view, int position) {
        // TODO Auto-generated method stub
        view.addView(images.get(position));
        return images.get(position);
    }

}

/**
 * 利用线程池定时执行动画轮播
 */
@Override
protected void onStart() {
    // TODO Auto-generated method stub
    super.onStart();
    scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
    scheduledExecutorService.scheduleWithFixedDelay(
            new ViewPageTask(),
            2,
            2,
            TimeUnit.SECONDS);
}


/**
 * 图片轮播任务
 * @author liuyazhuang
 *
 */
private class ViewPageTask implements Runnable{

    @Override
    public void run() {
        currentItem = (currentItem + 1) % imageIds.length;
        mHandler.sendEmptyMessage(0);
    }
}

/**
 * 接收子线程传递过来的数据
 */
private Handler mHandler = new Handler(){
    public void handleMessage(android.os.Message msg) {
        mViewPaper.setCurrentItem(currentItem);
    };
};
@Override
protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();
    if(scheduledExecutorService != null){
        scheduledExecutorService.shutdown();
        scheduledExecutorService = null;
    }
}复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值