当前位置:操作系统 > 安卓/Android >>

Android实现图片循环播放

很多时候,我们需要展示在客户端展示图片,而且是动态显示,即不停地自行切换图片。下面我们来看一下具体的实现方法。首先,我们需要在XML...
很多时候,我们需要展示在客户端展示图片,而且是动态显示,即不停地自行切换图片。下面我们来看一下具体的实现方法。

首先,我们需要在XML文件中配置一下将要播放图片的控件(main.xml):

[html] 
<SPAN style="COLOR: #993300"><?xml version="1.0" encoding="utf-8"?>  
  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  
  android:layout_width = "fill_parent"  
  
  android:layout_height= "fill_parent"  
  
  android:orientation="vertical">  
  
  <!--这里是要播放图片的控件,bofang是用来播放图片的View类-->  
  
  <com.sunianjinshi.bofang  
  
    android:layout_width="180dip"  
  
    android:layout_height = "250dip"  
  
  />  
  
</LinearLayout> </SPAN> 

<?xml version="1.0" encoding="utf-8"?>
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
  android:layout_width = "fill_parent"
 
  android:layout_height= "fill_parent"
 
  android:orientation="vertical">
 
  <!--这里是要播放图片的控件,bofang是用来播放图片的View类-->
 
  <com.sunianjinshi.bofang
 
    android:layout_width="180dip"
 
    android:layout_height = "250dip"
 
  />
 
</LinearLayout>
好了,到这里需要用来播放图片的控件就配置好了,接下来我们就要来写实现类bofang.java。[java] view plaincopyprint?
<SPAN style="COLOR: #993300">import android.content.Context;   
import android.content.res.Resources;   
import android.graphics.Bitmap;   
import android.graphics.BitmapFactory;   
import android.graphics.Canvas;   
import android.graphics.Paint;   
import android.util.AttributeSet;   
import android.view.View;   
  
    
  
public class bofang extends View   
  
{   
  
  int COMPONENT_WIDTH;//控件的宽度    
  
  int COMPONENT_HEIGHT;//控件的高度    
  
  boolean initflag = false;//是否已经初始化图片    
  
  Bitmap[] bmp;//用来存放图片的数组    
  
  int currPicIndex = 0;//当前播放图片的ID    
  
  int[] bitmapId;//图片编号ID    
  
  boolean workFlag = true;//播放图片的线程标识位    
  
  public GGViewCX(Context father,AttributeSet as)//重写构造函数    
  
  {   
  
    //首先,要播放图片,就先要有图片,那就先给各个图片编号吧,这里的图片资源存放在了res下的drawable文件夹下了    
  
    int[] bitmapId ={R.drawable.adv1, R.drawable.adv2, R.drawable.adv3};   
  
    //好了,图片的编号现在已经搞定了,接下来该干什么呢?对,应该将资源里的图片塞进Bitmap数组了,那么我们先来确定将要播放的图片的数量,即Bitmap数组的长度    
  
    bmp = new Bitmap[bitmapId.length];//这里不要直接将数值赋给bmp,因为我们可能会不定期地更换图片资源,这样我们就要修改多处代码,而我们这样根据    
  
    //图片的ID来确定图片的数量,以减少不必要的麻烦,下面开始初始化图片,我们将初始化图片放在一个函数里    
  
    initBitmap();//图片初始化完毕    
  
    //图片初始化完毕了,接下来我们要做的就是播放图片了,但是播放图片之前,我们有一个问题,就是怎样让图片实现循环播放?这里我们另开一个新的线程来定时更改    
  
    //要播放的图片的ID,以实现图片的循环播放,要实现循环播放图片的功能,我们需要覆写onDraw函数,首先,我们来新开一个线程    
  
    new Thread()   
  
    {   
  
      //重写run方法    
  
      public void run()   
              {   
                  // TODO Auto-generated method stub    
                  while(workflag)//一直执行这个循环(死循环)    
                  {   
                      currIndex = (currIndex+1)%bitmapId.length;//更改图片的ID    
                      bofang.this.postInvalidate();//刷新屏幕,导致屏幕重绘    
                      try  
                      {   
                          Thread.sleep(3000);//到此处暂停3秒钟,然后继续执行run函数,即实现每隔3秒钟刷新屏幕一次    
                      }   
                      catch (InterruptedException e)    
                      {   
                          // TODO Auto-generated catch block    
                          e.printStackTrace();   
                      }   
                  }   
              }   
  
    }.start();   <

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,