Android 之 ViewPager (一)

对于经常要在一个窗口里面切换多布局的,如果只单纯的使用手势切换,多少还是有点费劲,官方给我们提供了一个组件ViewPager,可以做到很棒的切换。

实现思路:

1、先添加一个ViewPager组件;
2、创建几个XML布局;
3、使用适配器的方法将布局添加到组件中。

Activity布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager1"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

</LinearLayout>

left_activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@color/colorPrimary"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_gravity="center"
        android:gravity="center"
        android:text="过江千尺浪"
        android:textColor="@android:color/white"
        android:textSize="24sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

right_activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@android:color/holo_blue_dark"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_gravity="center"
        android:gravity="center"
        android:text="入竹万杆斜"
        android:textColor="@android:color/white"
        android:textSize="24sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

Java代码:

public class MainActivity extends AppCompatActivity {

    ViewPager viewPager;
    List<View> views;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        hide_actionbar();
        init();
//      找到布局
        View left_view = View.inflate(MainActivity.this,R.layout.left_activity,null);
        View right_view = View.inflate(MainActivity.this,R.layout.right_activity,null);
//      添加布局
        views.add(left_view);
        views.add(right_view);
//      添加适配器
        viewPager.setAdapter(new MyAdapter(views));

    }
//    隐藏actionbar,纯粹为了好看而已
    private void hide_actionbar(){
        ActionBar actionBar = getSupportActionBar();

        if (actionBar != null) {
            actionBar.hide();
        }
    }
//    初始化组件
    private void init(){
        viewPager = findViewById(R.id.viewpager1);
        views = new ArrayList<>();
    }
    class MyAdapter extends PagerAdapter{

        private List<View> views;
        public MyAdapter(List<View> views) {
            this.views = views;
        }

//        得到view的总数量
        @Override
        public int getCount() {
            return views.size();
        }
//      一般返回一个true就行
        @Override
        public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
            return view == object;
        }

        @NonNull
        @Override
//        添加布局组件
        public Object instantiateItem(@NonNull ViewGroup container, int position) {
            container.addView(views.get(position));
            return views.get(position);
        }
//        销毁布局组件
        @Override
        public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
            container.removeView(views.get(position));
        }
    }

}

效果图(就不录GIF了):
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ViewPager是一个Android支持库中的类,它允许用户在不同的页面之间进行滑动。在Android Studio中使用ViewPager的步骤如下: 1. 在build.gradle文件中添加ViewPager的依赖: ``` dependencies { implementation 'com.android.support:viewpager:28.0.0' } ``` 2. 在XML布局文件中添加ViewPager: ``` <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 创建一个FragmentPagerAdapter或FragmentStatePagerAdapter的子类: ```java public class MyPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragmentList = new ArrayList<>(); private final List<String> mFragmentTitleList = new ArrayList<>(); public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } public void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment); mFragmentTitleList.add(title); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); } } ``` 4. 在Activity或Fragment中设置ViewPager的适配器: ```java MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager()); adapter.addFragment(new Fragment1(), "Fragment 1"); adapter.addFragment(new Fragment2(), "Fragment 2"); adapter.addFragment(new Fragment3(), "Fragment 3"); ViewPager viewPager = findViewById(R.id.view_pager); viewPager.setAdapter(adapter); ``` 5. (可选)如果你想要使用TabLayout来帮助用户切换页面,可以使用以下代码: ```java TabLayout tabLayout = findViewById(R.id.tab_layout); tabLayout.setupWithViewPager(viewPager); ``` 这样就可以在Android应用中使用ViewPager了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值