0

在我的活动中,我计划在用户包围一个区域时绘制一个矩形或箭头。我确信存在在视图上绘制的方法,但我能找到的只是覆盖 onDraw 函数。在我的情况下这是不可行的,因为我打算从我的 onclick 处理程序中绘制一个像素。

我希望应该有以下方式的一些代码,但我还没有找到它..

View v; 
s = v.GetFrawingSurface()
s.PutPixel(x,y,rgb);

请帮忙解决这个...

4

1 回答 1

0

在您将要在 ViewGroup 中绘制的视图上方放置一个空白视图。然后在该视图的 onDraw 中,您可以绘制任何您想要的内容,它将出现在内容的顶部。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    //... your content here

    <com.your.packagename.widget.YourCustomView
        android:id="@+id/overlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

现在告诉你的视图画出你需要的东西

@Override
public boolean onTouchEvent (MotionEvent event) {
    if (event.getAction == MotionEvent.ACTION_DOWN) {
        yourView.drawPixel(event.getX(), event.getY());
        return true;
    }
    return super.onTouchEvent(event);
}

还有你的看法

public final class YourView extends View {


    public void drawPixel(float x, float y) {
        //store filled pixels somewhere... (matrix is not a Matrix clas here, just an example)
        matrix.addValues(x, y);
        invalidate(); //cal this to call onDraw();
    }

    @Override
    protected void onDraw(Canvas c) {
        // get pixels from matrix and draw them

        for(...) {

            c.drawPoint(currentX, currentY, paint);

        }
    }

}
于 2013-06-13T13:07:51.693 回答