【发布时间】:2013-02-01 18:35:57
【问题描述】:
如何在 webView 上绘图,我希望用户能够在 webview 上画圈和涂鸦。手势覆盖视图会很好,但是当用户将手指从屏幕上移开后,绘制的线总是会消失。
我希望用户能够在屏幕上绘图,并在手指离开时将绘制的线条保留在那里。
非常感谢
【问题讨论】:
标签: android touch overlay android-webview draw
如何在 webView 上绘图,我希望用户能够在 webview 上画圈和涂鸦。手势覆盖视图会很好,但是当用户将手指从屏幕上移开后,绘制的线总是会消失。
我希望用户能够在屏幕上绘图,并在手指离开时将绘制的线条保留在那里。
非常感谢
【问题讨论】:
标签: android touch overlay android-webview draw
您可以在某种 Canvas 下堆叠 WebView,从而允许用户在 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。如果一切顺利,您应该有一个可以使用的 google 主页。
【讨论】: