Android 的 SurfaceView 双缓冲应用
存图片ID 086 imgList.add(index); 087 } 088 } 089 // 取得图像大小 090 Bitmap bmImg = BitmapFactory.decodeResource(getResources(), 091 imgList.get(0)); 092 imgWidth = bmImg.getWidth(); 093 imgHeight = bmImg.getHeight(); 094 } 095 096 @Override 097 public void surfaceDestroyed(SurfaceHolder holder) { 098 Log.i(Surface:, Destroy); 099 100 } 101 102 } 103 104 /** 105 * 读取并显示图片的线程 106 */ 107 class Load_DrawImage extends Thread { 108 int x, y; 109 int imgIndex = 0; 110 111 public Load_DrawImage(int x, int y) { 112 this.x = x; 113 this.y = y; 114 } 115 116 public void run() { 117 while (true) { 118 Canvas c = sfh.lockCanvas(new Rect(this.x, this.y, this.x 119 + imgWidth, this.y + imgHeight)); 120 Bitmap bmImg = BitmapFactory.decodeResource(getResources(), 121 imgList.get(imgIndex)); 122 c.drawBitmap(bmImg, this.x, this.y, new Paint()); 123 imgIndex++; 124 if (imgIndex == imgList.size()) 125 imgIndex = 0; 126 127 sfh.unlockCanvasAndPost(c);// 更新屏幕显示内容 128 } 129 } 130 }; 131 132 /** 133 * 只负责绘图的线程 134 */ 135 class DrawImage extends Thread { 136 int x, y; 137 138 public DrawImage(int x, int y) { 139 this.x = x; 140 this.y = y; 141 } 142 143 public void run() { 144 while (true) { 145 if (bitmap != null) {//如果图像有效 146 Canvas c = sfh.lockCanvas(new Rect(this.x, this.y, this.x 147 + imgWidth, this.y + imgHeight)); 148 149 c.drawBitmap(bitmap, this.x, this.y, new Paint()); 150 151 sfh.unlockCanvasAndPost(c);// 更新屏幕显示内容 152 } 153 } 154 } 155 }; 156 157 /** 158 * 只负责读取图片的线程 159 */ 160 class LoadImage extends Thread { 161 int imgIndex = 0; 162 163 public void run() { 164 while (true) { 165 bitmap = BitmapFactory.decodeResource(getResources(), 166 imgList.get(imgIndex)); 167 imgIndex++; 168 if (imgIndex == imgList.size())//如果到尽头则重新读取 169 imgIndex = 0; 170 } 171 } 172 }; 173}
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
