<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                何為臟矩形?比如surfaceview上繪制旋轉圖片的時候,只刷新一個特定的矩形區域就可以了。這個矩形區域就是臟矩形。在surfaceview上? canvas = holder.lockCanvas(new Rect(0, 0, 130, 130)); //獲取畫布 像這種帶rect參數的就是臟矩形的刷新。 請看源碼: ~~~ package yan.guoqi.rectphoto; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.Rect; import android.util.AttributeSet; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; public class DrawSurfaceView extends SurfaceView implements SurfaceHolder.Callback{ private static final String tag2 = "DrawSV"; private boolean runFlag = true; protected SurfaceHolder holder; private Bitmap rotateImg; private Thread myThread; public DrawSurfaceView(Context context, AttributeSet attrs) //構造函數 { super(context, attrs); // TODO Auto-generated constructor stub rotateImg = BitmapFactory.decodeResource(getResources(), R.drawable.rotate_circle); rotateImg = Bitmap.createScaledBitmap(rotateImg, 100, 100, true); holder = this.getHolder(); holder.addCallback(this); holder.setFormat(PixelFormat.TRANSPARENT); //頂層繪制SurfaceView設成透明 this.setZOrderOnTop(true); myThread = new Thread(new MyThread()); } public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub Log.v(tag2, "DrawSV:surfaceChanged..."); } public void surfaceCreated(SurfaceHolder arg0) { // TODO Auto-generated method stub Log.v(tag2, "DrawSV:surfaceCreated..."); //啟動自定義線程 myThread.start(); } public void surfaceDestroyed(SurfaceHolder arg0) { // TODO Auto-generated method stub Log.v(tag2, "DrawSV:surfaceDestroyed..."); //終止自定義線程 runFlag = false; myThread.interrupt(); } /*自定義線程*/ class MyThread implements Runnable{ public void run() { // TODO Auto-generated method stub Canvas canvas = null; int rotate = 0; while(runFlag){ try { canvas = holder.lockCanvas(new Rect(0, 0, 130, 130)); //獲取畫布 Paint paint = new Paint(); //canvas.drawBitmap(rotateImg, 0, 0, paint); //繪制旋轉的背景 //創建矩陣控制圖片旋轉和平移 Matrix matrix = new Matrix(); //設置旋轉角度 matrix.postRotate((rotate += 48) % 360, rotateImg.getWidth() / 2, rotateImg.getHeight() / 2); //設置左邊距和上邊距 matrix.postTranslate(0, 0); //繪制旋轉圖片 canvas.drawBitmap(rotateImg, matrix, paint); //休眠控制最大幀率為每秒3繪制30次 Thread.sleep(30); holder.unlockCanvasAndPost(canvas);//解鎖畫布,提交畫好的圖像 } catch (Exception e) { // TODO: handle exception Log.v(tag2, "DrawSurfaceView:繪制失敗..."); } } } } } ~~~ **需要注意的幾點:** 第一,就是如何安全中止一個線程。這里通過設置標志位來實現。因為自帶的stop()方法不安全,android本身都不推薦。關于如何安全中止線程可以參考這里:http://www.iteye.com/problems/67052 http://www.dewen.org/q/1957 第二,holder.unlockCanvasAndPost(canvas);//解鎖畫布,提交畫好的圖像 這句話必須和?? ??? ??? ??? ???? canvas = holder.lockCanvas(new Rect(0, 0, 130, 130)); //獲取畫布? 在一個{ }里。像這里的http://www.cnblogs.com/jqyp/archive/2012/01/01/2309692.html的做法在程序退出時會拋出異常。原因是線程中止的時候無法再解鎖畫布了。 第三,利用Matrix讓圖片旋轉的核心代碼: ~~~ //創建矩陣控制圖片旋轉和平移 Matrix matrix = new Matrix(); //設置旋轉角度 matrix.postRotate((rotate += 48) % 360, rotateImg.getWidth() / 2, rotateImg.getHeight() / 2); //設置左邊距和上邊距 matrix.postTranslate(0, 0); //繪制旋轉圖片 canvas.drawBitmap(rotateImg, matrix, paint); //休眠控制最大幀率為每秒3繪制30次 Thread.sleep(30); ~~~ 第四,之所以將此surfaceview設成頂層透明,原因是雜家想探索在底層surfaceview預覽攝像頭視頻的時候,在頂層的surfaceview繪制一個旋轉的圖片動畫。但遺憾的是,圖片確實是旋轉了,底層的攝像頭預覽也正常。但就是旋轉的圖片將預覽畫面擋住了。**唉,看來前文http://blog.csdn.net/yanzi1225627/article/details/8580034這里的360掃描二維碼的界面不是通過這種思路實現的,抑或是 我旋轉的圖片不是透明的??? ?****
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看