• 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();
                }
            });

    以上。

  • 相关阅读:
    Python使用SMTP模块、email模块发送邮件
    harbor搭建及使用
    ELK搭建-windows
    ELK技术栈之-Logstash详解
    【leetcode】1078. Occurrences After Bigram
    【leetcode】1073. Adding Two Negabinary Numbers
    【leetcode】1071. Greatest Common Divisor of Strings
    【leetcode】449. Serialize and Deserialize BST
    【leetcode】1039. Minimum Score Triangulation of Polygon
    【leetcode】486. Predict the Winner
  • 原文地址:https://www.cnblogs.com/fishbone-lsy/p/4359382.html
Copyright © 2020-2023  润新知