我如何在webView上绘制,我希望用户能够在webView上圈圈和涂鸦。手势叠加视图会很好,但在用户将手指从屏幕上移开后,绘制的线总是会消失。
我希望用户能够在屏幕上绘制,并在手指离开时保持绘制的线条。
非常感谢
您可以将WebView堆叠在某种Canvas下面,允许用户在RelativeLayout内部触摸进行绘制。为了说明这一点,这里有一个来自FingerPaint活动中的API Demos项目的示例。
我稍微修改了该活动,以便在MyView后面显示WebView。我修改了代码,使MyView的背景具有00 alpha(使其不可见)。因此,对于用户来说,这看起来就像是在浏览器页面的"顶部"绘制。
如果你还没有,给自己一份API Demos项目的副本,打开FingerPaint.java文件,它就在图形中。打开后,编辑onCreate()方法如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout rl = new RelativeLayout(this);
WebView wv = new WebView(this);
rl.addView(wv);
rl.addView(new MyView(this));
setContentView(rl);
wv.loadUrl("http://google.com");
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(0xFFFF0000);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(12);
mEmboss = new EmbossMaskFilter(new float[] { 1, 1, 1 },0.4f, 6, 3.5f);
mBlur = new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL);
}
然后查找MyView类的onDraw()方法。里面的第一行改为:
canvas.drawColor(0xFFAAAAAA);
至:
canvas.drawColor(0x00AAAAAA);
运行应用程序,然后单击图形->FingerPaint。如果一切顺利,你应该有一个谷歌主页,你可以在上面画画。