In this tutorial, we’ll be discussing and implementing the AdapterViewFlipper class in our Android Application.

在本教程中,我们将在Android应用程序中讨论和实现AdapterViewFlipper类。

Android AdapterViewFlipper (Android AdapterViewFlipper)

AdapterViewFlipper class is a subclass of the ViewAnimator class and is used to flip between 2 or more views such that only one view is displayed at a time. This is commonly used in slides.

AdapterViewFlipper类是ViewAnimator类的子类,用于在2个或更多视图之间切换,从而一次仅显示一个视图。 这通常在幻灯片中使用。

Difference between ViewFlipper and AdapterViewFlipper

ViewFlipper和AdapterViewFlipper之间的区别

ViewFlipper is used to display all the slide views initially. Statically. That means the views won’t be recycled.

ViewFlipper用于最初显示所有幻灯片视图。 静态地。 这意味着视图将不会被回收。

AdapterViewFlipper is used to display all the child views using the Adapter. Similar to a ListView/Spinner/RecyclerView. So there is space for recycling the views and also loading views dynamically.

AdapterViewFlipper用于使用适配器显示所有子视图。 类似于ListView / Spinner / RecyclerView。 因此,有空间回收视图并动态加载视图。

An AdapterViewFlipper is defined in the XML layout in the following manner:

通过以下方式在XML布局中定义AdapterViewFlipper:

<AdapterViewFlipperandroid:layout_width="match_parent"android:layout_height="match_parent"></AdapterViewFlipper>

Following are the important XML attributes used:

以下是使用的重要XML属性:

  • android:autoStart – To start the view flipping once the adapter is loaded.android:autoStart –加载适配器后开始翻转视图。
  • android:flipInterval – Used to set the time interval after which the next child view is presented. Set in milliseconds.android:flipInterval –用于设置显示下一个子视图的时间间隔。 以毫秒为单位设置。

Each of these has their Java counterpart methods as well.

每个方法也都有其Java对应方法。

Following are some of the other Java methods used on AdapterViewFlipper class:

以下是AdapterViewFlipper类上使用的其他一些Java方法:

  • isFlipping() – Returns a boolean to indicate whether the AdapterViewFlipper flipping is ongoing or not.isFlipping() –返回一个布尔值,以指示AdapterViewFlipper翻转是否正在进行。
  • showNext() – To manually go to the next view.showNext() –手动转到下一个视图。
  • showPrevious() – Goes to the previous view.showPrevious() –转到上一个视图。
  • startFlipping() – To begin flipping. This gets automatically called if autostart is true.startFlipping() –开始翻转。 如果autostart为true,则将自动调用此方法。
  • stopFlipping() – To stop flipping.stopFlipping() –停止翻转。
  • isAutoStart() – Returns true if startFlipping was automatically called when the child views where attached to the Adapter.isAutoStart() –如果在子级查看附加到适配器的位置时自动调用了startFlipping则返回true。

In the following section, we’ll be creating an android application using the above discussed AdapterViewFlipper concepts.

在以下部分中,我们将使用上面讨论的AdapterViewFlipper概念创建一个android应用程序。

项目结构 (Project Structure)

码 (Code)

The code for the activity_main.xml layout is given below:

下面给出了activity_main.xml布局的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"xmlns:tools="https://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><AdapterViewFlipperandroid:id="@+id/adapterViewFlipper"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:autoStart="true" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/adapterViewFlipper"android:layout_centerHorizontal="true"android:text="STOP/START" /></RelativeLayout>

The code for the row_view_item.xml is given below:

row_view_item.xml的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView"android:layout_width="wrap_content"android:layout_height="150dp"android:layout_gravity="center" /><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginTop="2dp"android:textColor="#000" />
</LinearLayout>

The code for the MainActivity.java class is given below:

MainActivity.java类的代码如下:

package com.journaldev.androidadapterviewflipper;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterViewFlipper;
import android.widget.Button;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {AdapterViewFlipper adapterViewFlipper;ArrayList<AndroidVersion> androidVersions = new ArrayList<>();Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);populateData();adapterViewFlipper = findViewById(R.id.adapterViewFlipper);button = findViewById(R.id.button);adapterViewFlipper.setAdapter(new AdapterViewFlipperAdapter(this, androidVersions));adapterViewFlipper.setFlipInterval(500);adapterViewFlipper.startFlipping();button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (adapterViewFlipper.isFlipping())adapterViewFlipper.stopFlipping();elseadapterViewFlipper.startFlipping();}});}@Overrideprotected void onResume() {super.onResume();if (adapterViewFlipper != null && !adapterViewFlipper.isFlipping())adapterViewFlipper.startFlipping();}@Overrideprotected void onPause() {super.onPause();if (adapterViewFlipper != null && adapterViewFlipper.isFlipping())adapterViewFlipper.stopFlipping();}private void populateData() {androidVersions.add(new AndroidVersion(R.drawable.android_e, "Android Eclair"));androidVersions.add(new AndroidVersion(R.drawable.android_g, "Android Gingerbread"));androidVersions.add(new AndroidVersion(R.drawable.android_j, "Android Jellybean"));androidVersions.add(new AndroidVersion(R.drawable.android_k, "Android Kitkat"));androidVersions.add(new AndroidVersion(R.drawable.android_l, "Android Lollipop"));androidVersions.add(new AndroidVersion(R.drawable.android_m, "Android Marshmallow"));androidVersions.add(new AndroidVersion(R.drawable.android_n, "Android Nougat"));androidVersions.add(new AndroidVersion(R.drawable.android_o, "Android Oreo"));}
}class AndroidVersion {int drawableInt;String versionName;AndroidVersion(int d, String v) {drawableInt = d;versionName = v;}
}

We’ve defined a Model class AndroidVersion.
Data is populated in the Adapter class from an ArrayList of AndroidVersion.
In order to save memory, we’ll stop the flipping when the activity is in the background.

我们定义了一个Model类AndroidVersion。
数据从AndroidVersion的ArrayList填充到Adapter类中。
为了节省内存,当活动处于后台时,我们将停止翻转。

We can add animations when a view enters and exits the AdapterViewFlipper by:

当视图进入和退出AdapterViewFlipper时,我们可以通过以下方式添加动画:

adapterViewFlipper.setInAnimation() and adapterViewFlipper.setInAnimation()

adapterViewFlipper.setInAnimation()adapterViewFlipper.setInAnimation()

The code for the AdapterViewFlipperAdapter.java class is given below:

AdapterViewFlipperAdapter.java类的代码如下:

package com.journaldev.androidadapterviewflipper;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;import java.util.ArrayList;public class AdapterViewFlipperAdapter extends BaseAdapter {private ArrayList<AndroidVersion> androidVersions;private Context mContext;public AdapterViewFlipperAdapter(Context context, ArrayList<AndroidVersion> androidVersions) {this.mContext = context;this.androidVersions = androidVersions;}@Overridepublic int getCount() {return androidVersions.size();}@Overridepublic Object getItem(int position) {return androidVersions.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = LayoutInflater.from(mContext).inflate(R.layout.row_view_item, parent, false);}AndroidVersion version = androidVersions.get(position);TextView textView = convertView.findViewById(R.id.textView);ImageView imageView = convertView.findViewById(R.id.imageView);textView.setText(version.versionName);imageView.setImageResource(version.drawableInt);return convertView;}
}

The output of the above application in action is given below:

上面应用程序的输出如下:

This brings an end to this tutorial. You can download the project from the link below:

本教程到此结束。 您可以从下面的链接下载项目:

AndroidAdapterViewFlipperAndroidAdapterViewFlipper
Github Project LinkGithub项目链接

翻译自: https://www.journaldev.com/23318/android-adapterviewflipper

Android AdapterViewFlipper相关推荐

  1. Android 中 ViewFlipper、AdapterViewFlipper使用

    一.ViewFlipper 在很多APP都有如下的公告通知效果(上下自动翻滚) 这种效果可以使用很多方式实现,有一个简便的方式可以使用ViewFlipper控件实现,ViewFlipper控件继承结果 ...

  2. java写轮播图,Android零基础入门第49节:AdapterViewFlipper图片轮播

    上一期学习了ExpandableListView的使用,你已经掌握了吗?本期开始学习AdapterViewFilpper的使用. 一.认识AdapterViewFilpper AdapterViewF ...

  3. Android实时取景:用SurfaceView实现

    对于基于摄像头的Android应用,实时取景是一个基本前提,通过前置或后置摄像头持续获取捕获到的内容,可以进一步做处理(人脸检测.美颜.滤镜等). 所谓实时取景,简单说就是调用android的摄像头, ...

  4. 第三部分:Android 应用程序接口指南---第一节:应用程序组件---第七章 App Widgets...

    第7章 App Widgets App Widgets是一个应用程序的微型视图,可以嵌入到其他应用程序(如主屏幕)并且能够定期更新.你可以发布一个应用程序的App Widget,而这些视图称为窗口的用 ...

  5. Android零基础入门第77节:Activity任务栈和启动模式

    2019独角兽企业重金招聘Python工程师标准>>> 通过前面的学习,Activity的基本使用都已掌握,接下来一起来学习更高级的一些内容. Android采用任务栈(Task)的 ...

  6. Android 之窗口小部件详解--App Widget

    1 App Widget简介 App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新.你可以通过一个App Widge ...

  7. Android零基础入门第65节:RecyclerView分割线开发技巧

    2019独角兽企业重金招聘Python工程师标准>>> 在上一期通过简单学习,已经领略到了RecyclerView的灵活性,当然都是一些最基础的用法,那么本期一起来学习Recycle ...

  8. Android应用小工具(窗口小部件)

    Widget是可以在其他应用程序被嵌入和接收定期更新的微型应用程序视图. 在创建一个应用程序窗口小部件,需要满足以下条件: AppWidgetProviderInfo--描述元数据为应用窗口小部件,如 ...

  9. Android显示系统之View与SurfaceView更新屏幕的区别

    /******************************************************************************************** * auth ...

最新文章

  1. .net core出现Http Error 502.5 - Process Failure
  2. hadoop2.0集群进程_hadoop集群基本进程
  3. 认识jQuery及jQuery选择器
  4. anoconda如何切换路径
  5. Leetcode255用队列构造栈
  6. 59. Leetcode 81. 搜索旋转排序数组 II(二分查找-局部有序)
  7. Python 数据分析与展示笔记3 -- Matplotlib 库基础
  8. 华硕笔记本卸载并重新安装Ubuntu16.04
  9. python unittest生成html报告_python unittest--HTMLTestRunner生成报告
  10. redis 计数 java_redission计数器实现,redisTemplate计数器
  11. 模拟退火算法(simulated annealing algorithm)求极值
  12. 【YOLOV5-5.x 源码解读】yolo.py
  13. CCS中的linked resource
  14. Python为什么这些年在编程语言排行榜上一直上升?告诉你11个原因
  15. TCP粘包是什么?如何处理?UDP有粘包吗?
  16. visibility
  17. echarts 多种类型的legend一行居中展示
  18. LabVIEW使用两三年感触
  19. Theory: For loop(理论:For循环)
  20. 苹果6s强制删除id锁_苹果手机忘了解锁密码不要慌,你可以这样做!

热门文章

  1. 获取PowerShell某个对象的所有命令
  2. 【原创】软件团队建设和管理--之我见
  3. [转载] Python图结构(复杂网络)可视化模块——networkx
  4. MySQL中boolean类型设置
  5. [置顶] Embedded Server:像写main函数一样写Web Server
  6. python学习笔记之数据类型(二)
  7. UE4删除C++Classes下的类
  8. selenium——元素的定位
  9. 查看主机DNSserver
  10. cookie与session的比较