ViewPager加标题、小圆点

package com.example.demo;
/**
 * 主要内容
 * 】简单ViewPager
 * 】加文本
 * 】加小圆点
 */
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

public class MainActivity extends Activity implements OnPageChangeListener{
    private ViewPager vp;
    private  int imgArray[];
    private  MyAdapter adapter;
    private TextView tvTitle;
    private String titleArray[];
    private LinearLayout layout;
    private int prePosition=0;//记录上一个红点

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        vp = (ViewPager) findViewById(R.id.vp);
        List<ImageView> l = new ArrayList<ImageView>();
        tvTitle=(TextView)findViewById(R.id.tv_title);
        layout=(LinearLayout)findViewById(R.id.layout);

        imgArray=getImage();
        titleArray=getText();
        for(int i=0;i<imgArray.length;i++){
            ImageView img=new ImageView(this);
            img.setImageResource(imgArray[i]);
            l.add(img);
            /**先在布局中添加一个布局
             * 添加小圆点,list中的数据有多少,就添加多少
             */
            View v=new View(this);
            v.setBackgroundResource(R.drawable.a);
            LayoutParams params=new LayoutParams(20, 20);
            v.setLayoutParams(params);
            layout.addView(v);
        }
        adapter=new MyAdapter(l);
        vp.setAdapter(adapter);
        //设置第一个文本
        tvTitle.setText(titleArray[0]);
        //设置第一个红点
        layout.getChildAt(0).setBackgroundResource(R.drawable.b);
        //注册监听
        vp.setOnPageChangeListener(this);

    }










    private String[] getText() {
        String s[]={"鸣人","佐助","小樱"};
        return s;

    }

    private int[] getImage() {
         int imgArray[]={R.drawable.back,R.drawable.bird,R.drawable.logal};
        return imgArray;
    }




/***********************ViewPager事件的监听*********************************************/
    /**
     * 页面滚动状态发生改变是调用
     * 】空闲
     * 】触摸并滚动
     * 】猛动
     */
    @Override
    public void onPageScrollStateChanged(int arg0) {

    }




/**
 * 页面滚动时   
 * 】arg0:条目所在位置
 * 】arg1:view在屏幕上移动的百分比0-1,以像素为单位
 * 】arg2:view实际移动的距离
 */
    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {

    }




/**
 * 页面选中时调用
 * 】arg0:条目所在的位置
 */
    @Override
    public void onPageSelected(int arg0) {
        /**
         * 设置每个view的文本(标题)
         * 】当页面发生变化,动态更新title
         */
        tvTitle.setText(titleArray[arg0]);

        /*******************设置小圆点************************************/
        /**
         * 】红点随着页面变化而变化,
         * 】将当前页面圆点图片设置为红色的
         * 】将上一个页面的原点图片设置为灰色的
         * 】通过prePosition动态记录上一个页面位置,初始化为0,更换页面后,重置为当前页面,
         */
        layout.getChildAt(arg0).setBackgroundResource(R.drawable.b);
        layout.getChildAt(prePosition).setBackgroundResource(R.drawable.a);

        prePosition=arg0;
    }


}
package com.example.demo;

import java.util.List;

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class MyAdapter extends PagerAdapter{
    private List<ImageView> l;
    public MyAdapter(List<ImageView> l) {
        this.l=l;
    }
    @Override
    public int getCount() {
        return l.size();
    }
/**
 * arg0:当前显示的view
 * arg1:从instantiateItem返回的object
 * 如果view第一次展示,就返回false,会产生新的view
 * 如果view不是第一次展示,就返回true,复用之前的
 */
    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0==arg1;
    }
    /**
     * 将子视图从容器container(就是ViewPager)中移除
     */

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(l.get(position));
    }
        /**】container:ViewPager
         * 】position:条目的位置
         * 
         */
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        //将子视图添加到容器中
        container.addView(l.get(position));
        //返回当前展示的视图
        return l.get(position);
    }



}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值