• 20 ViewPager Demo3指示器


    MainActivity.java

    package com.qf.day20_viewpager_demo3;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.LinearLayout.LayoutParams;
    
    public class MainActivity extends Activity {
        private ViewPager viewPager;
        List<ImageView> list;
        private int[] imags = { R.drawable.txt_theme26, R.drawable.txt_theme29, R.drawable.txt_theme30 };
    
        // 指示器图片
        private ImageView[] icons;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            viewPager = (ViewPager) findViewById(R.id.viewPager);
    
            // 数据源
            initData();
    
            // 获取指示器
    
            initIcon();
    
            // adapter
            MyAdapter adapter = new MyAdapter();
            viewPager.setAdapter(adapter);
    
            // setOnPageChangeListener
            // addOnPageChangeListener
            // ViewPager的监听事件
            viewPager.setOnPageChangeListener(new OnPageChangeListener() {
    
                /**
                 * 当前界面被选中时调用 position:当前位置
                 * 刚开始时此方法不会被回调
                 */
                @Override
                public void onPageSelected(int position) {
                    // TODO Auto-generated method stub
                    // 首先把所有图片改成 一样的图片
                    for (int i = 0; i < icons.length; i++) {
                        icons[i].setImageResource(R.drawable.icon01);
                    }
                    // 当前位置的图片 改成不一致的
                    icons[position].setImageResource(R.drawable.icon02);
                    Log.e("==", "==onPageSelected"+position);
                }
    
                /**
                 * 界面滚动的回调方法 参数1:当前界面的下标 参数2:当前界面的滚动偏移量 参数3:当前界面滚动偏移量的像素值
                 * 
                 */
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                    // TODO Auto-generated method stub
                    Log.e("==", "==onPageScrolled  参数1 "+arg0);
                    Log.e("==", "==onPageScrolled  参数2 "+arg1);
                    Log.e("==", "==onPageScrolled 参数3 "+arg2 );
                }
    
                /**
                 * 当前界面滑动状态改变时调用 
                 * SCROLL_STATE_IDLE 停止滑动 
                 * SCROLL_STATE_SETTLING 当用户有自然滑动的时候调用 比如说向左滑动然后放手
                 * 如果滑动的时候再回动回原来的位置不会触发 当然你能放回原位
                 * SCROLL_STATE_DRAGGING 正在滑动的状态
                 */
                @Override
                public void onPageScrollStateChanged(int arg0) {
    
    
                }
            });
        }
    
        // 初始化指示器
        public void initIcon() {
            // 获取指示器的父容器
            LinearLayout layout = (LinearLayout) findViewById(R.id.layout_id);
            icons = new ImageView[imags.length];
            for (int i = 0; i < icons.length; i++) {
                // icons[i] = (ImageView) layout.getChildAt(i);
                icons[i] = new ImageView(getApplicationContext());
                // 设置图片的布局大小 也可在此设定marging
                //使用的包为此元素在布局文件中的父元素
                LayoutParams params = new LayoutParams(20, 20);
                params.setMargins(0, 0, 20, 0);
                icons[i].setLayoutParams(params);
    
                // 容器里含有指示器
                layout.addView(icons[i]);
    
                icons[i].setImageResource(R.drawable.icon01);
                icons[i].setTag(i);// 保存当前位置
                icons[i].setOnClickListener(new OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        // 滑动到指定的界面
                        // viewPager.setCurrentItem((Integer)v.getTag());
                        viewPager.setCurrentItem((Integer) v.getTag(), false);
                    }
                });
            }
            // 设置第一个图片和其余图片不一致
            icons[0].setImageResource(R.drawable.icon02);
        }
    
        // 初始化数据源
        public void initData() {
            list = new ArrayList<ImageView>();
            for (int i = 0; i < imags.length; i++) {
                ImageView iv = new ImageView(getApplicationContext());
                iv.setImageResource(imags[i]);
                list.add(iv);
            }
        }
    
        public class MyAdapter extends PagerAdapter {
    
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return list.size();
            }
    
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                // TODO Auto-generated method stub
                container.addView(list.get(position));
                return list.get(position);
            }
    
            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                // TODO Auto-generated method stub
                // super.destroyItem(container, position, object);
                container.removeView(list.get(position));
            }
    
            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                // TODO Auto-generated method stub
                return arg0 == arg1;
            }
    
        }
    
    }
    

    布局文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            ></android.support.v4.view.ViewPager>
    
        <LinearLayout
            android:id="@+id/layout_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="49dp"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal" >
    
        </LinearLayout>
    
    </RelativeLayout>
    
  • 相关阅读:
    django之项目建立
    云监控服务比较
    2014 中华架构师大会 回顾
    计算字符串相似度算法——Levenshtein
    Maximum Likelihood 最大似然估计
    Laplacian eigenmap 拉普拉斯特征映射
    SparseLDA算法
    eigenvalues problem
    kernel function
    半监督学习[转]
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152215.html
Copyright © 2020-2023  润新知