Android Drawing - PullRequest
       1

Android Drawing

1 голос
/ 25 февраля 2011

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

package com.smallbore.smallbore;

import android.app.Activity;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class targetenter extends Activity {
     /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.targetenter);
        ImageView v = (ImageView) findViewById(R.id.imageView1);
        v.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                TextView t1 = (TextView) findViewById(R.id.textView2);
                TextView t2 = (TextView) findViewById(R.id.textView3);
                t1.setText("X: "+arg1.getX());
                t2.setText("Y: "+arg1.getY());
                 int x = (int)arg1.getX();
                    int y = (int)arg1.getY();
                    int width = 50;
                    int height = 50;

                    ShapeDrawable mDrawable = new ShapeDrawable(new OvalShape());
                    mDrawable.getPaint().setColor(0xff74AC23);
                    mDrawable.setBounds(x, y, x + width, y + height);
                    ImageView v = (ImageView) findViewById(R.id.imageView1)
                    v.setImageDrawable(mDrawable);
                    return false;       
    }
            });
        };
    }

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Чтобы нарисовать точки, вам, вероятно, придется использовать пользовательский View и переопределять onTouchEvent и onDraw.onTouchEvent даст вам координаты x, y события касания, а в onDraw вы можете нарисовать круг в этой точке на холсте, который фреймворк предоставляет этому методу.Если вы хотите очистить предыдущие точки, вам нужно только отслеживать последние координаты x, y.В противном случае вам нужно будет сохранить рабочий список (ArrayList или что-то в этом роде).

На вашем месте, я бы, вероятно, создал подкласс ImageView, чтобы я мог получить материал для рисования изображений бесплатно.Вызовите super.onDraw (canvas) внутри переопределенного метода onDraw, а затем нарисуйте точки (canvas.drawCircle).

0 голосов
/ 25 февраля 2011

Android SDK содержит довольно хороший пример: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/DrawPoints.html

Вам просто нужно сделать SampleView обработкой события click и получить его отображение изображения в методе SampleView.onDraw.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...