Android实现自动播放图片功能

所属分类: 软件编程 / Android 阅读数: 50
收藏 0 赞 0 分享

本文实例为大家分享了Android实现自动播放图片功能的具体代码,供大家参考,具体内容如下

第一种方式:回退到第一张

效果图

第二种方式:无限循环

效果图:

源代码

逻辑代码--MainActivity

package com.example.week4_day4_viewpager2; 
 
import java.util.ArrayList; 
import java.util.List; 
 
import android.R.integer; 
import android.os.Bundle; 
import android.os.Handler; 
import android.app.Activity; 
import android.support.v4.view.ViewPager; 
import android.view.Menu; 
import android.widget.ImageView; 
 
public class MainActivity extends Activity { 
 
  private ViewPager viewPager; 
  // 数据源 
  private int[] images = { R.drawable.image1, R.drawable.image2, 
      R.drawable.image3 }; 
  // 存放数据源的集合 
  List<ImageView> list; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    // 实例化list 
    list = new ArrayList<ImageView>(); 
    for (int i = 0; i < images.length; i++) { 
      ImageView imageView = new ImageView(MainActivity.this); 
      imageView.setImageResource(images[i]); 
      list.add(imageView); 
    } 
    // 绑定适配器 
    viewPager.setAdapter(new MyViewPagerAdapter(MainActivity.this, list)); 
    // 当有3张图片时,走到id=2时最后一张, 
    viewPager.setCurrentItem(Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2 
        % list.size());// 假设viewPager有无数条数据 
    // 延迟两秒发送一条消息 
    handler.sendEmptyMessageDelayed(1, 2000); 
  } 
 
  // 让图片自动播放,无限循环 
  private Handler handler = new Handler() { 
    public void handleMessage(android.os.Message msg) { 
      /** 
       * 第一种方法,播放到最后一张时,回退到第一张照片从头播放 
       *       弊端:回退时如果图片过多,会出现回退重影,即3张时,从最后一张瞬间回退到第2张,又瞬间回退到第1张 
       */ 
//      int i = viewPager.getCurrentItem();// 当前item 
//      if (i == list.size() - 1) {// 如果第一条等于最后一条 
//      // false:是否显示动画 
//      viewPager.setCurrentItem(0, true);// 回到第一条item 
//      } else { 
//      viewPager.setCurrentItem(i + 1, true); 
//      } 
      /** 
       * 第二种方法,无限循环播放,每次都把所有相片,放到后面查看 
       */ 
      viewPager.setCurrentItem(viewPager.getCurrentItem() + 1); 
 
      sendEmptyMessageDelayed(1, 2000); 
    }; 
  }; 
} 

逻辑代码--自定义适配器

package com.example.week4_day4_viewpager2; 
 
import java.util.List; 
 
import android.content.Context; 
import android.support.v4.view.PagerAdapter; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
 
public class MyViewPagerAdapter extends PagerAdapter{ 
 
  private Context context; 
  private List<ImageView> list; 
   
  public MyViewPagerAdapter(Context context, List<ImageView> list) { 
    super(); 
    this.context = context; 
    this.list = list; 
  } 
 
  @Override 
  public int getCount() { 
    // TODO Auto-generated method stub 
    return Integer.MAX_VALUE;//设置viewPager里有N条数据 
    //return list.size(); 
  } 
   
  @Override 
  public Object instantiateItem(ViewGroup container, int position) { 
    //假设有3张照片,走到id=2时,走id=0的,所以取余 
    container.addView(list.get(position%list.size())); 
    return list.get(position%list.size()); 
    //return list.get(position); 
  } 
  @Override 
  public void destroyItem(ViewGroup container, int position, Object object) { 
    // TODO Auto-generated method stub 
    container.removeView(list.get(position%list.size())); 
    //container.removeView(list.get(position)); 
    //super.destroyItem(container, position, object); 
  } 
 
  @Override 
  public boolean isViewFromObject(View arg0, Object arg1) { 
    // TODO Auto-generated method stub 
    return arg0==arg1; 
  } 
 
}  

布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:tools="http://schemas.android.com/tools" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:paddingBottom="@dimen/activity_vertical_margin" 
  android:paddingLeft="@dimen/activity_horizontal_margin" 
  android:paddingRight="@dimen/activity_horizontal_margin" 
  android:paddingTop="@dimen/activity_vertical_margin" 
  tools:context=".MainActivity" > 
 
  <android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
   /> 
 
</RelativeLayout> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

使用ViewPager实现android软件使用向导功能实现步骤

现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了,下面我们就实现这个功能
收藏 0 赞 0 分享

android在异步任务中关闭Cursor的代码方法

android在异步任务中如何关闭Cursor?在我们开发应用的时候,很多时候会遇到这种问题,下面我们就看看代码如何实现
收藏 0 赞 0 分享

Android自定义桌面功能代码实现

android自定义桌面其实很简单,看一个例子就明白了
收藏 0 赞 0 分享

android将图片转换存到数据库再从数据库读取转换成图片实现代码

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来
收藏 0 赞 0 分享

TextView显示系统时间(时钟功能带秒针变化

用System.currentTimeMillis()可以获取系统当前的时间,我们可以开启一个线程,然后通过handler发消息,来实时的更新TextView上显示的系统时间,可以做一个时钟的功能
收藏 0 赞 0 分享

Android用ListView显示SDCard文件列表的小例子

本文简单实现了用ListView显示SDCard文件列表,目录的回退等功能暂不讨论,获取文件列表,files即为所选择目录下的所有文件列表
收藏 0 赞 0 分享

Android拦截外拨电话程序示例

这篇文章主要介绍了Android拦截外拨电话的示例,大家参考使用吧
收藏 0 赞 0 分享

通过Html网页调用本地安卓(android)app程序代码

如何使用html网页和本地app进行传递数据呢?经过研究,发现还是有方法的,总结了一下,大致有一下几种方式
收藏 0 赞 0 分享

android Textview文字监控(Textview使用方法)

以手机号充值为例,当用户输入最后一位数时候,进行汇率的变换,本文就实现类似这样的功能
收藏 0 赞 0 分享

Android ListView长按弹出菜单二种实现方式示例

这篇文章主要介绍了Android ListView长按弹出菜单的方法,大家参考实现
收藏 0 赞 0 分享
查看更多