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 구현 패 널 코드
이상 은 본 고의 모든 내용 입 니 다.여러분 이 안 드 로 이 드 소프트웨어 프로 그래 밍 을 배 우 는 데 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.