1

私はドラッグアンドドロップを使用しています、一致するコンセプトを作成しています、画像を左から右にドラッグします、答えが正しい場合、そこで左から右に線を引きたい、などのように多くのものを使用します

public class Dragtesting extends Activity implements OnTouchListener{
 protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.drag);
        ViewGroup dlayout = (ViewGroup)findViewById(R.id.dlayout);
  dlayout.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View paramView, MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            if(touchFlag==true){
 switch (paramMotionEvent.getActionMasked()) 
                {
case MotionEvent.ACTION_DOWN :
 //getting the positions
break;
  case MotionEvent.ACTION_UP:
break;

  Canvas canvas = new Canvas();
  Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.GREEN);
canvas.drawColor(Color.BLUE);

canvas.drawLine(offset_x, offset_y, currentX, currentY, paint); 
  break;
                default:
                    break;
                }

          }
            return true;
        }
    });
@Override
public boolean onTouch(View paramView, MotionEvent paramMotionEvent) {
    // TODO Auto-generated method stub
    switch (paramMotionEvent.getActionMasked()) 
    {
    case MotionEvent.ACTION_DOWN:
        touchFlag=true;
        offset_x = (int) paramMotionEvent.getX();
        offset_y = (int) paramMotionEvent.getY();
       // tagvalue = (Integer) paramView.getTag();
        selected_item =  paramView;
        imageParams=paramView.getLayoutParams();
        break;
    case MotionEvent.ACTION_UP:
        selected_item=null;
        touchFlag=false;
        break;
    default:
        break;
    }       
    return false;
}

これは機能していません、助けてください

4

3 に答える 3

1

私は相対レイアウトを拡張し、画像ビューの間に線を引くために使用されるデザインタイムビューファイルを作成しました。おかげで助けてくれましたが、それは正しい答えではありませんでした。それは他の答えを受け入れないということです。

于 2013-03-22T10:12:31.423 に答える
0
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;

public class LineView extends View {

    private Paint paint = new Paint();
    private float offset_x;
    private float offset_y;
    private float currentX;
    private float currentY;

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

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            offset_x = currentX = event.getX();
            offset_y = currentY = event.getY();
        } else {
            currentX = event.getX();
            currentY = event.getY();
        }
        invalidate();
        return true;
    }

    @Override
    public void draw(Canvas canvas) {
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(2);
        paint.setColor(Color.GREEN);
        canvas.drawColor(Color.BLUE);

        canvas.drawLine(offset_x, offset_y, currentX, currentY, paint);
    }
}

どうぞ。こんな感じになります。テスト済み:)

于 2013-03-13T13:21:56.587 に答える
0

あなたは何を手に入れますか?

invalidate(); 描く前に書いてみてください 。

于 2013-03-13T13:15:40.403 に答える