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