在谈论 Android 应用程序时,首先想到的是多样性。有很多种类的 Android 应用程序为用户提供漂亮的动态 UI。其中一项功能是使用左右滑动而不是单击按钮在我们的 Android 应用程序中导航。它不仅看起来更简单和优雅,而且还为用户提供了轻松访问。有许多应用程序使用此滑动功能来滑动应用程序中的不同活动。例如,流行的聊天应用 Snapchat 使用它来浏览镜头、聊天和故事。在这里,我们将学习如何在我们自己的 Android 应用中实现滑动视图。
我们可以通过使用两个功能来实现这一点:
- 片段片段只是活动的一部分。我们可以让一个片段占据屏幕的一部分或整个屏幕。或者我们可以同时显示多个片段来组成一个完整的屏幕。在一个活动中,我们还可以相互交换不同的片段。
- ViewPager ViewPager 是Java中的一个类,它与 Fragments 一起使用。它主要用于设计应用程序的 UI。
它是如何工作的?
首先,我们需要使用setAdapter()方法在ViewPager上设置一个适配器。我们设置的适配器称为FragmentPagerAdapter ,它是Java的一个抽象类。因此,我们创建了我们自己的SampleFragmentPagerAdapter ,它从FragmentPagerAdapter扩展并在屏幕上显示我们的 Fragment。当我们在设备中启动应用程序时,ViewPager 会询问 SampleFragmentPagerAdapter 有多少页面可以滑动。适配器的getCount()方法将此答案返回给 ViewPager。然后 ViewPager 请求位于第 0 个位置的 Fragment 并且适配器返回该特定片段,然后 ViewPager 将其显示在我们的屏幕上。当我们向左滑动时,ViewPager 向适配器请求第 1 个位置的 Fragment,类似地,它显示在屏幕上并继续下去。
分步实施:
我们将创建三个片段,即用户可以滑动的三个屏幕。然后我们将这些片段添加到我们的FragmentPagerAdapter并最终设置在 ViewPager 上。
注意:要运行这些代码,您需要将它们复制并粘贴到 Android Studio 中,因为它不会在 IDE 上运行!
-
步骤 1:创建片段:
要创建片段,请单击app > Java > com.example.android (右键单击) > New > Fragment > Fragment(Blank)我们可以创建任意数量的 Fragment,但由于我们将只显示三个屏幕,因此我们将创建三个 Fragment。
现在我们将打开我们的 Fragments 并将此代码复制到那里:Java
package com.example.android.gfg; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment1 extends Fragment { @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater .inflate( R.layout.fragment_1, container, false); } }
XML
Java
package com.example.android.gfg; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter { public SimpleFragmentPagerAdapter( FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { if (position == 0) { return new Fragment1(); } else if (position == 1) { return new Fragment2(); } else { return new Fragmnet3(); } } @Override public int getCount() { return 3; } }
activity_main.xml
MainActivity.Java
package com.example.android.gfg; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate( Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the content of the activity // to use the activity_main.xml // layout file setContentView(R.layout.activity_main); // Find the view pager that will // allow the user to swipe // between fragments ViewPager viewPager = (ViewPager)findViewById( R.id.viewpager); // Create an adapter that // knows which fragment should // be shown on each page SimpleFragmentPagerAdapter adapter = new SimpleFragmentPagerAdapter( getSupportFragmentManager()); // Set the adapter onto // the view pager viewPager.setAdapter(adapter); } }
解释:
- 我们正在使用 BuildTools 版本“ 23.0.2 ”导入v4片段。如果我们在导入中遇到错误,我们必须确保我们的 BuildTools 和 SDK 版本与我们导入的库相对应。
- 我们将 Fragment 命名为 Fragment1。
- Fragment1 显示我们现在要做的布局 fragment_1.xml。
-
第 2 步:为 Fragment 创建布局:
每个 Fragment 都需要显示一个布局。我们可以随心所欲地设计这种布局。这是我们如何实现此布局的代码:XML
这看起来像:
同样,我们将为每个片段创建另外两个 Fragment 和相应的布局。
- 第 3 步:创建我们的 FragmentPageAdapter:
现在我们拥有了所有三个 Fragment 并且三个布局都与它们中的每一个相关联,我们现在将构建我们的FragmentPageAdapter并将其命名为 SimpleFragmentPageAdapter 。这可以通过首先创建一个新的Java类并将其命名为 SimpleFragmentPageAdapter 来完成。这是它将包含的代码:Java
package com.example.android.gfg; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter { public SimpleFragmentPagerAdapter( FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { if (position == 0) { return new Fragment1(); } else if (position == 1) { return new Fragment2(); } else { return new Fragmnet3(); } } @Override public int getCount() { return 3; } }
解释:
- getItem()方法返回指定位置的 Fragment。所以首先是 Fragment1,向左滑动时,我们会以相同的顺序获得其他 Fragment。
- getCount()方法返回要显示的 Fragment 的数量,在本例中为 3。
-
第 3 步:创建 MainActivity。 Java和 activity_main.xml :
现在我们已经准备好了一切,最后一步就是制作我们的 MainActivity。 Java和 activity_main.xml 文件。它们可能会因我们正在制作的应用程序而异,但在这种情况下,文件非常简单,如下所示:活动_main.xml
主要活动。Java
package com.example.android.gfg; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate( Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the content of the activity // to use the activity_main.xml // layout file setContentView(R.layout.activity_main); // Find the view pager that will // allow the user to swipe // between fragments ViewPager viewPager = (ViewPager)findViewById( R.id.viewpager); // Create an adapter that // knows which fragment should // be shown on each page SimpleFragmentPagerAdapter adapter = new SimpleFragmentPagerAdapter( getSupportFragmentManager()); // Set the adapter onto // the view pager viewPager.setAdapter(adapter); } }
输出: