ابزار نقاشی چند ضلعی

230

در این مقاله به یک ابزار جمع و جور اندروید برای ساخت و جمع کردن چند ضلعی های منظم با امکاناتی نظیر :

  • تعداد ضلع (≥ 3)
  • مختصات مرکز
  • شعاع بیرونی (مرکز به رأس)
  • گرد کردن گوشه ها
  • ...

پرداخته شده است.

گام اول : افزودن PolygonDrawingUtil


PolygonDrawingUtil را به عنوان dependency در فایل build.gridle خود پیاده سازی کنید.

        
            dependencies {
               implementation 'com.stkent:polygondrawingutil:1.1.0'
            }
        
    

گام دوم : ساخت کلاس PolygonView


در پروژه خود یک کلاس به اسم PolygonView ایجاد کنید و کد های زیر را در آن جایگذاری کنید .

        
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.view.View;
import com.stkent.polygondrawingutil.PolygonDrawingUtil;
import static android.graphics.Paint.ANTI_ALIAS_FLAG;

public class PolygonView extends View {

    private final PolygonDrawingUtil polygonDrawingUtil = new PolygonDrawingUtil();
    private final Paint polygonFillPaint = new Paint(ANTI_ALIAS_FLAG);
    private final Paint polygonStrokePaint = new Paint(ANTI_ALIAS_FLAG);
    private final float strokeWidth = getResources().getDimension(R.dimen.stroke_width);

    private int numberOfSides = 3;
    private float cornerRadius = 120;
    private float rotation = 0;
    private float scale;

    private final Path strokePath = new Path();

    public PolygonView(final Context context, @Nullable final AttributeSet attrs) {
        super(context, attrs);

        polygonFillPaint.setColor(ContextCompat.getColor(context, R.color.colorAccentTranslucent));
        polygonFillPaint.setStyle(Paint.Style.FILL);

        polygonStrokePaint.setColor(ContextCompat.getColor(context, R.color.colorAccent));
        polygonStrokePaint.setStrokeWidth(strokeWidth);
        polygonStrokePaint.setStyle(Paint.Style.STROKE);
    }

    @Override
    protected void onDraw(final Canvas canvas) {
        super.onDraw(canvas);

        final float centerX = getWidth() / 2;
        final float centerY = getHeight() / 2;
        final float radius = scale * (getWidth() / 2 - strokeWidth);

        // Method 1 (simpler for direct drawing):
        polygonDrawingUtil.drawPolygon(
                canvas,
                numberOfSides,
                centerX,
                centerY,
                radius,
                cornerRadius,
                rotation,
                polygonFillPaint);

        // Method 2 (allows polygon Path post-processing if desired):
        polygonDrawingUtil.constructPolygonPath(
                strokePath,
                numberOfSides,
                centerX,
                centerY,
                radius,
                cornerRadius,
                rotation);

        canvas.drawPath(strokePath, polygonStrokePaint);
    }

    public int getNumberOfSides() {
        return numberOfSides;
    }

    public void setNumberOfSides(final int numberOfSides) {
        this.numberOfSides = numberOfSides;
        invalidate();
    }

    public void setCornerRadius(final float cornerRadius) {
        this.cornerRadius = cornerRadius;
        invalidate();
    }

    public void setPolygonRotation(final float rotation) {
        this.rotation = rotation;
        invalidate();
    }

    public void setScale(final float scale) {
        this.scale = scale;
        invalidate();
    }

}

        
    

گام سوم : چگونگی استفاده


در کد xml لایه اکتیویتی و یا فرگمنت خود کد زیر را وارد نمایید .

        
             < your_package_name.PolygonView
                    android:id="@+id/polygon_view"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1" />
        
    

حال در اکتیویتی یا فرگمنت خود polygon_view رو find کرده و با استفاده از متد های آن تعداد اضلاع ، مقیاس ، شعاع گوشه ها و ... را تعیین کنید .

پیوست ها :
  • این مقاله دارای پیوست نمی باشد.
loder | اُکسیما
»» نویسنده مقاله
حسین رئیسی | اُکسیما

حسین رئیسی
»» پشتیبانی مقاله

تیم پشتیبانی اُکسیما به صورت 24 ساعت در هر زمان و مکان، پاسخگوی تمامی سوالات و ابهامات شما در مورد این مقاله خواهند بود. بدین منظور شما می توانید از طریق روش های زیر از پشتیبانی فنی این مقاله برخوردار گردید. تیم پشتیبانی این اطمینان خاطر را به شما دانشجویان گرامی خواهند داد که در سریع ترین زمان ممکن پاسخگوی شما عزیزان باشند.


به اشتراک بگذارید ...

دوستان و همراهان گرامی : آیا تمایل دارید این مقاله را با دوستان و آشنایان خود در تلگرام به اشتراک بگذارید؟

مقاله های پیشنهادی

پیاده سازی RecyclerView با محتوایی پویا و داینامیک به همراه اضافه کردن listener برای هر یک کاری بسیار آزار دهنده است. اگر ما مجبور به پیاده سازی انیمیشن نیز برای آن Recyclers باشیم، دیگر یک کابوس می شود.به همین دلیل ایده ی یک رابط کاربری بسیار ساده به ذهن رسید ، که با قدرت بیشتری، بدون اجرای آداپتور، نمایش ListView، GridView و RecyclerView را با سهولت و سادگی جایگزین می نماید .

حسین رئیسی

151

توسعه ی برنامه های هیبریدی باعث می شود که کار برای توسعه دهندگان وب بسیار ساده شود چرا که آن ها یک برنامه واحد ایجاد می کنند که کارآمد در سیستم عامل های متعدد مانند iOS، Android و windows می باشد بدون اینکه هیچ گونه تلاش اضافی انجام دهند. همچنین مزایای استفاده از برنامه Hybrid که شامل توسعه هزینه های مؤثر، دسترسی به طیف گسترده ای از قابلیت های سخت افزاری / نرم افزاری متعدد و ... می باشد. بنابراین، می توان آن را یک سرمایه گذاری سودآور برای مردم دانست .

حسین رئیسی

179

چهار روش وجود دارد که می توانید به وسیله آن ها با محصول و خدمات خود وارد بازار شوید : ایجاد مطلوبیت ، قیمت گذاری مناسب ، واقع بینی مشتریان و ارسال ارزش واقعی مواردی هستند که به کمک آن ها می توانید خدمات و محصولات خود را وارد بازار کنید .

حسین رئیسی

189