0

私はこれをやろうとしていますが、カラーバーを描くビューがあります。そして、ユーザーがそれを移動できるようにしたい(ドラッグアンドドロップ)

これは描画方法です:

int r,g,b;
        for(int i = 0; i < 64; i++)
        {       
            r =  Math.round((float)colorBuffer[i][0]*MAX_SCALING);
            g =  Math.round((float)colorBuffer[i][1]*MAX_SCALING);
            b =  Math.round((float)colorBuffer[i][2]*MAX_SCALING);
            paint.setColor(Color.argb(MAX_SCALING, r, g, b));

            canvas.drawLine(x1, y1, x2, y1, paint);
            y1+=3;
        }

RGBは単なる色です。

これは私のオンタッチ実装です。

     public boolean onTouchEvent(MotionEvent e) 
        {
            float x = e.getX();
            float y = e.getY();

            switch (e.getAction()) 
            {
                case MotionEvent.ACTION_DOWN:
                {
                    Toast t = Toast.makeText(getContext(), "Touch", Toast.LENGTH_SHORT);
                    t.show();
                    break;
                }
                case MotionEvent.ACTION_MOVE:
                {
                    x1=(int) x;
                    x2=(int) (x+30);
                    y1=(int) y;
                    break;
                }
                case MotionEvent.ACTION_UP:
                {
                    Toast t = Toast.makeText(getContext(), "Release", Toast.LENGTH_SHORT);
                    t.show();
                    x1=(int) x;
                    x2=(int) (x+30);
                    y1=(int) y;
                    break;
                }

            }
            invalidate();
            return true;  



}

これは完全に正常に機能しますが、問題は、ビューの外でも機能することです。したがって、ビューの外側に触れると、ボタンをクリックしてもバーがそこに移動します。バーも移動しようとします。ユーザーがビュー内に触れた場合にのみ、コンポーネントをドラッグアンドドロップします

どんな助けでも感謝します

4

1 に答える 1

0

タッチすると、ビューの x、y、幅、および高さが得られます。次に、バーを移動するたびに、私が理解しているようにMotionEvent.ACTION_MOVE、現在の座標がビューの境界内にあるかどうかを確認し、これが true の場合は、バーを移動できるようにします。

于 2013-01-05T21:58:18.347 に答える