在布局文件中引用此View控件即可。
- publicclassGGViewextendsView{
- intCOMPONENT_WIDTH;//该控件宽度
- intCOMPONENT_HEIGHT;//该控件高度
- booleaninitflag=false;//是否要获取控件的高度和宽度标志
- staticBitmap[]bma;//需要播放的图片的数组
- Paintpaint;//画笔
- int[]drawablesId;//图片ID数组
- intcurrIndex=0;//图片ID数组下标,根据此变量画图片
- booleanworkFlag=true;//播放图片线程标志位
- publicGGView(Contextfather,AttributeSetas){//构造器
- super(father,as);
- drawablesId=newint[]{//初始化图片ID数组
- R.drawable.adv1,//将需要播放的图片ID放于此处即可
- R.drawable.adv2,R.drawable.adv3,};
- bma=newBitmap[drawablesId.length];//创建存放图片的数组
- initBitmaps();//调用初始化图片函数,初始化图片数组
- paint=newPaint();//创建画笔
- paint.setFlags(Paint.ANTI_ALIAS_FLAG);//消除锯齿
- newThread(){//创建播放图片线程
- publicvoidrun(){
- while(workFlag){
- currIndex=(currIndex+1)%drawablesId.length;//改变ID数组下标值
- GGView.this.postInvalidate();//绘制
- try{
- Thread.sleep(3000);//休息三秒
- }catch(InterruptedExceptione){
- e.printStackTrace();
- }
- }
- }
- }.start();//启动线程
- }
- publicvoidinitBitmaps(){//初始化图片函数
- Resourcesres=this.getResources();//获取Resources对象
- for(inti=0;i<drawablesId.length;i++){
- bma[i]=BitmapFactory.decodeResource(res,drawablesId[i]);
- }
- }
- publicvoidonDraw(Canvascanvas){//绘制函数
- if(!initflag){//第一次绘制时需要获取宽度和高度
- COMPONENT_WIDTH=this.getWidth();//获取view的宽度
- COMPONENT_HEIGHT=this.getHeight();//获取view的高度
- initflag=true;
- }
- intpicWidth=bma[currIndex].getWidth();//获取当前绘制图片的宽度
- intpicHeight=bma[currIndex].getHeight();//获取当前绘制图片的高度
- intstartX=(COMPONENT_WIDTH-picWidth)/2;//得到绘制图片的左上角X坐标
- intstartY=(COMPONENT_HEIGHT-picHeight)/2;//得到绘制图片的左上角Y坐标
- canvas.drawARGB(255,200,128,128);//设置背景色
- canvas.drawBitmap(bma[currIndex],startX,startY,paint);//绘制图片
- }
- }