Дети номер строки android

Я хочу сделать номер строки для детского приложения Строка должна выглядеть так:

Дети номер строки android

Я думаю использовать панель поиска, но я обнаружил, что это невозможно, поскольку диапазон, а не статический, также необходимо выполнять действие, когда пользователь касается каждого числа. поэтому я прошу помощи или предложения.

также должен сделать функционал рисования дуги
Дети номер строки android

дугу нужно рисовать динамически, пока пользователь перемещает палец по числам

также рисует прямоугольник при прикосновении к любому числу. Хочу попросить совета или помощи в реализации чего-то подобного.

edit1: линия, используемая для решения уравнения, как на третьем изображении Дети номер строки android

Вы можете получить представление об этих библиотеках.

Khemraj Sharma 10.07.2018 14:36

спасибо @Khemraj но мне это не помогло :(

Moustafa EL-Saghier 14.07.2018 20:30
1
3
69
2

Ответы 2

Вы можете использовать Custom View (Пользовательский рисунок), который может помочь вам в рисовании фигур, проверьте ссылку, надеюсь, это поможет пользовательские просмотры Android-разработчиков

Я пытаюсь сделать это, братан, но у меня возникают некоторые трудности при этом

Moustafa EL-Saghier 09.07.2018 23:12

Добро пожаловать в Stack Overflow! Хотя ссылки являются отличным способом обмена знаниями, они не ответят на вопрос, если в будущем они сломаются. Добавьте к своему ответу основное содержание ссылки, которая отвечает на вопрос. В случае, если содержание слишком сложное или слишком большое, чтобы уместиться здесь, опишите общую идею предлагаемого решения. Не забывайте всегда сохранять ссылку на веб-сайт исходного решения. См .: Как мне написать хороший ответ?

sɐunıɔןɐqɐp 09.07.2018 23:40

Вероятно, есть гораздо лучший способ сделать это, но вот что я придумал, надеюсь, этого достаточно, чтобы указать вам в правильном направлении:

Мероприятия:

public class DrawActivity extends AppCompatActivity {
    float startPointX = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_draw);

        MyDrawable drawing = new MyDrawable(this);
        setContentView(drawing);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        MyDrawable drawing = new MyDrawable(this);

        if (event.getY() > 1000) {  // Click below line to reset
            startPointX = 0;
        } else if (startPointX == 0) {  // Draw rectangle
            startPointX = event.getX();
            drawing = new MyDrawable(this, startPointX);
        } else if (startPointX > 0) {   // Draw arc
            drawing = new MyDrawable(this, startPointX, event.getX());
        }

        setContentView(drawing);

        return true;
    }
}

Возможность рисования:

public class MyDrawable extends View {
    private Canvas mCanvas;
    private Paint mRedPaint;
    private Paint mGreenPaint;
    private Paint mBluePaint;

    float baseLine = 500;
    float rectangleX;
    float arcEnd;

    public MyDrawable(Context context) {
        super(context);
    }

    public MyDrawable(Context context, float startPoint) {
        super(context);

        rectangleX = startPoint;
    }

    public MyDrawable(Context context, float startPoint, float endPoint) {
        super(context);

        rectangleX = startPoint;
        arcEnd = endPoint;
    }

    @Override
    public void onDraw(Canvas canvas) {
        mCanvas = canvas;

        int width = 1000;

        setupPaint();

        canvas.drawLine(50, baseLine, width, baseLine, mBluePaint);

        int mark = 50;
        while(mark < width) {
            canvas.drawLine(mark, baseLine-50, mark, baseLine+50, mGreenPaint);
            mark += (width /10);
        }

        drawRectangle();
        drawArc();
    }

    private void setupPaint() {
        mRedPaint = new Paint();
        mRedPaint.setARGB(255, 180, 0, 0);
        mRedPaint.setStyle(Paint.Style.STROKE);
        mRedPaint.setStrokeWidth(15);

        mGreenPaint = new Paint();
        mGreenPaint.setARGB(255, 0, 180, 0);
        mGreenPaint.setStrokeWidth(15);

        mBluePaint = new Paint();
        mBluePaint.setARGB(255, 0, 0, 180);
        mBluePaint.setStrokeWidth(30);

    }

    public void drawRectangle() {
        if ( rectangleX > 0) {
            mCanvas.drawRect(rectangleX - 25, baseLine-50, rectangleX + 25, baseLine+50, mRedPaint);
        }
    }

    public void drawArc() {
        if (arcEnd != 0 && arcEnd < rectangleX) {
            mCanvas.drawArc(arcEnd, baseLine-200, rectangleX, baseLine, 0, -180, false, mRedPaint);
        } else if (arcEnd != 0 && arcEnd > rectangleX) {
            mCanvas.drawArc(rectangleX, baseLine-200, arcEnd, baseLine, 0, -180, false, mRedPaint);
        }
    }
}

спасибо за ваш комментарий, но мой старт для дуги не всегда первый или конец его можно изменить, так же, как и рисование прямоугольника

Moustafa EL-Saghier 11.07.2018 23:30

Другие вопросы по теме