专栏首页恩蓝脚本Android实现阅读进度记忆功能

Android实现阅读进度记忆功能

本文实例为大家分享了Android控件WebView实现保存阅读进度的具体代码,供大家参考,具体内容如下

用户提了一个要求,要求保存他的阅读进度,然后在他下次阅读的时候可以继续阅读,然后动手实现了一下,是这样的。

我用的控件是WebView

public class WebViewClientEmb extends WebViewClient {

    // 在WebView中而不是系统默认浏览器中显示页面
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
      view.loadUrl(url);
      System.out.println("Url---------- "+url);
      return true;
    }

    // 页面载入前调用
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
      super.onPageStarted(view, url, favicon);

    }

    // 页面载入完成后调用
    @Override
    public void onPageFinished(WebView webView, String url) {

      int position = CacheUtils.getInt(Laws_DetailActivity.this,link, 0);
      webView.scrollTo(0, position);//webview加载完成后直接定位到上次访问的位置
      mLoadingDialog.dismiss();
    }
  }

这中间,link是我的加载网址

@Override
  public void onPause() {
    super.onPause();

    if (webView != null) {
      int scrollY = webView.getScrollY();
      CacheUtils.putInt(this, link, scrollY);//保存访问的位置
    }
  }

最后贴出工具类

public class CacheUtils {
  private static final String NAME = "";
  private static SharedPreferences sp = null;


  // 存Strings
  public static void putString(Context context, String key, String value) {
    if (sp == null) {
      sp = context.getSharedPreferences(NAME,
          Context.MODE_PRIVATE);
    }
    sp.edit().putString(key, value).commit();
  }


  // 取String
  public static String getString(Context context, String key, String defValue) {
    if (sp == null) {
      sp = context.getSharedPreferences(NAME,
          Context.MODE_PRIVATE);
    }
    return sp.getString(key, defValue);
  }


  //存Int值
  public static void putInt(Context context, String key, int value) {
    if (sp == null) {
      sp = context.getSharedPreferences(NAME,
          Context.MODE_PRIVATE);
    }
    sp.edit().putInt(key, value).commit();
  }

  //取int值
  public static int getInt(Context context, String key, int defValue) {
    if (sp == null) {
      sp = context.getSharedPreferences(NAME,
          Context.MODE_PRIVATE);
    }
    return sp.getInt(key, defValue);
  }

}

三步就完成了。

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java Spring项目国际化(i18n)详细方法与实例

    国际化信息”也称为“本地化信息”,一般需要两个条件才可以确定一个特定类型的本地化信息,它们分别是“语言类型”和“国家/地区的类型”。如中文本地化信息既有中国大陆...

    砸漏
  • Android实现机房座位预约系统

    本文实例为大家分享了Android实现预约系统的具体代码,供大家参考,具体内容如下

    砸漏
  • Android自定义ViewPager实现纵向滑动翻页效果

    抖音几乎已经成为了我们日常生活中使用比较频繁的App,无聊之时或工作之后可以刷一刷短视频来供我们娱乐与放松。看到抖音的视屏切换效果,觉得用ViewPager可以...

    砸漏
  • 设计模式之--原型模式

    原型模式的核心是实现Cloneable接口,此接口为JDK提供的一个标识接口,只有实现了此接口的类才能被拷贝。 原型模式的通用类图如下;

    代码改变世界-coding
  • 如何对荧光共定位进行定量分析?

    荧光共定位是很常见的实验方法,一般用来验证2种或3种蛋白是否存在共定位关系。在常规Protocol的指导下进行实验操作,很容易得到双荧光或多重荧光染色图像。

    百味科研芝士
  • 【操作篇】荧光共定位的定量分析!

    荧光共定位是很常见的实验方法,一般用来验证2种或3种蛋白是否存在共定位关系。在常规Protocol的指导下进行实验操作,很容易得到双荧光或多重荧光染色图像。

    Mark Chen
  • 快速掌握this

    在Java语言中,当创建一个对象后,Java虚拟机就会为其分配一个指向该对象本身的指针,这个指针就是this。this只能用于在类的非静态方法或者构造方法中,在...

    田维常
  • 字符串排列

    【原题】 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,ba...

    用户1148830
  • C++多态

    当类存在虚函数时,编译器会为该类维护一个表,这个表就是虚函数表(vtbl),里面存放了该类虚函数的函数指针。在构造类的时候增加一个虚表指针(vptr)指向对应的...

    用户2929716
  • 深入分析Android加载so文件源码

    Android系统中使用ndk进行编程,有很多的好处(Java的跨平台特性导致其本地交互的能力不够强大,一些和操作系统相关的特性Java无法完成;代码的保护:由...

    砸漏

扫码关注云+社区

领取腾讯云代金券