์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋/์ถ์ํ ์ ์๋ ์ฌ์ฉ์ ์ง์ ๋ณด๊ธฐ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ
package com.example.mindmapping;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.otaliastudios.zoom.ZoomLayout;
public class MainActivity extends AppCompatActivity {
<strong i="7">@Override</strong>
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MindMap map = new MindMap(this);
setContentView(R.layout.activity_main);
ZoomLayout zoomLayout = findViewById(R.id.zoomLayoutContainer);
zoomLayout.addView(map);
setContentView(map);
}
}
์ง๋๊ฐ ์ฌ์ฉ์ ์ ์ ๋ณด๊ธฐ์ธ ๊ฒฝ์ฐ ๋ณด๊ธฐ๋ฅผ ํ์ฅํ๊ณ onDraw ๋ฉ์๋๋ฅผ ์ฌ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ฌ์ฉ์ ์ ์ ๋ณด๊ธฐ์ด๊ฑฐ๋ ์ ํ ๋ ์ด์์์์ ํ์ฅ๋๊ณ ํ ์คํธ ๋ณด๊ธฐ๋ฅผ ํฌํจํ๋ TextElement ๋ฐ ๊ธฐํ์ ๊ฐ์ ๊ธฐํ ์์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
package com.example.mindmapping;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
import android.widget.Toast;
public class MindMap extends View {
private Context context;
private Canvas canvas;
private Paint brush;
//Canvas Variables
private float centerMarginX;
private float centerMarginY;
private float mWidth;
private float mHeight;
public MindMap(Context context) {
super(context);
this.context = context;
initSetup();
}
<strong i="11">@Override</strong>
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
this.canvas = canvas;
initDrawing();
}
public void initSetup() {
brush = new Paint(Paint.ANTI_ALIAS_FLAG);
}
public void initDrawing() {
brush.setStyle(Paint.Style.STROKE);
brush.setStrokeWidth(10);
brush.setColor(Color.parseColor("black"));
canvas.drawText("Helo ",50,50,brush);
mWidth = getMeasuredWidth();
mHeight = getMeasuredHeight();
centerMarginX = mWidth / 2;
centerMarginY = mHeight / 2;
TextElement textElement = new TextElement(context, "Main Topic");
textElement.setX(centerMarginX - (textElement.getLayoutWidth() / 2));
textElement.setY(centerMarginY - (textElement.getLayoutHeight() / 2));
textElement.draw(canvas);
TextElement textElement1 = new TextElement(context, "Another One");
textElement1.setX(textElement.getX() + textElement.getLayoutWidth() + 600);
textElement1.setY(textElement.getY() - textElement.getLayoutHeight());
textElement1.draw(canvas);
Toast.makeText(this.context,"Drawn",Toast.LENGTH_SHORT).show();
}
}
onDraw ๋ฉ์๋๊ฐ ํธ์ถ๋์ด๋ ZoomLayout์ ์ปค์คํ ๋ทฐ(์ด ๊ฒฝ์ฐ ๋งต)๊ฐ ๊ทธ๋ ค์ง์ง ์์ง๋ง ๋ ์ด์์ ํ์ผ ๋์ setContentView์ ๋งต์ ์ค์ ํ๊ณ ZoomLayout์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋งต์ด ์บ๋ฒ์ค์ ๊ทธ๋ ค์ง๊ณ ์ถ์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ๋/์ถ์ํ ์ ์๋ ๋ด ์ฌ์ฉ์ ์ง์ ๋ณด๊ธฐ๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด
1.8.0
initDrawing() ์ ๊ทธ๋ ค์ง ํฌ๋ก ํ ์คํธ๋ ์บ๋ฒ์ค์ ์๋ฌด๊ฒ๋ ๊ทธ๋ ค์ง์ง ์์ต๋๋ค.
๊ทธ setContentView๋ ์ง๋๋ฅผ ํ ์คํธ๋ก ๋ณด๊ธฐ๋ก ์ค์ ํ๊ธฐ ์ํด ๋ค์ ํธ์ถ๋์์ผ๋ฉฐ, ์ฃผ์์ด์์ต๋๋ค. ์ ๊ฑฐํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ๋ณด๊ธฐ๋ 0 ํฌ๊ธฐ๋ก ๊ทธ๋ฆด ์ ์์ต๋๋ค. ๊ธฐ๊ธฐ/์๋ฎฌ๋ ์ดํฐ์ ๊ฐ๋ฐ์ ์ค์ ์ ์ฌ์ฉํ๊ฑฐ๋ Android Studio์ ๋ ์ด์์ ๊ฒ์ฌ๊ธฐ๋ฅผ ํตํด ๋ ์ด์์์ ๋๋ฒ๊ทธํด ๋ณด์ธ์.
๊ฐ์ฌ ํด์ !
์ฌ์ ์๋ onMeasure์์ setMeasuredDimension์ ํธ์ถํด์ผ ํ์ต๋๋ค. ์ด๊ฒ์ด ์์ ํ ์ฌ์ฉ์ ์ ์๋ ๋ณด๊ธฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฌธ์!
๋ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ์ฌ ํด์ !
์ฌ์ ์๋ onMeasure์์ setMeasuredDimension์ ํธ์ถํด์ผ ํ์ต๋๋ค. ์ด๊ฒ์ด ์์ ํ ์ฌ์ฉ์ ์ ์๋ ๋ณด๊ธฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฌธ์!
๋ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.