编写轮播图Viewpager
2017-03-11 20:22
85 查看
一:在所有工作开始前,我们先准备好布局和资源:两张不同状态的按钮,四张图片 (在布局中需要注意几点:想要radiogroup放在Viewpager下面的话,需要用到
<?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:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.com.wechart.Activity.MainActivity" > <RelativeLayout android:layout_width="match_parent" android:layout_height="200dp"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/main_relativelayout" > </android.support.v4.view.ViewPager> <RadioGroup android:layout_centerInParent="true" android:gravity="center" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="20dp" android:padding="6dp" android:orientation="horizontal" android:background="#d4d1d1" android:id="@+id/main_radiogroup" > </RadioGroup> </RelativeLayout> </RelativeLayout>图片资源我就不给了当然还需要一个为radiobutton背景准备的xml文件
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/btn_img_two" /> <item android:drawable="@drawable/btn_img_one" /> </selector>二,现在准备工作都准备好了,我们开始其他的,轮播图,还需要一个activity和一个adapter首先是aticvity:
package com.example.com.wechart.Activity; import android.graphics.BitmapFactory; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.RadioButton; import android.widget.RadioGroup; import com.example.com.wechart.Activity.Adpater.ViewPagerAdapter; import com.example.com.wechart.R; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener { private ViewPager viewPager; private RadioGroup radioGroup; private List<View> imageview_list=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); int[] ids={ R.drawable.inter, R.drawable.learning, R.drawable.major, R.drawable.message }; for (int i=0;i<ids.length;i++) { ImageView imageview=new ImageView(this); imageview.setScaleType(ImageView.ScaleType.CENTER); imageview.setImageBitmap(BitmapFactory.decodeResource(getResources(),ids[i])); imageview_list.add(imageview); RadioButton button=new RadioButton(this); button.setButtonDrawable(R.drawable.button_values); radioGroup.addView(button); } viewPager.addOnPageChangeListener(this); viewPager.setAdapter(new ViewPagerAdapter(imageview_list)); radioGroup.check(0); handle.sendEmptyMessageDelayed(1,3000); } //通过id寻找到控件 private void init() { viewPager= (ViewPager) findViewById(R.id.main_relativelayout); radioGroup= (RadioGroup) findViewById(R.id.main_radiogroup); } // @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { radioGroup.clearCheck(); radioGroup.check(position-1); } @Override public void onPageScrollStateChanged(int state) { }
Handler handle=new Handler(){private int Index;@Overridepublic void handleMessage(Message msg){super.handleMessage(msg);handle.sendEmptyMessageDelayed(1,3000);if (Index<imageview_list.size()-1){Index++;}else{Index=0;}viewPager.setCurrentItem(Index);}};}然后是adapter:
package com.example.com.wechart.Activity.Adpater;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import java.util.List;/*** Created by 12697 on 2017/3/11.*/public class ViewPagerAdapter extends PagerAdapter{private List<View> imageview_list;public ViewPagerAdapter(List<View> imageview_list){this.imageview_list=imageview_list;}@Overridepublic int getCount(){return imageview_list==null?0:imageview_list.size();}@Overridepublic boolean isViewFromObject(View view, Object object){return view==object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {View view=imageview_list.get(position);container.addView(view,0);return view;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object){View view=imageview_list.get(position);container.removeView(view);}}以后写Viewpager时一定要记住,必须重写destroyitem;特别是在与fragment这些一起连用的时候,否则,容易出现卡顿等现象ok,基本上一个轮播图就这样写完了,有兴趣的可以去学习一下无限轮播,或者自定义轮播图以及radiogroup的一些算法机制
相关文章推荐
- Viewpager的轮播
- android图片轮播效果,RollViewPager的简单使用
- 安卓:ViewPager,添加图片方式2及标题版,自动轮播版(第一种)
- pullToRefresh+网络监听+多条目+ViewPager无限轮播
- Viewpager自动轮播.循环(无误)
- View pager实现自动轮播图
- Android中级:轮播图(二):ViewPager实现indicator的滚动
- viewpager轮播图--狸菇凉_
- Android 轻量级轮播组件 CycleViewPager
- rollviewpager 轮播图开源框架简单使用方法
- Viewpager轮播报ArithmeticException算数异常
- Android实现ViewPager自动轮播
- ViewPager+小圆点进行无限轮播
- 仿百度壁纸客户端(二)——主页自定义ViewPager广告定时轮播图
- Android无限广告轮播 - ViewPager源码分析
- ViewPager网络加载图片并无限轮播实现
- ViewPager无限轮播加xml小圆点
- 基于ViewPager封装轮播图控件
- Android 自定义viewpager 三张图片在同一屏幕轮播的效果
- Android使用ViewPager实现自动轮播