自己写个轮播图效果
来源:互联网 发布:redis查看所有数据 编辑:程序博客网 时间:2024/06/03 20:36
每次都用banner都要导包,感觉好麻烦就自己尝试着写了一下,感觉还像那么回事,不喜勿喷,文明观文哈
首先就是布局文件用viewPager了,主页面:
FrameLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”>
<com.leevanie.xishanoa.widget.AutoScrollViewPager android:id="@+id/home_viewpager" android:layout_width="match_parent" android:layout_height="@dimen/dp_150" /> <!--viewpager下方的指示器--> <LinearLayout android:id="@+id/home_viewpager_indicator" android:layout_width="fill_parent" android:layout_height="@dimen/dp_10" android:layout_alignBottom="@+id/viewPager_main_list_slide" android:layout_marginBottom="@dimen/dp_7" android:layout_marginTop="@dimen/dp_120" android:gravity="center" android:orientation="horizontal" /> </FrameLayout>布局就这么简单啦,接下来就是java代码了
轮播图图片布局
LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical” android:layout_width=”match_parent”
android:layout_height=”match_parent”>
<ImageView android:id="@+id/home_fragment_item_simpledraw" android:layout_width="match_parent" android:layout_height="match_parent" />
图片下面的小圆点布局
LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical” android:layout_width=”match_parent”
android:layout_height=”match_parent”>
<ImageView android:id="@+id/imageView_indicator_dot" android:layout_width="5dp" android:layout_height="4dp" android:layout_margin="3dp" android:scaleType="centerCrop"/>
在MainActivity中
private HomeViewPagerAdapter homeViewPagerAdapter;
//做一个页面轮播的adapter
private PagerDotIndicator pagerDotIndicator;//这就是下面那几个小店点了,当然位置在布局文件里面可以自己设置的。homeViewPagerAdapter = new HomeViewPagerAdapter(getActivity());
pagerDotIndicator = new PagerDotIndicator(getActivity(), homeViewpagerIndicator, homeViewpager);
homeViewpager.setAdapter(homeViewPagerAdapter);
homeViewpager.setCurrentItem(3);
//我这里设置了三个页面,当然你也可以设置更多
pagerDotIndicator.setDotNums(3);
下面就是adapter适配的东西了
public class HomeViewPagerAdapter extends PagerAdapter {
private LayoutInflater inflater;
private int image[] = new int[]{R.mipmap.message_viewpager,
R.mipmap.message_viewpager,R.mipmap.message_viewpager};
public HomeViewPagerAdapter(Context context) { inflater = LayoutInflater.from(context);}@Overridepublic int getCount() { return Integer.MAX_VALUE;}@Overridepublic boolean isViewFromObject(View view, Object object) { return view == object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) { View view = inflater.inflate(R.layout.home_fragment_viewpager_item, null); ViewHolder holder = new ViewHolder(view); holder.homeFragmentItemSimpledrawee.setImageResource(image[position % image.length]); container.addView(view); return view;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) { View view = inflater.inflate(R.layout.home_fragment_viewpager_item, null); container.removeView(view);}class ViewHolder { @BindView(R.id.home_fragment_item_simpledraw) ImageView homeFragmentItemSimpledrawee; ViewHolder(View view) { ButterKnife.bind(this, view); }}
}接下来就是小圆点的自定义类了,
public class PagerDotIndicator {
private LinearLayout indicatorContainer;
private ViewPager viewPager;
private LayoutInflater inflater;
private int normalDotRes;
private int selectedDotRes;
public PagerDotIndicator(Context context, final LinearLayout indicatorContainer, ViewPager viewPager){ this.indicatorContainer = indicatorContainer; this.viewPager = viewPager; this.inflater = LayoutInflater.from(context); normalDotRes = R.mipmap.home_page_controls_nor; selectedDotRes = R.mipmap.home_page_controls_hl; viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){ @Override public void onPageSelected(int position) { super.onPageSelected(position); for (int i = 0; i < indicatorContainer.getChildCount(); i++) { ImageView imageView = (ImageView) indicatorContainer.getChildAt(i).findViewById(R.id.imageView_indicator_dot); if (position % indicatorContainer.getChildCount() == i){ imageView.setImageResource(selectedDotRes); }else{ imageView.setImageResource(normalDotRes); } } } });}/** * 外部可以设置指示器的图片资源(如果不设置就使用本类中默认的指示器图片) */public void setDotRes(int normalDotRes,int selectedDotRes){ this.normalDotRes = normalDotRes; this.selectedDotRes = selectedDotRes;}/** * 设置指示器的个数 */public void setDotNums(int size){ for (int i = 0; i < size; i++) { View view = inflater.inflate(R.layout.viewpager_indicator_dots,null); ImageView imageView = (ImageView) view.findViewById(R.id.imageView_indicator_dot); if (i == 0){ imageView.setImageResource(selectedDotRes); }else{ imageView.setImageResource(normalDotRes); } indicatorContainer.addView(view); }}
}
是不是很简单,没错就是这么简单,而且还不用导包的
- 自己写个轮播图效果
- js--分页效果(自己初版)
- jquery自己实现tab效果
- 漂亮效果自己造:暗夜精灵
- 自己摸索简单EasySearch效果_winvay
- [Android基础知识]打造自己的动画效果
- 自己写的”图片轮换效果“代码
- 自己写的UITableView的折叠效果
- 如何推广自己的网站效果更好
- scroller 做自己的动画效果
- 自己的ScrollView实现反弹效果
- 自己做的几个Slide简单效果
- 记录几个自己做的xml效果
- 自己做多种ViewPager滑动效果
- 自己给 TextView 添加 placeholder效果
- 自己写的轮播效果
- 自己写的一个分页效果
- 最近自己用asp+ajax写的仿clickeye效果
- Hibernate基础配置文件
- 焦距、物距、像距
- POJ 2409 Let it Bead
- Python进阶之装饰器
- 欢迎使用CSDN-markdown编辑器
- 自己写个轮播图效果
- Ionic2开发App之环境搭建及demo演示(Win10 64位 )
- Spring
- C++第5次实验(基础班)—数组1
- Struts2
- react native 进阶
- JAVA程序性能调优读书笔记 (1)-Java技巧
- SDUT-数据结构实验之栈:行编辑器
- c++中如何解决函数调用二维数组的问题。