public class GGView extends View {
int COMPONENT_WIDTH; //该控件宽度
int COMPONENT_HEIGHT; //该控件高度
boolean initflag=false; //是否要获取控件的高度和宽度标志
static Bitmap[] bma; //需要播放的图片的数组
Paint paint; //画笔
int[] drawablesId; //图片ID数组
int currIndex=0; //图片ID数组下标,根据此变量画图片
boolean workFlag=true; //播放图片线程标志位
public GGView(Context father,AttributeSet as) { //构造器
super(father,as);
drawablesId=new int[]{ //初始化图片ID数组
R.drawable.adv1, //将需要播放的图片ID放于此处即可
R.drawable.adv2,
R.drawable.adv3,
};
bma=new Bitmap[drawablesId.length]; //创建存放图片的数组
initBitmaps(); //调用初始化图片函数,初始化图片数组
paint=new Paint(); //创建画笔
paint.setFlags(Paint.ANTI_ALIAS_FLAG); //消除锯齿
new Thread(){ //创建播放图片线程
public void run(){
while(workFlag){
currIndex=(currIndex+1)%drawablesId.length;//改变ID数组下标值
GGView.this.postInvalidate(); //绘制
try {
Thread.sleep(3000); //休息三秒
} catch (InterruptedException e) {
e.printStackTrace();
}}}}.start(); //启动线程
}
public void initBitmaps(){ //初始化图片函数
Resources res=this.getResources(); //获取Resources对象
for(int i=0;i<drawablesId.length;i++){
bma[i]=BitmapFactory.decodeResource(res, drawablesId[i]);
}}
public void onDraw(Canvas canvas){ //绘制函数
if(!initflag) { //第一次绘制时需要获取宽度和高度
COMPONENT_WIDTH=this.getWidth(); //获取view的宽度
COMPONENT_HEIGHT=this.getHeight(); //获取view的高度
initflag=true;
}
int picWidth=bma[currIndex].getWidth(); //获取当前绘制图片的宽度
int picHeight=bma[currIndex].getHeight(); //获取当前绘制图片的高度
int startX=(COMPONENT_WIDTH-picWidth)/2; //得到绘制图片的左上角X坐标
int startY=(COMPONENT_HEIGHT-picHeight)/2; //得到绘制图片的左上角Y坐标
canvas.drawARGB(255, 200, 128, 128); //设置背景色
canvas.drawBitmap(bma[currIndex], startX,startY, paint); //绘制图片
}}
分享到:
相关推荐
本篇文章将深入探讨如何使用QT来实现一个功能,即在指定的图片文件夹中快速播放图片。 首先,我们需要了解QT中的关键组件和类,这将是我们实现图片播放的基础。`QGraphicsView`和`QGraphicsScene`是QT图形视图框架...
在Delphi编程环境中,实现图片滚动播放功能是一项常见的任务,特别是在创建多媒体应用或者展示类软件时。本教程将深入探讨如何使用Delphi 7.0来实现这一功能,包括图片的加载、显示以及循环播放机制。 首先,我们...
在循环播放图片的场景中,`QLabel`可以作为图片的容器。`QLabel`可以与`QPixmap`结合使用,`QPixmap`是Qt用来处理图像的基本类,支持加载、保存、缩放和裁剪等操作。 以下是一个简单的步骤来实现Qt循环播放一组图片...
本文将详细讲解如何利用MFC创建一个能够播放GIF动态图片的控件类,即`CPictureEx`,它从标准的`CStatic`类派生而来。 `CStatic`是MFC中用于显示静态文本或图像的基本控件,但默认情况下,它不支持播放GIF动画。为了...
在Android开发中,实现“自动播放图片”的功能是一项常见的需求,尤其在轮播广告、相册展示等场景中。这个功能通常涉及到多个知识点,包括图片加载库的使用、动画的实现以及视图的管理。以下将详细介绍这些核心知识...
7. **IMAGES 文件夹**:这可能是存放待播放图片的目录,包含一系列的图像文件,格式可能是常见的JPEG、PNG或GIF等。程序在运行时会从这个文件夹中读取图片,并按照预设的顺序或用户选择的顺序进行播放。 总的来说,...
要实现定时播放图片,可以使用Qt的定时器类`QTimer`。通过连接`QTimer::timeout`信号到一个槽函数,可以在每次定时器触发时更换显示的图片。可以设置定时器间隔以控制图片切换的频率。 4. **图片缩放** Qt提供`...
此外,如果希望同时播放图片和音乐,可以考虑在事件监听器中控制音乐的播放与暂停,如在图片切换时触发音乐的播放或停止。还可以通过维护一个歌曲列表来实现“下一首”功能。 总的来说,实现这个项目需要对Java基础...
在iOS应用开发中,实现视频和图片的混合展示是一项常见的需求,特别是在制作新闻资讯、社交媒体或者个人相册类应用时。本项目标题“iOS视频图片混合轮播,支持视频播放和图片预览”揭示了一个功能完备的解决方案,它...
这需要创建一个ViewModel类来存储图片源列表,并在XAML中设置DataContext。 总结来说,实现“WPF图片自动播放”涉及的知识点包括:WPF的基础概念,Image控件的使用,DispatcherTimer的计时功能,图片轮播逻辑,以及...
【C#图片自动播放浏览器】是一款专为学习和展示图片设计的应用程序,它结合了列表显示、定时器功能以及图片框展示技术,为用户提供了便捷的图片浏览体验。这款软件的核心在于利用C#编程语言的强大功能,实现了图像的...
当我们需要在一个窗口中展示多张图片并实现轮流播放的效果时,可以借助QLabel和QTimer来实现这一功能。以下是一个详细的知识点说明: 1. **QLabel**:QLabel是Qt库中的一个类,用于在界面上显示文本或者图像。它...
本文将详细探讨如何实现一个自动播放图片的功能,以及如何通过按钮控制图片的切换,以此来解析"自动播放图片原工程文件"的核心知识点。 首先,`AdapterViewFlipper`是Android SDK提供的一种视图翻转器,它可以用来...
本主题将详细探讨如何实现“播放图片”并为图片添加“Animation动画”,以达到增强用户体验的效果。我们将重点关注以下几个方面: 1. **图片加载与显示**: - 在Android系统中,通常使用`ImageView`组件来加载和...
在本项目中,“一个qt图片自动循环播放的小程序”是一个利用Qt库创建的简单应用,它能自动播放一系列图片,对于初学者了解Qt的事件处理、窗口和控件的使用具有很好的学习价值。 首先,我们需要理解Qt中的关键概念,...
在C#编程环境中,开发一个图片浏览自动播放的应用是一个常见的任务,尤其对于图像处理或多媒体应用来说。这个项目中,开发者使用了ListView控件来实现这一功能。ListView控件是Windows Forms中的一个强大组件,它...
在这个"asp.net 利用Ajax播放图片"的示例中,我们将探讨如何利用Ajax技术来动态地加载和播放图片,而无需整个网页进行刷新。 首先,我们来看`Photo_Service.asmx`文件,这是一个ASP.NET的Web服务(Web Service),...
总结起来,"js+jquery实现HTML页面上类似播放器一样的播放图片"项目涵盖了JavaScript基础、jQuery选择器与事件处理、DOM操作、CSS样式控制以及响应式设计等多个知识点。通过这个项目,开发者不仅可以提升JavaScript...
4. 多线程:为了实现图片的自动播放,可能使用了`java.lang.Thread`或者`java.util.Timer`类,创建单独的线程或定时器来控制图片的切换。 5. 事件监听:通过设置按钮和窗口的事件监听器,捕捉用户的操作,如点击按钮...
本项目是用Java实现的图片浏览器,它具有自动播放图片的功能,给人一种观看动画片的体验。接下来,我们将深入探讨这个项目的相关知识点。 首先,我们要了解Java编程语言。Java是一种广泛使用的面向对象的编程语言,...