• ViewPager用法(二)(Fragment)


      上一节提到了用ViewPager做ImageView的切换,但这个毕竟局限。在Activity中,只有一种组件是必需的,那就是Fragment。这一节我尝试一下在ViewPager中放Fragment。

      我先建了三个Fragment

    XML:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/fg1_txId"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            />
        <Button
            android:id="@+id/fg1_btId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="test1"/>
    
    </LinearLayout>

    Fragment1:

    public class Fragment1 extends android.support.v4.app.Fragment {
        Button bt;
        TextView tv;
        static int i=0;
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View fragment1Layout = inflater.inflate(R.layout.fragment1_layout,container,false);
            return fragment1Layout;
        }
    
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            bt = (Button) getActivity().findViewById(R.id.fg1_btId);
            tv = (TextView) getActivity().findViewById(R.id.fg1_txId);
            tv.setText(""+i);
            bt.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    i++;
                    tv.setText(""+i);
                }
            });
        }
    }

    Fragment2和Fragment3与上面的相似。

    然后是主界面的XML:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <android.support.v4.view.ViewPager
            android:id="@+id/viewPagerId"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            </android.support.v4.view.ViewPager>
    
    </LinearLayout>

      这跟上一节没什么两样。

    接下来是主界面的Activity

      先声明类:

    public class MainActivity extends FragmentActivity {
        List<android.support.v4.app.Fragment> mFragment =  new ArrayList<android.support.v4.app.Fragment>();
        FragmentManager fragmentManager;
        ViewPager viewPager;
        Fragment1 fragment1;
        Fragment2 fragment2;
        Fragment3 fragment3;

      然后获取实例,设置动画

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            viewPager = (ViewPager) findViewById(R.id.viewPagerId);
    
            fragment1 = new Fragment1();
            fragment2 = new Fragment2();
            fragment3 = new Fragment3();
            mFragment.add(fragment1);
            mFragment.add(fragment2);
            mFragment.add(fragment3);
            //设置ViewPager翻页动画
            viewPager.setPageTransformer(true , new DepthPageTransformer());

      最后,设置ViewPager的适配器

            viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
                @Override
                public android.support.v4.app.Fragment getItem(int i) {
                    return mFragment.get(i);
                }
    
                @Override
                public int getCount() {
                    return mFragment.size();
                }
            });

    以上。

  • 相关阅读:
    第二次:Ubuntu16.04 安装Docker
    第一次:从今开始玩Linux,Ubuntu16.04
    学习日常
    Vector和ArrayList的异同、Hashtable和HashMap的异同
    如何吃透Python的面向对象(OOP)
    Python基础(下篇)
    Python基础(中篇)
    Python基础(上篇)
    Pycharm安装
    Python的安装与配置
  • 原文地址:https://www.cnblogs.com/fishbone-lsy/p/4359382.html
Copyright © 2020-2023  润新知