我想在包含flash的android WebView中设置交互式按钮.作为测试,我设置了一个HTML来加载闪存,设置x/y大小.
public class webz extends WebView {
private Drawable image;
public webz(Context context, AttributeSet attrs) {
super(context, attrs);
image=context.getResources().getDrawable(R.drawable.icon);
getSettings().setPluginsEnabled(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
image.setBounds(100, 300, 150, 450);
image.draw(canvas);
}
Run Code Online (Sandbox Code Playgroud)
}
我设置了一个测试图像,它将自己覆盖在闪光灯的一半上,一半覆盖在未使用的画布上.一旦加载,flash将加载到画布上,只留下HTML上的部分.
这个问题的答案表明,adobe的flash播放器在webview中创建了一个surfaceview.我认为这是分层问题的原因,但我不知道如何克服它.
有谁知道如何覆盖这个?按钮还必须将按键事件发送到闪光灯(如按屏幕按钮,然后按A键发送到闪光灯).如果你知道如何做到这一点,那将非常有帮助
我正在将Flash SWF加载到Android WebView中.
我希望SWF立即全屏和专注.
处理flash的类名是com.adobe.flashplayer.FlashPaintSurface.看着日志,当我手动全屏显示闪光灯时,它会调用com.adobe.flashplayer.FlashPaintSurface.toggleFullScreen().
我的问题的第一部分是:如何手动为Flash SWF调用该方法?
请注意,对于嵌入了闪存的webview,我似乎能够正确地全屏显示它的唯一方法(使用Flash的surfaceview全屏而不是闪存显示在其上方webview view)是用两个手指触摸屏幕直到界面弹出在屏幕的顶部,并没有可靠地发生.
对于焦点,我在我的webview类中调用:
@Override
protected boolean drawChild (Canvas canvas, View child, long drawingTime) {
if (child.getClass().getName().equals("com.adobe.flashplayer.FlashPaintSurface")) {
child.requestFocus();
}
return super.drawChild(canvas, child, drawingTime);
}
Run Code Online (Sandbox Code Playgroud)
这并没有像我想象的那样设定焦点.虽然我假设,如果正确完全屏蔽,FlashPaintSurface应该给自己的焦点.但如果第一部分不可行,我想至少不必在启动时点击它来关注SWF.
请注意我动态执行此操作,而不是调用我自己创建的SWF,因此无法使用Actionscript解决此问题.