を触れています色スクロール用に作られたマイニング(Froyo以上)レンダリングが簡略化されている場合、Flingスクロールアニメーションの処理が少なくて済みます。 フルブラウザの機能が必要な場合は、私が多くのことを助けることができないと思います。
ゲームを作っていると言われているので、回避策があるかもしれません。私はあなたのゲームがスクロール(フルスクリーン)を必要としないことを望んでいるので、スクロールの最適化は必要ありません。
私はWebViewで簡単なテストを行いました。あなたが言及したように、タップすると、レンダリングは単純化され、物事は少し見えます。その後、何かがクリックされると(WebViewはそれ以上スクロールが行われていないことを知っています)、物事は正常に戻ります。
WebViewをFrameLayoutに置き換えてレイアウトを変更しました。 FrameLayoutには、WebViewと不可視のボタン(上に)があります。このボタンはすべてのタッチイベントを取得します。次に、WebViewが必要とするイベントの種類を選択してWebViewに渡します。タッチダウンとタッチアップが近接して起こっても、動きがなくても、スクロールする理由はないので、私はそのようなピクセル化された動作を見ていません。
この例では最もシンプルだったので、「MotionEvent.ACTION_UP」イベントを検出するように選択しました。完了したら、実際のクリックをシミュレートするように、最初に送信します。あなたは確かにACTION_DOWNでトリガーすることができますが、ユーザーがスワイプなどをすると、そのうちの1つ以上が表示されます。適切にカスタマイズしたり、十分な作業をしたり、場合によってはスクロールを有効にすることもできます。以下のコードが私の考えていることを中継するのに十分であることを願っています。
WebView wv = new WebView(this);
View dummyView = new Button(this);
dummyView.setBackgroundColor(0x00000000);
dummyView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
MotionEvent down = MotionEvent.obtain(100, 100,
MotionEvent.ACTION_DOWN, event.getX(),
event.getY(), 0);
wv.onTouchEvent(down);
wv.onTouchEvent(event);
}
return false;
}
});
FrameLayout fl = new FrameLayout(this);
fl.addView(wv);
fl.addView(dummyView);
topLayout.addView(fl);
EDIT: あなたはPhoneGapのソースを編集したくない場合は、PhoneGapのレイアウトを変更するには、次のような何かを行うことができるかもしれない...それはテストされていないのですが、それは動作するはずのように思える:
@Override
public void onCreate(Bundle arg0) {
super.onCreate(arg0);
super.loadUrl("file:///android_asset/www/index.html");
// Get the "root" view from PhoneGap
LinearLayout droidGapRoot = super.root;
// Create a new "root" that we can use.
final LinearLayout newRoot = new LinearLayout(this);
for (int i = 0; i < droidGapRoot.getChildCount(); i++) {
// Move all views from phoneGap's LinearLayout to ours.
View moveMe = droidGapRoot.getChildAt(i);
droidGapRoot.removeView(moveMe);
newRoot.addView(moveMe);
}
// Create an invisible button to overlay all other views, and pass
// clicks through.
View dummyView = new Button(this);
dummyView.setBackgroundColor(0x00000000);
dummyView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// Only pass "UP" events to the specific view we care about, but
// be sure to simulate a valid "DOWN" press first, so that the
// click makes sense.
if (event.getAction() == MotionEvent.ACTION_UP) {
MotionEvent down = MotionEvent.obtain(100, 100,
MotionEvent.ACTION_DOWN, event.getX(),
event.getY(), 0);
newRoot.onTouchEvent(down);
newRoot.onTouchEvent(event);
}
return false;
}
});
// Layer the views properly
FrameLayout frameLayout = new FrameLayout(this);
frameLayout.addView(newRoot);
frameLayout.addView(dummyView);
// Add our new customized layout back to the PhoneGap "root" view.
droidGapRoot.addView(frameLayout);
}
グラフィックスカードのため、あなたのLG携帯電話にはおそらく3Dアクセラレーションはありませんが、Desireにはローエンドのものがあります。あなたは本当にそれを助けることができませんAFAIK –
私の更新された回答は以下の助けになりましたか? – Matt