在飞行中绘制视图

时间:2013-06-13 09:44:37

标签: android

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

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

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

请帮忙...

1 个答案:

答案 0 :(得分: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);

        }
    }

}