带圆点标示的ViewPager
来源:互联网 发布:热传导分析软件 编辑:程序博客网 时间:2024/05/16 14:59
为了实现ViewPager滚动页面标示,我们通常都会在布局文件中添加圆点布局,现提供一种融合后的
public class UniversialViewPager<T> extends RelativeLayout{ private Context mContext; private ViewPager viewPager; private LinearLayout ll_imgswitch; private ImageView currentImg; private int screenWidth; private List<T> datas; public UniversialViewPager(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; screenWidth = context.getResources().getDisplayMetrics().widthPixels; initialViews(); } private void initialViews(){ viewPager = new ViewPager(mContext); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i2) { } @Override public void onPageSelected(int i) { changePosition(i); } @Override public void onPageScrollStateChanged(int i) { } }); ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); addView(viewPager,layoutParams); ll_imgswitch = new LinearLayout(mContext); ll_imgswitch.setOrientation(LinearLayout.HORIZONTAL); ll_imgswitch.setGravity(Gravity.CENTER); RelativeLayout.LayoutParams layoutParams1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); layoutParams1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); layoutParams1.bottomMargin = StringUtils.dip2px(mContext,3); addView(ll_imgswitch, layoutParams1); } public void fillDatas(List<T> datas){ if(datas!=null&&datas.size()>1){ initImgNum(datas.size()); } viewPager.setAdapter(new MyAdapter(datas)); } private class MyAdapter extends PagerAdapter { private List datas ; public MyAdapter(List<T> datas){ this.datas=datas; } @Override public int getCount() { return datas.size(); } @Override public boolean isViewFromObject(View view, Object o) { return view==o; } @Override public Object instantiateItem(ViewGroup container, int position) { View view = LayoutInflater.from(mContext) .inflate(R.layout.home_ad_item, null); ImageView imageView = (ImageView) view.findViewById(R.id.iv_ad); imageView.setScaleType(ImageView.ScaleType.FIT_XY); /*......*/ imageView.setTag(datas.get(position)); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(v instanceof ImageView){ T info = (T) ((ImageView)v).getTag(); if(info==null)return; // ((HomeActivity)mContext).jumpAD(info); 调用activity的方法处理点击事件 } } }); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); container.removeView((View)object); } @Override public void destroyItem(View container, int position, Object object) { //此方法保持空,不要删除,默写版本viewpager会调用此父类方法,抛出异常 } } // 广告位小圆点相关 private void initImgNum(int num) { ll_imgswitch.removeAllViews(); for (int i = 0; i < num; i++) { ImageView img = new ImageView(mContext); img.setImageResource(R.drawable.ad_switcher_btn); if (screenWidth <= 480) { img.setPadding(10, 0, 0, 0); } else img.setPadding(25, 0, 0, 0); ll_imgswitch.addView(img); } changePosition(0); } protected void changePosition(int position) { if (currentImg != null) currentImg.setImageResource(R.drawable.ad_switcher_btn); currentImg = (ImageView) ll_imgswitch.getChildAt(position); currentImg.setImageResource(R.drawable.ad_switcher_btn_selected); }}
0 0
- 带圆点标示的ViewPager
- Android ViewPager+Fragment,标示跟着ViewPager的滑动而同时滑动
- 公司的部门标示
- 标示当前位置的导航
- 循环的标示符
- 各种须记忆的标示
- 设备的一些标示获取
- c++ 栈的链式标示
- Echarts 修改地图的标示
- 标示符定义的规则?
- Java标示接口的介绍
- viewpager带圆点的过渡页
- viewpager带圆点的过渡页
- 中国小吃的英文标示法
- 二极管的型号标示及特性
- 谈英文标示牌的规范问题
- 图和网的数据结构(邻接矩阵标示)
- 关于软件界面颜色标示的说明
- 012-矩阵链相乘-动态规划-《算法设计技巧与分析》M.H.A学习笔记
- Android中监听Home键的4种方法总结
- JNI编程(AndroidStudio)
- 20. Valid Parentheses(stack)
- mysql 5.7.13 在ubuntu上的安装以及部分简单说明
- 带圆点标示的ViewPager
- placeholder IE兼容问题
- android studio 一些使用问题
- 编写一个删除C语言程序中所有注释语句的程序
- SpringMVC日期绑定
- JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)
- JAVA配置文件的读取
- 四张图包含了020所有的秘密
- 叔恶!今日凌晨潮汕一汽车掉进水沟内,车上三女生身亡!