Android 는 더 블 버퍼 기술 로 화판 을 실현 합 니 다.

본 논문 의 사례 는 안 드 로 이 드 가 화판 을 실현 하 는 구체 적 인 코드 를 공유 하고 사용 하 는 기술 은 더 블 버퍼 기술 이 므 로 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
1.더 블 버퍼 기술 의 개념
더 블 버퍼 기술 이란 간단 합 니 다.프로그램 이 지정 한 View 에 그 려 야 할 때 프로그램 은 이 View 구성 요소 에 직접 그 려 지지 않 고 메모리 에 있 는 Bitmap 그림(버퍼)에 먼저 그 려 집 니 다.메모리 에 있 는 Bitmap 가 그 려 진 후에 Bitmap 를 View 구성 요소 에 한꺼번에 그립 니 다.
2.Android 는 더 블 버퍼 로 화판 을 구현 합 니 다.
 실현 의 사고:
1).메모리 에 있 는 그림 을 정의 하고 버퍼 비트 맵 cacheBitmap=null 로 사용 합 니 다.
2).버퍼 캐 시 를 정의 하 는 Canvas 대상 Canvas cacheCanvas=null;
3).cacheCanvas 를 설정 하면 메모리 의 bitmap 에 그 려 집 니 다.
cacheCanvas.setBitmap(cacheBitmap);
4).이 View 에 cacheBitmap 를 그립 니 다.
canvas.drawBitmap(cacheBitmap,0,0,p);
3.코드 구현

package com.lidong.android_ibrary.view;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

/**
*@   : DrawView
*@   :            
*@   : 2016/4/26 9:18
*@  :   
*@   : [email protected]
*@company: chni
*/
public class DrawView extends View {

 float preX;
 float preY;
 private Path path;
 private Paint paint = null;
 private int VIEW_WIDTH = 800;
 private int VIEW_HEIGHT = 600;
 //         ,       
 Bitmap cacheBitmap = null;
 //     Cache Canvas  
 Canvas cacheCanvas = null;

 public DrawView(Context context) {
  this(context,null);
 }

 public DrawView(Context context, AttributeSet attrs) {
  super(context, attrs);
  //      VIew        
  cacheBitmap = Bitmap.createBitmap(VIEW_WIDTH,VIEW_HEIGHT,Bitmap.Config.ARGB_8888);
  //     Cache Canvas  
  cacheCanvas = new Canvas();
  path = new Path();
  //  cacheCanvas        bitmap 
  cacheCanvas.setBitmap(cacheBitmap);
  paint = new Paint();
  paint.setColor(Color.RED);
  paint.setFlags(Paint.DITHER_FLAG);
  paint.setStyle(Paint.Style.STROKE);
  paint.setStrokeWidth(5);
  paint.setAntiAlias(true);
  paint.setDither(true);
 }

 @Override
 protected void onDraw(Canvas canvas) {
  Paint p = new Paint();
  // cacheBitmap    View
  canvas.drawBitmap(cacheBitmap,0,0,p);
  canvas.drawPath(path,paint);
 }


 @Override
 public boolean onTouchEvent(MotionEvent event) {
  //           
   float x = event.getX();
   float y = event.getY();
  switch (event.getAction()){
   case MotionEvent.ACTION_DOWN:
    path.moveTo(x,y);
    preX = x;
    preY = y;
    break;
   case MotionEvent.ACTION_MOVE:
    path.quadTo(preX,preY,x,y);
    preX = x;
    preY = y;
    break;
   case MotionEvent.ACTION_UP:
    //      cacheBitmap Canvas   
    cacheCanvas.drawPath(path,paint);
    path.reset();
    break;
  }
  invalidate();// UI    VIew
  return true;
 }
}
4.실현 되 는 효과

코드 다운로드:Android 구현 패 널 코드
이상 은 본 고의 모든 내용 입 니 다.여러분 이 안 드 로 이 드 소프트웨어 프로 그래 밍 을 배 우 는 데 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기