广告
返回顶部
首页 > 资讯 > 移动开发 >Android ViewPager实现图片轮翻效果
  • 575
分享到

Android ViewPager实现图片轮翻效果

图片viewpagerAndroid 2022-06-06 04:06:06 575人浏览 八月长安
摘要

很多App都有这种效果,特别一些电商类的App,顶部每隔几秒钟会向右翻页显示下张图片,用来作推广或者内容展示用的。今天来简单地模仿一下,还自带一个自动跳动的小功能(底部有几个小

很多App都有这种效果,特别一些电商类的App,顶部每隔几秒钟会向右翻页显示下张图片,用来作推广或者内容展示用的。今天来简单地模仿一下,还自带一个自动跳动的小功能(底部有几个小点,图片移动的时候,点的状态也在变化),用定时器来实现不难。


import java.util.ArrayList; 
import java.util.List; 
import Android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.os.SystemClock; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v4.view.ViewPager.OnPageChangeListener; 
import android.util.Log; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.LinearLayout.LayoutParams; 
import android.widget.TextView; 
public class MainActivity extends Activity implements OnPageChangeListener { 
 protected static final String TAG = "MainActivity"; 
 private List<ImageView> imageViewList; 
 private ViewPager mViewPager; 
 private final int[] imageResIDs = { 
   R.drawable.a, 
   R.drawable.b, 
   R.drawable.c, 
   R.drawable.d, 
   R.drawable.e 
 }; 
 private final String[] imageDescriptions = { 
   "巩俐不低俗,我就不能低俗", 
   "扑树又回来啦!再唱经典老歌引万人大合唱", 
   "揭秘北京电影如何升级", 
   "乐视网TV版大派送", 
   "热血屌丝的反杀" 
 }; 
 private TextView tvImageDescription; // 图片描述 
 private LinearLayout llPointGroup;  // 点控件的组 
 private int previousPosition = 0;  // viewpager选中的前一个position 
 private boolean isStop = false; // 控制循环的子线程是否停止 
 private Handler handler = new Handler(){ 
  @Override 
  public void handleMessage(Message msg) { 
   super.handleMessage(msg); 
   mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1); 
  } 
 }; 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  initView(); 
  new Thread(new Runnable() { 
   @Override 
   public void run() { 
    // 每两秒钟向主线程发送一条消息, 切换viewpager的界面 
    while(!isStop) { 
     SystemClock.sleep(2000); 
     handler.sendEmptyMessage(0); 
    } 
    Log.i(TAG, "循环线程停止了"); 
   }}).start(); 
 } 
 @Override 
 protected void onDestroy() { 
  isStop = true; 
  super.onDestroy(); 
 } 
 private void initView() { 
  mViewPager = (ViewPager) findViewById(R.id.viewpager); 
  llPointGroup = (LinearLayout) findViewById(R.id.ll_point_group); 
  tvImageDescription = (TextView) findViewById(R.id.tv_image_description); 
  imageViewList = new ArrayList<ImageView>(); 
  ImageView iv; 
  View pointView; 
  LayoutParams params; 
  for (int i = 0; i < imageResIDs.length; i++) { 
   iv = new ImageView(this); 
   iv.setBackgroundResource(imageResIDs[i]); 
   imageViewList.add(iv); 
   // 根据图片添加点 
   pointView = new View(this); 
   params = new LayoutParams(5, 5); 
   params.leftMargin = 5; 
   pointView.setLayoutParams(params); 
   pointView.setEnabled(false); 
   pointView.setBackgroundResource(R.drawable.point_bg); 
   llPointGroup.addView(pointView); 
  } 
  MyPagerAdapter mAdapter = new MyPagerAdapter(); 
  mViewPager.setAdapter(mAdapter); 
  mViewPager.setOnPageChangeListener(this); 
  int item = (Integer.MAX_VALUE / 2) - ((Integer.MAX_VALUE / 2) % imageViewList.size()); 
  mViewPager.setCurrentItem(item);  // 设置当前选中的item的position 
  tvImageDescription.setText(imageDescriptions[previousPosition]); 
  llPointGroup.getChildAt(previousPosition).setEnabled(true); // 第一点被选中 
 } 
 class MyPagerAdapter extends PagerAdapter { 
  @Override 
  public int getCount() { 
   return Integer.MAX_VALUE; 
  } 
   
  @Override 
  public boolean isViewFromObject(View arg0, Object arg1) { 
   return arg0 == arg1; 
  } 
   
  @Override 
  public void destroyItem(ViewGroup container, int position, Object object) { 
   // 移除掉指定position的对象 
   mViewPager.removeView(imageViewList.get(position % imageViewList.size())); 
  } 
   
  @Override 
  public Object instantiateItem(ViewGroup container, int position) { 
   // 添加指定position的对象 
   mViewPager.addView(imageViewList.get(position % imageViewList.size())); 
   return imageViewList.get(position % imageViewList.size()); 
  } 
 } 
 @Override 
 public void onPageScrollStateChanged(int arg0) { 
  // TODO Auto-generated method stub 
 } 
 @Override 
 public void onPageScrolled(int arg0, float arg1, int arg2) { 
  // TODO Auto-generated method stub 
 } 
  
 @Override 
 public void onPageSelected(int position) { 
  tvImageDescription.setText(imageDescriptions[position % imageViewList.size()]); 
  llPointGroup.getChildAt(position % imageViewList.size()).setEnabled(true); 
  llPointGroup.getChildAt(previousPosition).setEnabled(false); 
  previousPosition = position % imageViewList.size(); 
 } 
} 
您可能感兴趣的文章:Android实现卡片翻转动画Android自定义ViewPager实现纵向滑动翻页效果Android CardView+ViewPager实现ViewPager翻页动画的方法Android ViewPager实现左右滑动翻页效果android ViewPager实现滑动翻页效果实例代码Android原生ViewPager控件实现卡片翻动效果


--结束END--

本文标题: Android ViewPager实现图片轮翻效果

本文链接: https://www.lsjlt.com/news/22585.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android ViewPager实现图片轮翻效果
    很多App都有这种效果,特别一些电商类的App,顶部每隔几秒钟会向右翻页显示下张图片,用来作推广或者内容展示用的。今天来简单地模仿一下,还自带一个自动跳动的小功能(底部有几个小...
    99+
    2022-06-06
    图片 viewpager Android
  • Android ViewPager实现图片轮播效果
    在app中图片的轮播显示可以说是非常常见的实现效果了,其实现原理不过是利用ViewPager,然后利用handler每隔一定的时间将ViewPager的currentItem设...
    99+
    2022-06-06
    图片 viewpager 轮播 Android
  • Android ViewPager实现轮播图效果
    先上一张效果图: 说到ViewPager实现轮播图效果,那么肯定会用到PagerAdapter,下面先介绍下这个类。 PagerAdapter简介 PagerAdapter是...
    99+
    2022-06-06
    轮播图 viewpager 轮播 Android
  • Android开发中使用ViewPager实现一个轮翻图效果
    Android开发中使用ViewPager实现一个轮翻图效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体方法如下:import java.util.ArrayList...
    99+
    2023-05-31
    android viewpager age
  • android viewpager实现轮播效果
    本文是基于ViewPager实现的无限自动轮播banner,供大家参考,具体内容如下 分为四步去实现: 第一步是有限手动轮播; 第二步是无限轮播; 第三步是自动轮播; 第四步是指示...
    99+
    2022-11-13
  • Android实现图片轮播效果
    本文实例讲述了JaAndroid实现图片轮播效果代码,分享给大家供大家参考。具体如下: 运行效果截图如下: 具体代码如下: 首先看下一下布局文件: <Relative...
    99+
    2022-06-06
    图片 轮播 Android
  • Android使用ViewPager实现翻页效果
    本文实例为大家分享了Android使用ViewPager实现翻页效果的具体代码,供大家参考,具体内容如下 效果如图所示: 代码实现: 1.布局代码:activity_view_pa...
    99+
    2022-11-13
  • android使用ViewPager实现轮播效果
    ViewPager:一个可以实现视图左右滑动切换的控件。 ViewPager的基本使用: ViewPager的视图需要通过PagerAdapter来实现显示。 Pager...
    99+
    2022-06-06
    viewpager 轮播 Android
  • android viewpager怎么实现轮播效果
    本篇内容介绍了“android viewpager怎么实现轮播效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!分为四步去实现:第...
    99+
    2023-07-02
  • Android ViewPager加载图片效果
    目前项目中需要用到ViewPager加载图片,现在在此记录一下。 首先先看布局文件:activity_main.xml <?xml version="1.0"...
    99+
    2022-06-06
    图片 viewpager Android
  • Android实现广告图片轮播效果
    本文实例介绍了Android广告轮播图效果实现方法,分享给大家供大家参考,具体内容如下 首先看下一下布局文件: <RelativeLayout xmlns:andro...
    99+
    2022-06-06
    图片 广告 轮播 Android
  • ViewPager实现图片切换效果
    本文实例为大家分享了ViewPager实现图片切换效果的具体代码,供大家参考,具体内容如下 xml布局: <RelativeLayout         android:lay...
    99+
    2022-11-13
  • Android编程实现ListView头部ViewPager广告轮询图效果
    本文实例讲述了Android编程实现ListView头部ViewPager广告轮询图效果。分享给大家供大家参考,具体如下: 之前看了别人的一些软件,发现其广告图轮询的时候,那个...
    99+
    2022-06-06
    viewpager listview Android
  • Android实现轮播图效果
    本文实例为大家分享了Android实现轮播图效果的具体代码,供大家参考,具体内容如下 1.代码放在LinearLayout中, <com.jude.rollviewpage...
    99+
    2022-11-12
  • Android实现图片轮播效果的两种方法
    大家在使用APP的过程中,经常会看到上部banner图片轮播的效果,那么今天我们就一起来学习一下,android中图片轮询的几种实现方法: 第一种:使用动画的方法实现:(代码繁...
    99+
    2022-06-06
    方法 图片 轮播 Android
  • Android实现视图轮播效果
    最近接手了一个需求,要求实现,叮咚买菜。 秒杀位置的轮播 拆解 通过观察发现其实还是挺简单,大致分为 1、商品图片的上下轮播 2、价格布局渐隐渐现 在android上实现布局轮播,...
    99+
    2022-11-12
  • android中图片翻页效果简单的实现方法
    代码如下:public class PageWidget extends View {    private Bitmap foreImage;...
    99+
    2022-06-06
    方法 图片 Android
  • JS怎么实现图片翻书效果
    这篇文章主要介绍JS怎么实现图片翻书效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体代码如下所示:<html xmlns="http://www.w3...
    99+
    2022-10-19
  • js如何实现图片翻转效果
    今天小编给大家分享一下js如何实现图片翻转效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2022-10-19
  • JavaScript实现点击图片翻转效果
    最近在做一个有关人脸采集的项目,然后在编写前端模块时,遇到了一个问题,就是当客户上传照片或直接拍照上传时,会遇到有些图片可能会90度翻转过来所以,我们需要给个按钮客户让客户自己可以对...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作