android - 如何在 WallpaperService 中设置 webview 的大小?

标签 android canvas webview size live-wallpaper

我正在尝试将 webview 设置为动态壁纸,但我在调整它的大小时遇到​​了问题。

在引擎中,我使用 WallpaperService 的上下文创建了一个 webview:

public WallpaperEngine(Context context) {
    webView = new WebView(context);
    ...
}

然后我将它绘制到墙纸的 Canvas 上:

SurfaceHolder holder = getSurfaceHolder();
Canvas canvas = null;
try {
    canvas = holder.lockCanvas();
    if (canvas != null) {
        webView.draw(canvas);
    }
} finally {
    if (canvas != null)
        holder.unlockCanvasAndPost(canvas);
}

但是墙纸将是白色的并且 javascript 报告窗口的大小是 0px。

如何设置WebView的大小?

最佳答案

通过使用 WindowManager、在 LayoutParams 中定义大小并将 WebView 可见性更改为 GONE 解决了这个问题。

webView = new WebView(context);
webView.setVisibility(webView.GONE);
webView.loadUrl("http://example.com/");

wm = (WindowManager)context.getSystemService(WINDOW_SERVICE);
params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.TYPE_PHONE,
    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
    PixelFormat.TRANSLUCENT
 );
params.width = //width
params.height = //height

wm.addView(webView, params);

关于android - 如何在 WallpaperService 中设置 webview 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556091/

相关文章:

android - DexGuard 如何加密类?

java - 使用自定义适配器在一个 ListView 中膨胀两个布局的问题

java - 从不同设备导入后,(Eclipse Android 应用程序)项目缺少所需的库

java - HTML WebView 上使用键盘时如何隐藏 ImageView

c# - 将 API 写入文件

javascript - 扩展 ng2-pdf-viewer 以支持在 pdf 上绘图的方法?

javascript - 将 html 对象保存到 firebase

javascript - 如何使用 fabric.js 加载 TIFF 图像?

android - 在 Viewpager 中滚动 Webview

javascript - 如何在 WebView 中添加 JavaScript 函数并稍后在提交 reCAPTCHA 时从 HTML 中调用它