zoukankan      html  css  js  c++  java
  • viewpager的使用

    Viewpager是用于实现多页面的切换效果的。在现在的app中非常常见,通常会配合Fragment使用。现在简单的对view的使用进行介绍。

    首先认识一个这个控件,ViewPager。它是google SDk中自带的一个附加包的一个类(这个附加包是android-support-v4.jar),可以用来实现屏幕间的切换。

    首先进行页面设计:

    main.xml文件

     1  <android.support.v4.view.ViewPager
     2        android:layout_width="match_parent"
     3        android:layout_height="match_parent"
     4        android:id="@+id/viewPager"
     5        ></android.support.v4.view.ViewPager>
     6 
     7     <LinearLayout
     8         android:layout_width="match_parent"
     9         android:layout_height="wrap_content"
    10         android:gravity="center_vertical"
    11         android:layout_alignParentBottom="true"
    12         android:orientation="horizontal"
    13         android:id="@+id/group"
    14         ></LinearLayout>

    每个页面的的代码一共有三个item1,item2,item3现在只放一个其他的类似

     <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/view1"
            android:id="@+id/item1"
            />

    只有一张图片。

    现在代码部分,先定义字段

    1     ArrayList<View> viewlist;//页面的内容
    2     ViewPager vpager;//页卡内容
    3     ImageView image;//动画图片
    4     ImageView[] imaglist;//动画图片
    5     ViewGroup group;//动画图片效果

    oncreate()方法

     1 protected void onCreate(Bundle savedInstanceState) {
     2         super.onCreate(savedInstanceState);
     3         setContentView(R.layout.activity_main);
     4 
     5         vpager = (ViewPager) findViewById(R.id.viewPager);
     6 
     7         viewlist = new ArrayList<View>();
     8         LayoutInflater inflater = getLayoutInflater();
     9         View v1 = inflater.inflate(R.layout.item1, null);
    10         View v2 = inflater.inflate(R.layout.item2, null);
    11         View v3 = inflater.inflate(R.layout.item3, null);
    12 
    13         viewlist.add(v1);
    14         viewlist.add(v2);
    15         viewlist.add(v3);
    16 
    17 
    18         imaglist = new ImageView[viewlist.size()];
    19         for (int i = 0; i < viewlist.size(); i++) {
    20 
    21             image = new ImageView(MainActivity.this);
    22 
    23             if (i == 0) {
    24                 image.setImageResource(R.drawable.page_indicator_focused);
    25             } else {
    26                 image.setImageResource(R.drawable.page_indicator_unfocused);
    27             }
    28             imaglist[i] = image;
    29             group.addView(image);
    30         }
    31 
    32         vpager.setAdapter(adapter);
    33         vpager.setOnPageChangeListener(new myPagerChangeListener());
    34 
    35 
    36     }

    viewpager必须通过适配器使用。下面的代码定义了适配器

     1 PagerAdapter adapter = new PagerAdapter() {
     2         @Override
     3         public int getCount() {
     4             return viewlist.size();
     5         }
     6 
     7         @Override
     8         public boolean isViewFromObject(View view, Object o) {
     9             return view==o;
    10         }
    11 
    12         @Override
    13         public Object instantiateItem(ViewGroup container, int position) {
    14             ((ViewPager)container).addView(viewlist.get(position));
    15 
    16             return viewlist.get(position);
    17         }
    18 
    19         @Override
    20         public void destroyItem(ViewGroup container, int position, Object object) {
    21             ((ViewPager)container).removeView(viewlist.get(position));
    22         }
    23     };

    最后是定义监听时间。在进行翻页的时候得动画

        class myPagerChangeListener implements ViewPager.OnPageChangeListener{
            @Override
            public void onPageScrolled(int i, float v, int i1) {
    
            }
    
            @Override
            public void onPageSelected(int i) {
               for(int j=0;i<imaglist.length;j++){
                   if(i==j){
                       imaglist[j].setImageResource(R.drawable.page_indicator_focused);
                   }else {
                       imaglist[j].setImageResource(R.drawable.page_indicator_unfocused);
                   }
               }
    
            }
    
            @Override
            public void onPageScrollStateChanged(int i) {
    
            }
        }
  • 相关阅读:
    SourceTree 启动不需要账号
    获取httpservletrequest所有参数的键值对--key-value,用getParameterMap
    ajax 参数出现在Request payload导致request.getParameter(name)是获取不到值
    导出
    替换jar包里面的文件。利用jar ucf
    mysql CPU使用率过高的一次处理经历
    实用小知识
    spring-boot 静态资源自定义配置
    java多线程调用静态方法安全吗?
    spring 注解@Bean
  • 原文地址:https://www.cnblogs.com/yuqt/p/5042839.html
Copyright © 2011-2022 走看看