android 滚动界面的设置

也就是这个样子,几个图片可以互换 其中主要的空间用到了Viewpager

public class Whatsnew extends Activity {
    
    private ViewPager mViewPager;    
    private ImageView mPage0;
    private ImageView mPage1;
    private ImageView mPage2;
    private ImageView mPage3;
    private ImageView mPage4;
    private ImageView mPage5;
        
    private int currIndex = 0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.whatsnew_viewpager);
        mViewPager = (ViewPager)findViewById(R.id.whatsnew_viewpager);        
        mViewPager.setOnPageChangeListener(new MyOnPageChangeListener());
       
        
        mPage0 = (ImageView)findViewById(R.id.page0);
        mPage1 = (ImageView)findViewById(R.id.page1);
        mPage2 = (ImageView)findViewById(R.id.page2);
        mPage3 = (ImageView)findViewById(R.id.page3);
        mPage4 = (ImageView)findViewById(R.id.page4);
        mPage5 = (ImageView)findViewById(R.id.page5);
        
      //将要分页显示的View装入数组中
        LayoutInflater mLi = LayoutInflater.from(this);
        View view1 = mLi.inflate(R.layout.whats1, null);
        View view2 = mLi.inflate(R.layout.whats2, null);
        View view3 = mLi.inflate(R.layout.whats3, null);
        View view4 = mLi.inflate(R.layout.whats4, null);
        View view5 = mLi.inflate(R.layout.whats5, null);
        View view6 = mLi.inflate(R.layout.whats6, null);
        
      //每个页面的view数据
        final ArrayList<View> views = new ArrayList<View>();
        views.add(view1);
        views.add(view2);
        views.add(view3);
        views.add(view4);
        views.add(view5);
        views.add(view6);
        
        //填充ViewPager的数据适配器
        PagerAdapter mPagerAdapter = new PagerAdapter() {
            
            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == arg1;
            }
            
            @Override
            //返回用view的数量,也就是几个页面构成
            public int getCount() {
                return views.size();
            }

            @Override
            public void destroyItem(View container, int position, Object object) {
                //删除指定位置的View
                ((ViewPager)container).removeView(views.get(position));
            }
            
            
            
            @Override
            public Object instantiateItem(View container, int position) {
                ((ViewPager)container).addView(views.get(position));
                return views.get(position);
                //在指定位置添加页面
            }
        };
        
        mViewPager.setAdapter(mPagerAdapter);
    }    
    

    //mViewPager的监听代码
    public class MyOnPageChangeListener implements OnPageChangeListener {
        @Override
        public void onPageSelected(int arg0) {//这个方法将一个新的页面选中状态
            switch (arg0) {
            case 0:                
                mPage0.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
                mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page));
                break;
            case 1:
                mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
                mPage0.setImageDrawable(getResources().getDrawable(R.drawable.page));
                mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page));
                break;
            case 2:
                mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
                mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page));
                mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page));
                break;
            case 3:
                mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
                mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page));
                mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page));
                break;
            case 4:
                mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
                mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page));
                mPage5.setImageDrawable(getResources().getDrawable(R.drawable.page));
                break;
            case 5:
                mPage5.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
                mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page));
                break;
            }
            currIndex = arg0;
            //animation.setFillAfter(true);// True:图片停在动画结束位置
            //animation.setDuration(300);
            //mPageImg.startAnimation(animation);
        }
        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    }
        
}

其中开始设置的imageview mpage0~mapage5是代表的下面的点的图片

后面的layout whats是真正界面的view,其中还用到了泛型和集合的概念,这是java中的语言,不过多解释了,强调下pagerAdaper的复写,添加集合的方式就是如此,可以记住,以后使用就方便了,一些方法的注释来自SDK docs解释文件中

LayoutInflater这个类是实例化一个布局XML文件到相应的视图对象。但它却永远不会直接使用。相反,使用getLayoutInflater()或getSystemService(字符串)来检索一个标准LayoutInflater实例已经连接到当前上下文,正确配置的设备上运行。

Inflate的意思是添加资源到指定的activity

原文地址:https://www.cnblogs.com/moonandwhite/p/3485247.html