0

setImageBitmap を使用して画像を追加し、それらに setOnTouchListener を適用する 2 つの画像ビューがあります。しかし、ここでの問題は、最初のimgを追加すると初めてタッチで移動しますが、2番目のimgを追加すると2番目のimgが移動しますが、その後最初のimgをタッチで移動できないことです。英語で申し訳ありませんが、高度に感謝します。

4

2 に答える 2

0

2つの画像に別々に onTouchListener を与える必要があります

 ImageView first_image=new ImageView(this);
   first_image.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
                if(event.getAction()==MotionEvent.ACTION_UP)
                {

                }
                if(event.getAction()==MotionEvent.ACTION_DOWN)
                {

                }
                if(event.getAction()==MotionEvent.ACTION_MOVE)
                {
                    //Code for image moving
                }
            return false;
        }
    });


        ImageView second_image=new ImageView(this);
    second_image.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
                if(event.getAction()==MotionEvent.ACTION_UP)
                {

                }
                if(event.getAction()==MotionEvent.ACTION_DOWN)
                {

                }
                if(event.getAction()==MotionEvent.ACTION_MOVE)
                {
                    //code for image moving
                }
            return false;
        }
    });
于 2012-06-09T05:29:58.090 に答える
0

そのための次のコードを試してください。Textview の代わりに Imageview を使用すると役立つ場合があります。

tv1 = (TextView)findViewById(R.id.text_view1);
tv1.setOnTouchListener(new View.OnTouchListener() {         

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        layoutParams1 = (RelativeLayout.LayoutParams) tv1.getLayoutParams();
        switch(event.getActionMasked())
        {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();
                if (x_cord > windowwidth) {
                    x_cord = windowwidth;
                }
                if (y_cord > windowheight) {
                    y_cord = windowheight;
                }
                layoutParams1.leftMargin = x_cord - 25;
                layoutParams1.topMargin = y_cord - 75;
                tv1.setLayoutParams(layoutParams1);
                break;
            default:
                break;
        }
        return true;
    }
});

tv2 = (TextView)findViewById(R.id.text_view2);
tv2.setTextColor(Color.MAGENTA);
tv2.setOnTouchListener(new View.OnTouchListener() {         

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        layoutParams2 = (RelativeLayout.LayoutParams) tv2.getLayoutParams();
        switch(event.getActionMasked())
        {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();
                if (x_cord > windowwidth) {
                    x_cord = windowwidth;
                }
                if (y_cord > windowheight) {
                    y_cord = windowheight;
                }
                layoutParams2.leftMargin = x_cord - 25;
                layoutParams2.topMargin = y_cord - 75;
                tv2.setLayoutParams(layoutParams2);
                break;
            default:
                break;
        }
        return true;
    }
});
于 2012-06-09T05:39:27.363 に答える