जहां तक मेरा बता सकते हैं, कि "pixelated" व्यवहार एक opti है स्क्रॉलिंग के लिए बनाया गया मिश्रण (फियोयो और ऊपर) में। यदि प्रतिपादन को सरल बनाया गया है, तो यह फ़्लिंग स्क्रॉल एनीमेशन जैसी चीज़ों को कम प्रोसेसिंग की आवश्यकता बनाता है।
यदि आपको पूर्ण ब्राउज़र कार्यक्षमता की आवश्यकता है, तो मुझे यकीन नहीं है कि आप इसकी बहुत मदद कर सकते हैं।
चूंकि आपने कहा है कि आप एक गेम बना रहे हैं, हालांकि, मेरे पास एक कामकाज हो सकता है। मुझे उम्मीद है कि आपके गेम को स्क्रॉल (एक पूर्ण स्क्रीन) की आवश्यकता नहीं है, इसलिए स्क्रॉलिंग अनुकूलन आवश्यक नहीं है।
मैंने वेबव्यू के साथ एक सरल परीक्षण किया है। जैसा कि आपने बताया है, टैप पर, प्रतिपादन सरल हो जाता है, और चीजें थोड़ी दूर दिखाई देती हैं। फिर एक बार कुछ क्लिक किया जाता है (WebView जानता है कि कोई और स्क्रॉलिंग नहीं हो रही है), चीजें सामान्य पर वापस जाती हैं।
मैं एक FrameLayout के साथ एक WebView की जगह, के आधार पर अपने लेआउट को संशोधित किया। फ़्रेमलेआउट में वेब व्यू और एक अदृश्य बटन (शीर्ष पर) शामिल है। यह बटन सभी स्पर्श घटनाओं को पकड़ता है। फिर, मैं चुनिंदा चुनता हूं कि WebView की किस प्रकार की घटनाओं की आवश्यकता होनी चाहिए, और उन्हें वेबव्यू में पास कर दें। यदि टच डाउन और टच अप एक साथ निकट हो जाते हैं, तो betweeen में कोई आंदोलन नहीं होने के कारण, स्क्रॉलिंग का कोई कारण नहीं है, इसलिए मैंने उस "पिक्सेललेट" व्यवहार में से कोई भी नहीं देखा है।
क्योंकि यह इस उदाहरण के लिए सबसे आसान था, मैंने "मोशनइवेंट.एक्शन_यूपी" घटना का पता लगाने के लिए चुना है, और जब यह पूरा हो गया है, तो मैं पहले नीचे भेजता हूं, ताकि यह वास्तविक क्लिक को अनुकरण कर सके। आप निश्चित रूप से ACTION_DOWN पर ट्रिगर कर सकते हैं, लेकिन यदि उपयोगकर्ता स्वाइप करता है या कुछ तो आप उनमें से एक से अधिक प्राप्त करेंगे, और मैं तर्क को यहां सरल रखना चाहता था। आप फिट बैठते समय अनुकूलित कर सकते हैं, और शायद पर्याप्त काम के साथ, कुछ मामलों में स्क्रॉलिंग भी सक्षम कर सकते हैं। मुझे आशा है कि नीचे दिया गया कोड जो मुझे लगता है कि रिले करने के लिए पर्याप्त है।
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);
संपादित करें:
: आप PhoneGap स्रोत को संपादित नहीं करना चाहते हैं, तो आप की तरह PhoneGap लेआउट बदलने के लिए निम्नलिखित ... यह untested है, लेकिन जैसे कि यह काम करना चाहिए लगता है कुछ करने के लिए सक्षम हो सकता है
@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);
}
यह ग्राफिक्स कार्ड की वजह से है, तो आपके एलजी फोन में शायद 3 डी त्वरण नहीं है, लेकिन इच्छा के पास कम अंत होता है। आप वास्तव में इसकी सहायता नहीं कर सकते AFAIK –
क्या मेरा अपडेट किया गया उत्तर नीचे मदद करता है? – Matt