سؤال

لوضعها بسيطة: أريد إشارة مرجعية الوضع الحالي (ربما عدة مواقع) في ملف HTML المعروض في WebView لاستعادته لاحقا. أي تلميح صغير سوف يساعد. :)

هل كانت مفيدة؟

المحلول

إذا كنت تعني "الوضع الحالي" نقطة في مكان ما في صفحة معينة، فأنا لا أعتقد أن هذا ممكن ... على الأقل ليس بحت من جافا. تفتقر API WebKit بالكامل إلى Java إلى الكثير من أي شيء يتعامل مع محتوى الصفحات.

إذا كانت لديك السيطرة على محتوى الصفحة، وهناك طريقة لمعرفة هذه المواقف عبر JavaScript داخل الصفحة، يمكنك:

الخطوة رقم 1: استخدام WebView#addJavascriptInterface() لإضافة كائن مع نوع من recordPosition() الطريقة، حفظ المعلومات أينما كان من المناسب

الخطوة رقم 2: إنشاء وظيفة JavaScript التي تستدعي recordPosition() على كائن حقن.

ثم إما:

الخطوة رقم 3A: الزناد أن تعمل JavaScript من جافا سكريبت نفسها (على سبيل المثال، بناء على نقرة)، أو

الخطوة رقم 3B: اتصل loadUrl("javascript:..."); على حسابك WebView, ، أين ... يتم استبداله بواسطة رمز JavaScript لتشغيل وظيفة JavaScript من الخطوة رقم 2.

سيتعين على استعادة هذه المواقف العمل بنفس الطريقة: هل قام JavaScript بإجراء الاستعادة الفعلية، وربما أثارها كود Java.

لاحظ أنه ليس لدي أي فكرة إذا كان ما تريد (الحصول على / ضبط الوضع الحالي) متاح من JavaScript، لأنني لست كثيرا من الرموز المتصفح.

نصائح أخرى

كان النهج الذي اتخذته كما يلي:

في ال onSaveInstanceState() الطريقة، احسب إلى حجم الصفحة التي قدمها المستخدم.

    int contentHeight = webView.getContentHeight();
    int scrollY = webView.getScrollY();

    float scrollPercent = ((float) scrollY / ((float) contentHeight));

خرق ذلك في الحزمة. عند استعادة الصفحة في onCreate() الطريقة، انتظر حتى تنتهي الصفحة للتحميل (في WebClient.onPageFinished())، انتقل إلى الموضع المسجل:

    int contentHeight = webView.getContentHeight(); 
    int y = (int) ((float) contentHeight * scrollPercent);
    webView.scrollTo(0, y);
  • باستخدام أ float وحساب نسبة تعمل في حالة التقليب بين المناظر الطبيعية وصورة.
  • قد تعمل جيد بما فيه الكفاية لكن لا تماما عند خلطها مع الصور التلقائية.
  • قد تؤخذ أيضا في الاعتبار. أميل إلى تخفيف النطاق في تفضيل في onPause() الطريقة، ثم webView.setInitialScale(scale) قبل البدء في تحميل الصفحة.
  • لقد وجدت أن إعداد طريقة العرض على الويب غير مرئية عندما scrollPercent > 0 تبدو أفضل.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top