كيف أرسم طريقة العرض المخصصة الخاصة بي والتي يمكن أن تصبح قابلة للتكبير باستخدام هذه المكتبة
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);
}
}
عندما تكون الخريطة عبارة عن طريقة عرض مخصصة ، فإنها تمدد طريقة العرض والتجاوز على طريقة الرسم ، فهي تحتوي على عناصر أخرى مثل TextElement & Other التي تعد أيضًا طرق عرض مخصصة أو تمتد من التخطيط الخطي وتحتوي على عرض نص: مثل هذا
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();
}
}
لا يتم رسم العرض المخصص (الخريطة في هذه الحالة) في ZoomLayout على الرغم من استدعاء طريقة onDraw ولكن عندما أقوم بتعيين الخريطة في setContentView بدلاً من ملف التخطيط ولا أستخدم ZoomLayout ، يتم رسم الخريطة على اللوحة القماشية ، أريد لرسم طريقة العرض المخصصة الخاصة بي والتي يجب أن تكون قابلة للتكبير باستخدام هذه المكتبة
1.8.0
لا شيء مرسوم على القماش ، ولا حتى هذا النص الهلو المرسوم في initDrawing ()
تم استدعاء هذا setContentView مرة أخرى لتعيين الخريطة كطريقة عرض كاختبار ، لقد كان تعليقًا ، وإزالته لا يحل المشكلة
قد يتم رسم العرض المخصص الخاص بك بحجم 0. حاول تصحيح تخطيطك ، إما باستخدام إعداد المطور على الجهاز / المحاكي ، أو من خلال مفتش تخطيط Android Studio.
شكرا !
احتجت إلى استدعاء setMeasuredDimension في onMeasure الذي تم تجاوزه ، لأن هذه طريقة عرض مخصصة بالكامل ، docs!
تم حل مشكلتي.
التعليق الأكثر فائدة
شكرا !
احتجت إلى استدعاء setMeasuredDimension في onMeasure الذي تم تجاوزه ، لأن هذه طريقة عرض مخصصة بالكامل ، docs!
تم حل مشكلتي.