在我的活动中,我计划在用户环绕某个区域时绘制一个矩形或箭头。 我确定存在绘制视图的方法,但我能找到的只是覆盖onDraw函数。这在我的情况下是不可行的,因为我打算从我的onclick处理程序中绘制一个像素。
我希望应该有以下方式的代码,但我还没找到它..
View v;
s = v.GetFrawingSurface()
s.PutPixel(x,y,rgb);
请帮忙...
答案 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);
}
}
}