Android:ViewPager制作幻灯片
2015-10-15 22:57
357 查看
最近在项目中用到图片轮播,试了Gallery,ViewFlipper,ViewPager,感觉Gallery最符合需求,但是Gallery的系统边框很难看,项目中要求用自己的背景图片。接下来用viewpager来做幻灯片效果。
<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="100dp"><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"></android.support.v4.view.ViewPager><LinearLayoutandroid:id="@+id/pointgroup"android:layout_width="match_parent"android:layout_height="10dp"android:orientation="horizontal"android:layout_alignParentBottom="true"android:layout_marginBottom="5dp"android:gravity="center"></LinearLayout></RelativeLayout>程序:
public class MainActivity extends Activity {//ViewPagerprivate ViewPager viewpager;//幻灯片图片资源private int [] imgArray={R.drawable.view1,R.drawable.view2,R.drawable.view3};//图片数组private ArrayList<View> viewlist;private ImageView imageView;//点点private ViewGroup pointgroup;private ImageView[] pointarr;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_viewpage);//初始化viewpager =(ViewPager) findViewById(R.id.viewpager);pointgroup =(ViewGroup) findViewById(R.id.pointgroup);viewlist = new ArrayList<View>();//将图片装载到数组for(int i=0;i<imgArray.length;i++){imageView =new ImageView(this);//设置图片imageView.setBackgroundResource(imgArray[i]);//设置图片idimageView.setId(imgArray[i]);viewlist.add(imageView);}/** viewpager加载适配器* MyPageAdapter为自定义适配器* *///传递上下文Context context = MainActivity.this;MyPageAdapter pageadapter2 =new MyPageAdapter(viewlist,context);viewpager.setAdapter(pageadapter2);//点数组pointarr=new ImageView[imgArray.length];//把点加入布局,和设置点状态for(int i=0;i<imgArray.length;i++){ImageView point=new ImageView(this);//设置点大小point.setLayoutParams(new LayoutParams(10,10));pointarr[i]=point;//状态处理if(i==0){pointarr[i].setBackgroundResource(R.drawable.viewpage_point_focused);}else{pointarr[i].setBackgroundResource(R.drawable.viewpage_point_unfocused);}//加入到容器pointgroup.addView(pointarr[i]);}//viewpager设置监听器pointChangeListener pointListener=new pointChangeListener();viewpager.setOnPageChangeListener(pointListener);//点击图片}/** viewpage监听器*/public class pointChangeListener implements OnPageChangeListener{@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Override//比如切换到第二张图片,相应索引的点为选择状态,其他为未选中状态public void onPageSelected(int arg0) {// TODO Auto-generated method stubfor(int i=0;i<pointarr.length;i++){pointarr[arg0].setBackgroundResource(R.drawable.viewpage_point_focused);if(arg0 !=i){pointarr[i].setBackgroundResource(R.drawable.viewpage_point_unfocused);}}}}}自定义适配器:
public class MyPageAdapter extends PagerAdapter {private List<View> viewlist;private Context context;public MyPageAdapter(List<View> viewlist,Context context){this.viewlist =viewlist;this.context=context;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn viewlist.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0==arg1;}//以下也是必要方法,不过要自己添加//实例化@Overridepublic Object instantiateItem(View container, int position) {// TODO Auto-generated method stub((ViewPager)container).addView(viewlist.get(position));View view =viewlist.get(position);view.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubint i =v.getId();String t="你点击了图片的图片id为:"+i;Toast.makeText(context, t, Toast.LENGTH_LONG).show();/*跳转页面*Intent intent =new Intent(context,NavigationActivity.class);*context.startActivity(intent);*/}});return viewlist.get(position);}//销毁@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stubcontainer.removeView(viewlist.get(position));}}
相关文章推荐
- Android小项目实战:手机安全卫士
- Android开发模板------常用工具类(方法)
- Android学习之四大组件(四)——BroadcastReceiver
- Android 及 NDK开发环境搭建
- Android--Handler使用应运及消息机制处理原理分析
- Android Wear来袭,极客学院全球首发破解可穿戴系统系列课程
- android wear与手机通信发送asset失败问题
- 【Android 学习】四大组件(三)——Content Provider
- Android 学习之四大组件(二)——service
- Android ListView 下拉刷新 点击加载更多
- Android--使用LayoutInflater加载布局文件的三种方法
- android 10 事件
- 解决Android sdk不能下载的问题
- android---(actionBar)
- Android循序渐进 - 3.3 Handler消息传递机制浅析
- Android_03_数据库的使用总结
- Android Canvas笔记
- Android自定义控件之百分比圆环进度条
- Android从assets和raw中读取txt文件
- android学习2:Intent与Bundle