广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    使用ViewPager实现高仿launcher左右拖动效果

    2018-04-03 22:30:04 次阅读 稿源:互联网
    广告
    前面一篇高仿launcher和墨迹左右拖动效果获得了很多朋友的好评,上一篇文章主要是通过自定义ViewGroup实现的,有点麻烦。今天用ViewPager这个类实现了同样的效果,这样代码更少,但是效果是一样的。ViewPager是实现左右两个屏幕平滑地切换的一个类,它是Google提供的。

    使用ViewPager首先需要引入android-support-v4.jar这个jar包。具体ViewPager的用法,这里不做介绍,自己从网上搜索吧!
    下面先看一下效果:

           

     
    效果请自行体验和上一篇比较。下面上代码:
    首先是layout下面的main.xml
    代码如下:

    <?xmlversion="1.0"encoding="utf-8"?>
    <FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>
    <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <LinearLayout
    android:id="@+id/viewGroup"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="30dp"
    android:gravity="center_horizontal"
    android:orientation="horizontal">
    </LinearLayout>
    </RelativeLayout>
    </FrameLayout>

    接下来为每一个切换界面设置布局item1.xml
    代码如下:

    <?xmlversion="1.0"encoding="UTF-8"?>
    <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/guide01">
    </ImageView>
    </LinearLayout>

    其他的几个界面布局和这个一样,就是修改下背景图片,所以不再复述,
    最后是核心代码:
    代码如下:

    importjava.util.ArrayList;
    importandroid.app.Activity;
    importandroid.os.Bundle;
    importandroid.os.Parcelable;
    importandroid.support.v4.view.PagerAdapter;
    importandroid.support.v4.view.ViewPager;
    importandroid.support.v4.view.ViewPager.OnPageChangeListener;
    importandroid.view.LayoutInflater;
    importandroid.view.View;
    importandroid.view.ViewGroup;
    importandroid.view.ViewGroup.LayoutParams;
    importandroid.view.Window;
    importandroid.widget.ImageView;
    publicclassMainActivityextendsActivity{
    ViewPagerviewPager;
    ArrayList<View>list;
    ViewGroupmain,group;
    ImageViewimageView;
    ImageView[]imageViews;
    @Override
    publicvoidonCreate(BundlesavedInstanceState){
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    LayoutInflaterinflater=getLayoutInflater();
    list=newArrayList<View>();
    list.add(inflater.inflate(R.layout.item1,null));
    list.add(inflater.inflate(R.layout.item2,null));
    list.add(inflater.inflate(R.layout.item3,null));
    list.add(inflater.inflate(R.layout.item4,null));
    list.add(inflater.inflate(R.layout.item5,null));
    imageViews=newImageView[list.size()];
    ViewGroupmain=(ViewGroup)inflater.inflate(R.layout.main,null);
    //group是R.layou.main中的负责包裹小圆点的LinearLayout.
    ViewGroupgroup=(ViewGroup)main.findViewById(R.id.viewGroup);
    viewPager=(ViewPager)main.findViewById(R.id.viewPager);
    for(inti=0;i<list.size();i++){
    imageView=newImageView(MainActivity.this);
    imageView.setLayoutParams(newLayoutParams(10,10));
    imageView.setPadding(10,0,10,0);
    imageViews[i]=imageView;
    if(i==0){
    //默认进入程序后第一张图片被选中;
    imageViews[i].setBackgroundResource(R.drawable.guide_dot_white);
    }else{
    imageViews[i].setBackgroundResource(R.drawable.guide_dot_black);
    }
    group.addView(imageView);
    }
    setContentView(main);
    viewPager.setAdapter(newMyAdapter());
    viewPager.setOnPageChangeListener(newMyListener());
    }
    classMyAdapterextendsPagerAdapter{
    @Override
    publicintgetCount(){
    returnlist.size();
    }
    @Override
    publicbooleanisViewFromObject(Viewarg0,Objectarg1){
    returnarg0==arg1;
    }
    @Override
    publicintgetItemPosition(Objectobject){
    //TODOAuto-generatedmethodstub
    returnsuper.getItemPosition(object);
    }
    @Override
    publicvoiddestroyItem(Viewarg0,intarg1,Objectarg2){
    //TODOAuto-generatedmethodstub
    ((ViewPager)arg0).removeView(list.get(arg1));
    }
    @Override
    publicObjectinstantiateItem(Viewarg0,intarg1){
    //TODOAuto-generatedmethodstub
    ((ViewPager)arg0).addView(list.get(arg1));
    returnlist.get(arg1);
    }
    @Override
    publicvoidrestoreState(Parcelablearg0,ClassLoaderarg1){
    //TODOAuto-generatedmethodstub
    }
    @Override
    publicParcelablesaveState(){
    //TODOAuto-generatedmethodstub
    returnnull;
    }
    @Override
    publicvoidstartUpdate(Viewarg0){
    //TODOAuto-generatedmethodstub
    }
    @Override
    publicvoidfinishUpdate(Viewarg0){
    //TODOAuto-generatedmethodstub
    }
    }
    classMyListenerimplementsOnPageChangeListener{
    @Override
    publicvoidonPageScrollStateChanged(intarg0){
    //TODOAuto-generatedmethodstub
    }
    @Override
    publicvoidonPageScrolled(intarg0,floatarg1,intarg2){
    //TODOAuto-generatedmethodstub
    }
    @Override
    publicvoidonPageSelected(intarg0){
    for(inti=0;i<imageViews.length;i++){
    imageViews[arg0]
    .setBackgroundResource(R.drawable.guide_dot_white);
    if(arg0!=i){
    imageViews[i]
    .setBackgroundResource(R.drawable.guide_dot_black);
    }
    }
    }
    }
    }

    最后在提醒一句,不要忘记加入android-support-v4.jar这个jar包。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告