onDraw를 재정의하고 일부 캔버스 잠금 및 게시를 수행 할 때까지 drawable-screen-area 크기의 캔바스를 얻을 수 없습니다. (내가 이해하는 것에서)
@Override
public void run() {
while (running) {
Canvas c = null;
try {
c = view.getHolder().lockCanvas();
synchronized (view.getHolder()) {
view.onDraw(c);
}
} finally {
if (c != null) {
view.getHolder().unlockCanvasAndPost(c);
}
}
try {
sleep(10);
} catch (Exception e) {}
}
}
이제 루프에서 그리기를 호출하면 캔버스로 전송됩니다. 이제 사용자 정의보기에서 onDraw 메서드 만 구현하면됩니다.
@Override
protected void onDraw(Canvas canvas) {
int h = canvas.getHeight();
int w = canvas.getWidth();
}
캔버스가 없어도 가능합니다. 먼저 정적 소유자가있는 클래스를 선언합니다.
public class Window {
public static int WINDOW_HEIGHT; // = to screen size
public static int WINDOW_WIDTH; // = to screen size
}
다음 기본 시작 활동에 몇 가지 특별한 기능을 호출하십시오. 우리는 누군가 캔버스에 그림을 그리고 바가없는 전체 화면을 원하지 않는다는 것을 본 적이 없으므로 이걸 요청합니다. 전체 화면을 사용하지 않으려는 경우 옵션을 무시하십시오. 정확한 측정 값을 얻으려면 여기서도 숨길 필요가 있습니다. 사용자 정의 내부에서
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // <--- or here you can call your custom view
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Window.WINDOW_HEIGHT = height;
Window.WINDOW_WIDTH = width;
}
는 호출이
private void CreateWindow(Context context) {
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Window.WINDOW_HEIGHT = height; // = to screen size
Window.WINDOW_WIDTH = width; // = to screen size
}
처럼 만들 수있는보기