<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ##為什么要使用SurfaceView來實現動畫? ###因為View的繪圖存在以下缺陷: 1. View缺乏雙緩沖機制 2. 當程序需要更新View上的圖像時,程序必須重繪View上顯示的整張圖片 3. 新線程無法直接更新View組件 ##SurfaceView的繪圖機制 * 一般會與SurfaceView結合使用 * 調用SurfaceView的getHolder()方法即可獲得SurfaceView關聯的SurfaceHolder ##SurfaceHolder提供了如下方法來獲取Canvas對象 1. Canvas lockCanvas():鎖定整個SurfaceView對象,獲取該Surface上的Canvas 2. Canvas lockCanvas(Rect dirty):鎖定SurfaceView上Rect劃分的區域,獲取該Surface上的Canvas 3. unlockCanvasAndPost(canvas):釋放繪圖、提交所繪制的圖形,需要注意,當調用SurfaceHolder上的unlockCanvasAndPost方法之后,該方法之前所繪制的圖形還處于緩沖之中,下一次lockCanvas()方法鎖定的區域可能會“遮擋”它 ``` public class SurfaceViewTest extends Activity { // SurfaceHolder負責維護SurfaceView上繪制的內容 private SurfaceHolder holder; private Paint paint; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); paint = new Paint(); SurfaceView surface = (SurfaceView) findViewById(R.id.show); // 初始化SurfaceHolder對象 holder = surface.getHolder(); holder.addCallback(new Callback() { @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { } @Override public void surfaceCreated(SurfaceHolder holder) { // 鎖定整個SurfaceView Canvas canvas = holder.lockCanvas(); // 繪制背景 Bitmap back = BitmapFactory.decodeResource( SurfaceViewTest.this.getResources() , R.drawable.sun); // 繪制背景 canvas.drawBitmap(back, 0, 0, null); // 繪制完成,釋放畫布,提交修改 holder.unlockCanvasAndPost(canvas); // 重新鎖一次,"持久化"上次所繪制的內容 holder.lockCanvas(new Rect(0, 0, 0, 0)); holder.unlockCanvasAndPost(canvas); } @Override public void surfaceDestroyed(SurfaceHolder holder) { } }); // 為surface的觸摸事件綁定監聽器 surface.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View source, MotionEvent event) { // 只處理按下事件 if (event.getAction() == MotionEvent.ACTION_DOWN) { int cx = (int) event.getX(); int cy = (int) event.getY(); // 鎖定SurfaceView的局部區域,只更新局部內容 Canvas canvas = holder.lockCanvas(new Rect(cx - 50, cy - 50, cx + 50, cy + 50)); // 保存canvas的當前狀態 canvas.save(); // 旋轉畫布 canvas.rotate(30, cx, cy); paint.setColor(Color.RED); // 繪制紅色方塊 canvas.drawRect(cx - 40, cy - 40, cx, cy, paint); // 恢復Canvas之前的保存狀態 canvas.restore(); paint.setColor(Color.GREEN); // 繪制綠色方塊 canvas.drawRect(cx, cy, cx + 40, cy + 40, paint); // 繪制完成,釋放畫布,提交修改 holder.unlockCanvasAndPost(canvas); } return false; } }); } } ``` 上面的程序為SurfaceHolder添加了一個CallBack實例,該Callback中定義了如下三個方法: * void surfaceChanged(SurfaceHolder holder, int format, int width, int height):當一個surface的格式或大小發生改變時回調該方法。 * void surfaceCreated(SurfaceHolder holder):當surface被創建時回調該方法 * void surfaceDestroyed(SurfaceHolder holder):當surface將要被銷毀時回調該方法
                  <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>

                              哎呀哎呀视频在线观看