Android入门第31天-Android里的ViewFlipper翻转视图的使用
创始人
2024-01-30 07:00:30
0

介绍

本篇给大家带了的是ViewFlipper,它是Android自带的一个多页面管理控件,且可以自动播放! 和ViewPager不同,ViewPager是一页页的,而ViewFlipper则是一层层的,和ViewPager一样,很多时候, 用来实现进入应用后的引导页,或者用于图片轮播,本篇我们我们会使用两个例子:一个自动播放首页轮播页一个手动可左右滑动道页的轮播页来说透这个组件的使用。

课程目标

我们可以看到,这是一个化妆品的轮播图。它以每隔2秒的间隔,从右到左自动一个个轮播展现首页的广告图。

项目结构

通过项目结构,我们可以知道我们的轮播页有5页,每一页内含一个图片。

然后我们做了一个平滑过渡的动画:

  • right_in.xml,从右向左,每隔2秒,滑动展示一张;
  • right_out.xml,当图片滑到最后一张,自动切换成第一张再继续从右到左每隔2秒,滑动展示一张

这么一个循环。

前端代码

right_in.xml


 right_out.xml


page_ad_one.xml~page_ad_five.xml

内容都一样,只是内含的图片不一样



 activity_main.xml


后端代码

MainActivity.java

package org.mk.android.demoautoflipper;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.ViewFlipper;public class MainActivity extends AppCompatActivity {private ViewFlipper adFlipper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);adFlipper=(ViewFlipper)findViewById(R.id.adFlipper);adFlipper.startFlipping();}
}

非常简单。

接着我们来说手动滑动的例子

手动滑动代替了自动轮播,因此我们支持两种手势,往左滑和往右滑。因此我人把从右到左滑设成+向,从左到向设成-向。因此我们为了支持向右、向左的手势还需要设置一组left_in.xml和left_out.xml。

前端代码只增加了left_in.xml和left_out.xml

left_in.xml


left_out.xml


MainActivity.java

package org.mk.android.demomanualflipper;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.ImageView;
import android.widget.ViewFlipper;public class MainActivity extends AppCompatActivity {private Context mContext;private ViewFlipper vflp_help;private int[] resId = {R.drawable.ad_pic_1, R.drawable.ad_pic_2,R.drawable.ad_pic_3, R.drawable.ad_pic_4, R.drawable.ad_pic_5};private final static int DISTANCE = 200;   //最小距离private CustomerizedGestureListener cgListener;private GestureDetector gDetector;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = MainActivity.this;//实例化SimpleOnGestureListener与GestureDetector对象cgListener = new CustomerizedGestureListener();gDetector = new GestureDetector(this, cgListener);vflp_help = (ViewFlipper) findViewById(R.id.adFlipper);//动态导入添加子Viewfor(int i = 0;i < resId.length;i++){vflp_help.addView(getImageView(resId[i]));}}//重写onTouchEvent触发MyGestureListener里的方法@Overridepublic boolean onTouchEvent(MotionEvent event) {return gDetector.onTouchEvent(event);}//自定义一个GestureListener,这个是View类下的private class CustomerizedGestureListener extends GestureDetector.SimpleOnGestureListener {@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float v, float v1) {if(e1.getX() - e2.getX() > DISTANCE){vflp_help.setInAnimation(mContext,R.anim.right_in);vflp_help.setOutAnimation(mContext, R.anim.right_out);vflp_help.showNext();}else if(e2.getX() - e1.getX() > DISTANCE){vflp_help.setInAnimation(mContext,R.anim.left_in);vflp_help.setOutAnimation(mContext, R.anim.left_out);vflp_help.showPrevious();}return true;}}private ImageView getImageView(int resId){ImageView img = new ImageView(this);img.setBackgroundResource(resId);return img;}
}

代码导读:

  • 首先,在这个例子里我们使用了代码来添加一个个ViewFlipper;
  • 其次我们定义了一个GestureDetector.SimpleOnGestureListener来支持向左滑屏或者向右滑屏。在这个事件里我们通过e1与e2的距离(DISTANCE)可判断出正负,然后以此来控制向左到头来换第一张,向右到头了换最后一张的效果;

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...