zoukankan      html  css  js  c++  java
  • 使用ViewPager模拟实现应用程序启动界面

               经常在开发应用程序的时候,软件启动有启用动画界面,一般使用图片来进行界面该版本最新更新等等内容,今天来使用ViewPager来模拟实现这功能,也希望对大家有个小小的参考作用,在以后的项目中能够使用到。

           首先准备工作,若干张需要进行显示的图片和底部用到的小圆圈

            项目结构图如下:

           

            2:运行效果图



             大致效果如上,具体编码实现:

        布局文件是android.support.v4.view.ViewPager和底部五个小圆圈main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
    
        <android.support.v4.view.ViewPager
            android:id="@+id/myViewpager"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            />
        
        <LinearLayout 
            android:id="@+id/linearlayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            >
            <ImageView 
                android:id="@+id/img1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/point_selector"
                android:padding="17dip"/>
            <ImageView 
                android:id="@+id/img2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/point_selector"
                android:padding="17dip"/>
            <ImageView 
                android:id="@+id/img3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/point_selector"
                android:padding="17dip"/>
            <ImageView 
                android:id="@+id/img4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/point_selector"
                android:padding="17dip"/>
             <ImageView 
                android:id="@+id/img5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/point_selector"
                android:padding="17dip"/>
            
        </LinearLayout>
    
    </RelativeLayout>


     ViewPageAdapter.java ViewPager页面的适配器

    /**
     * 自定义ViewPager适配器
     * @author jiangqingqing
     *
     */
    public class MyViewPagerAdapter extends PagerAdapter {
    
    	private List<View> mLists;
    	public MyViewPagerAdapter(List<View> pLists)
    	{
    		this.mLists=pLists;
    	}
    	@Override
    	public int getCount() {
    		// TODO Auto-generated method stub
    		return mLists.size();
    	}
    
    	@Override
    	public boolean isViewFromObject(View arg0, Object arg1) {
    		// TODO Auto-generated method stub
    		return arg0==arg1;
    	}
    
    	@Override
    	public void destroyItem(View container, int position, Object object) {
    		((ViewPager)container).removeView(mLists.get(position));
    	}
    
    	@Override
    	public Object instantiateItem(View container, int position) {
    		((ViewPager)container).addView(mLists.get(position));
    		return mLists.get(position);
    	}

    MainActicvity.java

    /**
     * 使用ViePager简单模拟 应用的启动动画界面
     * @author jiangqingqing
     *
     */
    public class MainActivity extends Activity {
    
    	private ViewPager mViewPager;
    	private MyViewPagerAdapter mAdapter;
    	private LinearLayout mLinearLayout;
    	private List<View> mLists = new ArrayList<View>();
    	private Integer[] img_ids = new Integer[] { R.drawable.guide_01,
    			R.drawable.guide_02, R.drawable.guide_03, R.drawable.guide_04,
    			R.drawable.guide_05 };
    	private ImageView[] points = new ImageView[img_ids.length];
    
    	private int current=0;//默认在第一页 
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		mViewPager = (ViewPager) this.findViewById(R.id.myViewpager);
    		mLinearLayout = (LinearLayout) this.findViewById(R.id.linearlayout);
    
    		//把需要显示的图片加入到ViewPager页面集合中
    		for (int i = 0; i < img_ids.length; i++) {
    			ImageView iv = new ImageView(this);
    			iv.setLayoutParams(new LinearLayout.LayoutParams(
    					LinearLayout.LayoutParams.FILL_PARENT,
    					LinearLayout.LayoutParams.FILL_PARENT));
    			iv.setImageResource(img_ids[i]);
    			mLists.add(iv);
    		}
    		
    		mAdapter=new MyViewPagerAdapter(mLists);
    		mViewPager.setAdapter(mAdapter);
    		
    		//为ViewPager选项卡添加  切换时候的监听
    		mViewPager.setOnPageChangeListener(new MyOnPagerChangeListener());
    		//初始化下面的小圆点
    		initPoints();	
    	}
     
    	  //初始化下面的小圆点
          private void initPoints()
          {
        	  for(int i=0;i<img_ids.length;i++)
        	  {
        		  points[i]=(ImageView)mLinearLayout.getChildAt(i);
        		  points[i].setImageResource(R.drawable.point_normal);
        		  
        	  }
        	  current=0;//默认在第一页
        	  points[current].setImageResource(R.drawable.point_select);//此刻处于第一页,把第一页的小圆圈设置为unenabled
          }
    	   
    	   class MyOnPagerChangeListener implements OnPageChangeListener
    	   {
    		@Override
    		public void onPageScrollStateChanged(int arg0) {
    						
    		}
    		@Override
    		public void onPageScrolled(int arg0, float arg1, int arg2) {
    				
    		}
    		@Override
    		public void onPageSelected(int arg0) {
    			
    			points[arg0].setImageResource(R.drawable.point_select);
    			points[current].setImageResource(R.drawable.point_normal);
    			current=arg0;
    		}
    		   
    	   }
    


        这个Demo例子比较简单,但是可以实现我们需要的效果。详细代码在下面的链接,有兴趣的可以下载下来跑一下

       http://download.csdn.net/detail/jiangqq781931404/5776739

       

  • 相关阅读:
    mac c++编译出现segmentation fault :11错误
    ssh 连接缓慢解决方法
    237. Delete Node in a Linked List
    203. Remove Linked List Elements
    Inversion of Control Containers and the Dependency Injection pattern
    82. Remove Duplicates from Sorted List II
    83. Remove Duplicates from Sorted List
    SxsTrace
    使用CCleaner卸载chrome
    decimal and double ToString problem
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3199012.html
Copyright © 2011-2022 走看看