zoukankan      html  css  js  c++  java
  • 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();
                }
            });

    以上。

  • 相关阅读:
    html iframe 滚动条
    Angular-Ant Desigin 开篇
    端口访问不了的原因
    swift 加载 本地html 和 网络路径
    xcode9.4 报错 error:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
    viewDidLoad, viewWillDisappear, viewWillAppear等区别及各自的加载顺序
    JavaScript设计模式之一Interface接口
    ES6原生Class
    react portals
    react-native-pushy 热更新
  • 原文地址:https://www.cnblogs.com/fishbone-lsy/p/4359382.html
Copyright © 2011-2022 走看看