Android滑动页面导航

时间:2013-12-30 10:23:42

标签: android

我正在尝试在android中实现滑动页面导航,现在我正在使用片段活动并在其中查看寻呼机。我能够实现滑动页面的一点点,但我希望它更全面。我该怎么办?这是我的代码

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button1 = (Button)findViewById(R.id.button1);
    Button button2 = (Button)findViewById(R.id.button2);
    Button button3 = (Button)findViewById(R.id.button3);

    List<Fragment> fragments = getFragments();

    pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);

    pager = (ViewPager)findViewById(R.id.viewpager);
    pager.setAdapter(pageAdapter);
    pager.setCurrentItem(0);

    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            pager.setCurrentItem(0);
        }
    });

    button2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            pager.setCurrentItem(1);
        }
    });

    button3.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            pager.setCurrentItem(2);
        }
    });
}

private List<Fragment> getFragments() {
    List<Fragment> fList = new ArrayList<Fragment>();

    fList.add(MyFragment.newInstance("Tv Shows"));
    fList.add(MyFragment.newInstance("Movies"));
    fList.add(MyFragment.newInstance("Music Videos"));

    return fList;
}

1 个答案:

答案 0 :(得分:1)

我正在编辑您的问题,并将其转换为一个非常简单的教程。

你走了:

main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:background="@drawable/back"
    android:layout_height="match_parent" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="60dp"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/button1" >

    </android.support.v4.view.ViewPager>

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_alignRight="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="15dp"
        android:text="Movies" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button2"
        android:layout_below="@+id/button2"
        android:layout_marginTop="16dp"
        android:layout_toLeftOf="@+id/viewpager"
        android:text="Music Videos" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="18dp"
        android:layout_marginTop="110dp"
        android:text="Tv Shows" />

</RelativeLayout>

然后是fragment.xml;将这些文件放入res / layout文件夹。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/back"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="24dp" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView"
        android:background="@drawable/back" >

        <RelativeLayout
            android:id="@+id/imageView1"
            android:layout_width="280dp"
            android:layout_height="380dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:background="@drawable/movie1" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_marginBottom="37dp"
                android:layout_marginRight="85dp"
                android:text="SIMPSONS" />

            </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout15"
            android:layout_width="280sp"
            android:layout_height="230dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignRight="@+id/imageView1"
            android:background="@drawable/movie"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout1"
            android:layout_width="20dp"
            android:layout_height="150dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/imageView1"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout2"
            android:layout_width="250dp"
            android:layout_height="150dp"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/RelativeLayout1"
            android:background="@drawable/avatar"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout3"
            android:layout_width="250dp"
            android:layout_height="10dp"
            android:layout_alignLeft="@+id/RelativeLayout2"
            android:layout_below="@+id/RelativeLayout2"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout4"
            android:layout_width="250dp"
            android:layout_height="150dp"
            android:layout_alignLeft="@+id/RelativeLayout3"
            android:layout_below="@+id/RelativeLayout3"
            android:background="@drawable/movienight"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout5"
            android:layout_width="250dp"
            android:layout_height="10dp"
            android:layout_alignLeft="@+id/RelativeLayout4"
            android:layout_below="@+id/RelativeLayout4"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout6"
            android:layout_width="250sp"
            android:layout_height="230dp"
            android:layout_alignLeft="@+id/RelativeLayout5"
            android:layout_below="@+id/RelativeLayout5"
            android:background="@drawable/movie3"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout7"
            android:layout_width="70dp"
            android:layout_height="600dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/RelativeLayout2"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout8"
            android:layout_width="280dp"
            android:layout_height="380dp"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/RelativeLayout7"
            android:background="@drawable/band" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout9"
            android:layout_width="10sp"
            android:layout_height="20dp"
            android:layout_alignLeft="@+id/RelativeLayout8"
            android:layout_below="@+id/RelativeLayout8"
            android:background="@drawable/movie3"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout20"
            android:layout_width="280sp"
            android:layout_height="230dp"
            android:layout_alignLeft="@+id/RelativeLayout9"
            android:layout_below="@+id/RelativeLayout9"
            android:background="@drawable/movie3"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout10"
            android:layout_width="20dp"
            android:layout_height="600dp"
            android:layout_alignParentTop="true"
            android:layout_marginTop="21dp"
            android:layout_toRightOf="@+id/RelativeLayout8"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout11"
            android:layout_width="250dp"
            android:layout_height="150dp"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/RelativeLayout10"
            android:background="@drawable/war"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout12"
            android:layout_width="250dp"
            android:layout_height="10dp"
            android:layout_alignLeft="@+id/RelativeLayout11"
            android:layout_below="@+id/RelativeLayout11"
            android:orientation="vertical" >
        </RelativeLayout>
        ////

        <RelativeLayout
            android:id="@+id/RelativeLayout14"
            android:layout_width="250dp"
            android:layout_height="10dp"
            android:layout_alignLeft="@+id/RelativeLayout11"
            android:layout_below="@+id/RelativeLayout13"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout13"
            android:layout_width="250dp"
            android:layout_height="150dp"
            android:layout_above="@+id/RelativeLayout5"
            android:layout_alignLeft="@+id/RelativeLayout12"
            android:background="@drawable/war"
            android:orientation="vertical" >
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/RelativeLayout16"
            android:layout_width="250sp"
            android:layout_height="230dp"
            android:layout_alignLeft="@+id/RelativeLayout14"
            android:layout_alignTop="@+id/RelativeLayout6"
            android:background="@drawable/band"
            android:orientation="vertical" >
        </RelativeLayout>

    </RelativeLayout>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textView"
        android:layout_centerHorizontal="true"
        android:text="Favourites" />

</RelativeLayout>

然后在你的主要活动中:

public class MainActivity extends FragmentActivity {
    MyPageAdapter pageAdapter;
    ViewPager pager;

    static ImageView image1 ;
    static ImageView image2;
    static ImageView image3;
    static ImageView image4;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button1=(Button)findViewById(R.id.button1);
        Button button2=(Button)findViewById(R.id.button2);
        Button button3=(Button)findViewById(R.id.button3);

        List<Fragment> fragments = getFragments();

        pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);

        pager = (ViewPager)findViewById(R.id.viewpager);
        pager.setAdapter(pageAdapter);
        pager.setCurrentItem(0);
        button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                pager.setCurrentItem(0);
            }
        });

        button2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                pager.setCurrentItem(1);
            }
        });

        button3.setOnClickListener(new OnClickListener() {

                @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                pager.setCurrentItem(2);
            }
        });
    }

    private List<Fragment> getFragments(){
        List<Fragment> fList = new ArrayList<Fragment>();

        fList.add(MyFragment.newInstance("Tv Shows"));
        fList.add(MyFragment.newInstance("Movies"));
        fList.add(MyFragment.newInstance("Music Videos"));

        return fList;
    }

    private class MyPageAdapter extends FragmentPagerAdapter {
        private List<Fragment> fragments;

        public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
            super(fm);
            this.fragments = fragments;
        }

        @Override
        public Fragment getItem(int position) {
            return this.fragments.get(position);

        }

        @Override
        public int getCount() {
            return this.fragments.size();
        }
    }
}

创建一个新的Java类MyFragment:

public class MyFragment extends Fragment implements AnimationListener {

    public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
    private Animation animation1;
    private Animation animation2;
    private boolean isBackOfCardShowing = true;

    RelativeLayout image1;
    RelativeLayout image2;
    RelativeLayout image3;
    RelativeLayout image4;
    RelativeLayout image5;
    RelativeLayout image6;
    RelativeLayout image7;
    RelativeLayout image8;
    RelativeLayout image9;
    RelativeLayout image10;


    View v;
    Handler updateHandler;
    public static final MyFragment newInstance(String message)
    {
        MyFragment f = new MyFragment();
        Bundle bdl = new Bundle(1);
        bdl.putString(EXTRA_MESSAGE, message);
        f.setArguments(bdl);
        return f;
    }

    Runnable RecurringTask = new Runnable() {
        public void run() {

            // Do whatever you want
            image1.clearAnimation();
            image2.clearAnimation();
            image3.clearAnimation();
            image4.clearAnimation();
            image1.setAnimation(animation1);
            image1.startAnimation(animation1);
            image2.setAnimation(animation1);
            image2.startAnimation(animation1);
            image3.setAnimation(animation1);
            image3.startAnimation(animation1);
            image4.setAnimation(animation1);
            image4.startAnimation(animation1);

            // Call this method again every 30 seconds
            updateHandler.postDelayed(this, 10000);
        }
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        String message = getArguments().getString(EXTRA_MESSAGE);
        v = inflater.inflate(R.layout.myfragment_layout, container, false);
        TextView messageTextView = (TextView)v.findViewById(R.id.textView);
        messageTextView.setText(message);

        image1 = (RelativeLayout)v.findViewById(R.id.imageView1);
        image2 = (RelativeLayout)v.findViewById(R.id.RelativeLayout2);
        image3 = (RelativeLayout)v.findViewById(R.id.RelativeLayout15);
        image4 = (RelativeLayout)v.findViewById(R.id.RelativeLayout4);
        image5 = (RelativeLayout)v.findViewById(R.id.RelativeLayout6);
        image6 = (RelativeLayout)v.findViewById(R.id.RelativeLayout8);
        image7 = (RelativeLayout)v.findViewById(R.id.RelativeLayout20);
        image8 = (RelativeLayout)v.findViewById(R.id.RelativeLayout11);
        image9 = (RelativeLayout)v.findViewById(R.id.RelativeLayout13);
        image10 = (RelativeLayout)v.findViewById(R.id.RelativeLayout16);

        //
        animation1 = AnimationUtils.loadAnimation(getActivity(), R.anim.to_middle);
        animation1.setAnimationListener(this);
        animation2 = AnimationUtils.loadAnimation(getActivity(), R.anim.from_middle);
        animation2.setAnimationListener(this);
        if (message.equals("Tv Shows"))
        {
            /* image1.setBackgroundResource(R.drawable.movie1);
               image2.setBackgroundResource(R.drawable.movie);
               image3.setBackgroundResource(R.drawable.war);
               image4.setBackgroundResource(R.drawable.avatar); */
        }

        if (message.equals("Movies"))
        {
            /* image1.setBackgroundResource(R.drawable.movie);
               image2.setBackgroundResource(R.drawable.movie1);
               image3.setBackgroundResource(R.drawable.movienight);
               image4.setBackgroundResource(R.drawable.avatar); */
        }

        if (message.equals("Music Videos"))
        {
            /* image1.setBackgroundResource(R.drawable.movienight);
               image2.setBackgroundResource(R.drawable.avatar);
               image3.setBackgroundResource(R.drawable.movie);
               image4.setBackgroundResource(R.drawable.movie1); */
        }

        //
        updateHandler = new Handler();

        // Do this first after one second
        updateHandler.postDelayed(RecurringTask, 1000);
        return v;
    }

    @Override
    public void onAnimationEnd(Animation animation) {

        if (animation == animation1) {
            if (isBackOfCardShowing) {
                image1.setBackgroundResource(R.drawable.avatar);
                image2.setBackgroundResource(R.drawable.movie);
                image3.setBackgroundResource(R.drawable.movienight);
                image4.setBackgroundResource(R.drawable.movie1);
            }
            else {
                image2.setBackgroundResource(R.drawable.avatar);
                image1.setBackgroundResource(R.drawable.movie);
                image3.setBackgroundResource(R.drawable.movienight);
                image4.setBackgroundResource(R.drawable.movie1);
            }
            image1.clearAnimation();
            image2.clearAnimation();
            image3.clearAnimation();
            image4.clearAnimation();
            image1.setAnimation(animation2);
            image2.setAnimation(animation2);
            image3.setAnimation(animation2);
            image4.setAnimation(animation2);
            image1.startAnimation(animation2);
            image2.startAnimation(animation2);
            image3.startAnimation(animation2);
            image4.startAnimation(animation2);
        }
        else {
            isBackOfCardShowing=!isBackOfCardShowing;
            // v.findViewById(R.id.button1).setEnabled(true);
        }
    }

    @Override
    public void onAnimationRepeat(Animation arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationStart(Animation arg0) {
        // TODO Auto-generated method stub

    }
}

最后,编写你的页面适配器,你很高兴:

package com.example.pager;

public class MyPageAdapter extends FragmentPagerAdapter {
    private List<Fragment> fragments;

    public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int position) {
        return this.fragments.get(position);
    }

    @Override
    public int getCount() {
        return this.fragments.size();
    }
}

AS:删除用于动画的代码块。