Android简单的广告控件View

本文介绍了一种自定义的Android View组件实现方案,该组件可以实现图片的自动轮播效果。通过创建图片数组并利用线程定时切换图片资源的方式,实现了简单的轮播功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在布局文件中引用此View控件即可。

  1. publicclassGGViewextendsView{
  2. intCOMPONENT_WIDTH;//该控件宽度
  3. intCOMPONENT_HEIGHT;//该控件高度
  4. booleaninitflag=false;//是否要获取控件的高度和宽度标志
  5. staticBitmap[]bma;//需要播放的图片的数组
  6. Paintpaint;//画笔
  7. int[]drawablesId;//图片ID数组
  8. intcurrIndex=0;//图片ID数组下标,根据此变量画图片
  9. booleanworkFlag=true;//播放图片线程标志位
  10. publicGGView(Contextfather,AttributeSetas){//构造器
  11. super(father,as);
  12. drawablesId=newint[]{//初始化图片ID数组
  13. R.drawable.adv1,//将需要播放的图片ID放于此处即可
  14. R.drawable.adv2,R.drawable.adv3,};
  15. bma=newBitmap[drawablesId.length];//创建存放图片的数组
  16. initBitmaps();//调用初始化图片函数,初始化图片数组
  17. paint=newPaint();//创建画笔
  18. paint.setFlags(Paint.ANTI_ALIAS_FLAG);//消除锯齿
  19. newThread(){//创建播放图片线程
  20. publicvoidrun(){
  21. while(workFlag){
  22. currIndex=(currIndex+1)%drawablesId.length;//改变ID数组下标值
  23. GGView.this.postInvalidate();//绘制
  24. try{
  25. Thread.sleep(3000);//休息三秒
  26. }catch(InterruptedExceptione){
  27. e.printStackTrace();
  28. }
  29. }
  30. }
  31. }.start();//启动线程
  32. }
  33. publicvoidinitBitmaps(){//初始化图片函数
  34. Resourcesres=this.getResources();//获取Resources对象
  35. for(inti=0;i<drawablesId.length;i++){
  36. bma[i]=BitmapFactory.decodeResource(res,drawablesId[i]);
  37. }
  38. }
  39. publicvoidonDraw(Canvascanvas){//绘制函数
  40. if(!initflag){//第一次绘制时需要获取宽度和高度
  41. COMPONENT_WIDTH=this.getWidth();//获取view的宽度
  42. COMPONENT_HEIGHT=this.getHeight();//获取view的高度
  43. initflag=true;
  44. }
  45. intpicWidth=bma[currIndex].getWidth();//获取当前绘制图片的宽度
  46. intpicHeight=bma[currIndex].getHeight();//获取当前绘制图片的高度
  47. intstartX=(COMPONENT_WIDTH-picWidth)/2;//得到绘制图片的左上角X坐标
  48. intstartY=(COMPONENT_HEIGHT-picHeight)/2;//得到绘制图片的左上角Y坐标
  49. canvas.drawARGB(255,200,128,128);//设置背景色
  50. canvas.drawBitmap(bma[currIndex],startX,startY,paint);//绘制图片
  51. }
  52. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值