博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
播放实现Android实现图片循环播放
阅读量:6359 次
发布时间:2019-06-23

本文共 3384 字,大约阅读时间需要 11 分钟。

本篇文章是一篇关于播放实现的帖子

    

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

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

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

  
  

    

好了,到这里需要用来播放图片的控件就配置好了,接下来我们就要来写实现类bofang.java。

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();     }     //初始化图片     public void initBitmap()     {       //获得资源图片       Resources res = this.getResources();       for(int i=0;i
    每日一道理
因为自信,在呀呀学语时,我靠着纤嫩的双腿,迈出人生的第一步;因为自信,我一次次将第一名的奖状高高举起;因为自信,我毫不吝惜地剪掉飘逸的长发,在运动场上展现风采……感谢自信,它给了我一双翅膀,让我在电闪雷鸣中去飞翔,在风雨中去搏击人生!

    

    PS:这里要说明一下,下面的代码中其实有些地方还有更好的实现方法。

    比如:

    我们为了实现准时变动要播放的图片的ID,以实现循环播放,新开了了一个线程,并且开了一个死循环,但实际这样的写法可控性很低,JDK的java.util.concurrent中提供了大批的方法去控制一段代码准时执行,标准的改写下面的代码如下:

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);          scheduler.scheduleWithFixedDelay(new runner(), 0, 1, TimeUnit.SECONDS);          //或者用scheduler.scheduleAtFixedRate(new runner(),0,1, TimeUnit.SECONDS);                   //接着我们要实现Runnable方法,也就是准时变动现在播放图片的ID                   public class runner implements Runnable              {                  public void run()                     {                               // TODO Auto-generated method stub                      currIndex = (currIndex+1)%bitmapId.length;                      bofang.this.postInvalidate();//刷新屏幕                 }              }

    

文章结束给大家分享下程序员的一些笑话语录: 一程序员告老还乡,想安度晚年,于是决定在书法上有所造诣。省略数字……,准备好文房4宝,挥起毛笔在白纸上郑重的写下:Hello World

转载地址:http://tfbma.baihongyu.com/

你可能感兴趣的文章
将之前的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。
查看>>
构建高并发高可用的电商平台架构实践----网址记录
查看>>
[android] 手机卫士黑名单功能(ListView结合SQLite增删改)
查看>>
ubuantu 18.04 LTS 版本解决网易云安装启动问题
查看>>
PHP 无限分类
查看>>
【leetcode】226. Invert Binary Tree
查看>>
软件项目顾问的20法则
查看>>
Java 强引用、软引用、弱引用、虚引用
查看>>
wget 命令用法详解
查看>>
centOS安装apache服务器
查看>>
第三个Sprint冲刺第一天
查看>>
使用yum仅下载不安装
查看>>
0420-mysql关键词/错误提示关键词
查看>>
[译]基于NodeJS和Redis的任务调度
查看>>
理解 Mach O 并提高程序启动速度
查看>>
Objective-C与Java之间的简单对比(转)
查看>>
swift 设置阴影和圆角
查看>>
swift - 使用系统app导航
查看>>
3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二
查看>>
10分钟检查自己的系统性能数据
查看>>