перетащить текстовое представление в Android - PullRequest
10 голосов
/ 11 декабря 2010

Я хочу перетащить n опустить текстовый вид на изображение в Android 2.X

пожалуйста, посмотрите на это изображение ниже.alt text

Здесь «синий» цвет представляет ViewGrop, «белый» - ImageView, а изображение устанавливается в ImageView.текст, написанный «Fashion», представляет собой TextView. Вот как я реализовал структуру.Теперь я хочу позволить пользователю выбрать TextView и перетащить его в любую часть изображения, а затем перетащить его поверх изображения в нужном месте.

На данный момент для справки я попытался сослаться на следующий URLно всякий раз, когда я использую TextView вместо Button, все становится ненормальным.

текст ссылки

Может кто-нибудь дать мне дорожную карту или пример, чтобы это сделать?

1 Ответ

9 голосов
/ 12 декабря 2010

Вместо этого попробуйте получить изображение в виде холста для рисования.

ImageView CanvasView = (ImageView) findViewById(R.id.fashion_pic)

Отсюда вы можете создать собственное растровое изображение и заново нарисовать его после TouchEvent. Следующий фрагмент содержит необходимый обход ошибки в 2.1 (или 2.2, я не могу вспомнить):

public void redrawImage() {

    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.fashion_pic);
    Bitmap proxy = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), Config.ARGB_8888);
    Canvas c = new Canvas(proxy);

    //Here, we draw the background image.
    c.drawBitmap(bm, new Matrix(), null);

    //Here, we draw the text where the user last touched.
    c.drawText("Fashion", someGlobalXvariable, someGlobalYvariable, somePaint);

    CanvasView.setImageBitmap(proxy);
}

Здесь вы создали холст, который уже имеет вашу картинку в качестве фона и рисует текст в переменных x и y. Теперь просто установите OnTouchListener:

CanvasView.setOnTouchListener( new OnTouchListener(){

    public boolean onTouch(View v, MotionEvent e) {

        someGlobalXvariable = e.getX();
        someGlobalYvariable = e.getY();
        redrawImage();
        return true;
    }
});

Как вы можете видеть, слушатель автоматически обновляет ваше изображение при касании, и текст будет следовать за пальцем пользователя. Поскольку вы используете растровое изображение в качестве основы, вы также можете добавить поддержку сохранения / загрузки изображения, если ваше приложение хочет иметь такую ​​функциональность.

Редактировать: Это может быть более удобным для производительности, если вы переместите строки 1-3 из redrawImage() и разместите их в другом месте, устанавливая эти объекты как глобальные объекты. Я позволю вам возиться с этим.

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