رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

درخواست توضیح این قطعه کد


پست های پیشنهاد شده

با سلام و عرض ادب خدمت تمامی دوستان و عزیزان این انجمن

اولین پستی هست که داخل انجمن میذارم و امیدوارم که این پست شروع پیشرفتمم تو زمینه اندورید باشه.

بخشید دوستان بنده دارم یک پروژه برای درس گرفیک کامپیوتری می نویسم ، ینی یه برنامه با اندروید و کار با کانواس در اندورید.

یک قطعه کد پیدا کردم براش حالا اگه بشه خاستم یک توضیح مختصر بدین که بفهمم این چیه ؟ ( کار این برنامم اینه که یه صفحه ایجاد کرده که با کشیدن دست روی صفحه نمایش خط میکشه ، متل نقاشی ولی بدون رنگ و ... )

کد :

[shcode=java]

package com.example.canvasandroid;

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;

public class CanvasView extends View {

    public int width;

    public int height;

    private Bitmap mBitmap;

    private Canvas mCanvas;

    private Path mPath;

    Context context;

    private Paint mPaint;

    private float mX, mY;

    private static final float TOLERANCE = 5;

    public CanvasView(Context c, AttributeSet attrs) {

        super(c, attrs);

        context = c;

        // we set a new Path

        mPath = new Path();

        // and we set a new Paint with the desired attributes

        mPaint = new Paint();

        mPaint.setAntiAlias(true);

        mPaint.setColor(Color.BLACK);

        mPaint.setStyle(Paint.Style.STROKE);

        mPaint.setStrokeJoin(Paint.Join.ROUND);

        mPaint.setStrokeWidth(4f);

    }

    // override onSizeChanged

    @Override

    protected void onSizeChanged(int w, int h, int oldw, int oldh) {

        super.onSizeChanged(w, h, oldw, oldh);

        // your Canvas will draw onto the defined Bitmap

        mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

        mCanvas = new Canvas(mBitmap);

    }

    // override onDraw

    @Override

    protected void onDraw(Canvas canvas) {

        super.onDraw(canvas);

        // draw the mPath with the mPaint on the canvas when onDraw

        canvas.drawPath(mPath, mPaint);

    }

    // when ACTION_DOWN start touch according to the x,y values

    private void startTouch(float x, float y) {

        mPath.moveTo(x, y);

        mX = x;

        mY = y;

    }

    // when ACTION_MOVE move touch according to the x,y values

    private void moveTouch(float x, float y) {

        float dx = Math.abs(x - mX);

        float dy = Math.abs(y - mY);

        if (dx >= TOLERANCE || dy >= TOLERANCE) {

            mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);

            mX = x;

            mY = y;

        }

    }

    public void clearCanvas() {

        mPath.reset();

        invalidate();

    }

    // when ACTION_UP stop touch

    private void upTouch() {

        mPath.lineTo(mX, mY);

    }

    @Override

    public boolean onTouchEvent(MotionEvent event) {

        float x = event.getX();

        float y = event.getY();

        switch (event.getAction()) {

        case MotionEvent.ACTION_DOWN:

            startTouch(x, y);

            invalidate();

            break;

        case MotionEvent.ACTION_MOVE:

            moveTouch(x, y);

            invalidate();

            break;

        case MotionEvent.ACTION_UP:

            upTouch();

            invalidate();

            break;

        }

        return true;

    }

}

[/shcode]

حالا میخام بدونم اگه بخام مثلا چندتا باتن کنارش بذارم که با انتخاب بشه رنگ قلم رو انتخاب کرد یا رنگ صفحه زمینه رو تغییر داد باید چه کرد؟

بسیار سپاس

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...