невозможно перетащить пользовательский просмотр изображений с помощью ontouchlistener

1

Я новичок в программировании на Android... Я пытаюсь переместить вновь созданное изображение, которое добавлено в макет, используя жест (в частности, ontouchlistener).. ему удалось добавить изображение, но ontouchlistener поймать только до ACTION_DOWN.. вот мой код:

package com.calengine;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageView;
import android.widget.TextView;

public class coba extends CALEngineActivity implements OnClickListener, OnTouchListener{

    private ImageView movableimage;
    private FrameLayout layout;
    private LayoutParams params;
    int status;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainform2);

        layout = (AbsoluteLayout) findViewById(R.id.absLayoutAction);
        status = 0;
            movableimage = new ImageView(this);
            movableimage.setImageResource(R.drawable.icon_launcher);
            layout.addView(movableimage);
            movableimage.setOnTouchListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        TextView txt = (TextView) findViewById(R.id.textView1);
        LayoutParams layoutParams = (LayoutParams) movableimage.getLayoutParams();
        switch(event.getAction())
        {
        case MotionEvent.ACTION_DOWN:   
            txt.setText("Created");
            break;
        case MotionEvent.ACTION_MOVE:
            txt.setText("Moving");
            int x_cord = (int)event.getRawX();
            int y_cord = (int)event.getRawY();

            layoutParams.leftMargins = x_cord - 25;
            layoutParams.topMargins = y_cord - 75;

            movableimage.setLayoutParams(layoutParams);
            break;
        case MotionEvent.ACTION_UP:
            txt.setText("Up");
            break;
        default:
            break;
        }
        return false;
    }
}

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

Теги:
drag-and-drop
android-imageview
ontouchlistener

2 ответа

1

Я верю, что когда вы возвращаете ложь из слушателя, он перестает давать вам больше информации (относящейся к последующим событиям, которые происходят). Попробуйте вернуть true и проверьте, устраняет ли это вашу проблему. Оффлайн Я не вижу ничего другого, что в корне неверно (хотя длинная лекция в порядке * правильного способа делать то, что вы здесь делаете, что не связано с AbsoluteLayout, а скорее SurfaceView, на которое вы можете рисовать ( и манипулировать), что бы вы ни пожелали... но это еще более продвинутый.

здесь достаточно простой старт. Имейте в виду, что вы можете захватывать события касания на любом представлении, и в этом примере вы просто добавили бы эту функцию, чтобы нарисовать все, что вы хотите, для соответствующих координат. Вы можете легко найти учебники о том, как перетаскивать вещи. http://android-coding.blogspot.com/2011/05/drawing-on-surfaceview.html

  • 0
    спасибо .. Я пытался узнать больше о SurfaceView, но я подумал, что мне нужно больше времени для его изучения, а времени просто не хватило (я делаю это для простого проекта). в будущем я постараюсь использовать SurfaceView и пользовательские виды больше ... спасибо за ваше предложение :)
1

Вы должны вернуть true в методе onTouch.

  • 0
    спасибо, это наконец работает !! в моих предыдущих попытках я уже вернул true, но это просто не сработало ... Еще раз спасибо !! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню