Android实现文章+评论
android parcelfiledescriptor 的用法 -回复
android parcelfiledescriptor 的用法-回复Android ParcelFileDescriptor 的用法
在Android 开发中,我们经常需要处理文件的读写操作。ParcelFileDescriptor 是一个用于描述文件描述符的类,可以用来在应用程序之间传递文件的读写权限。本文将深入探讨ParcelFileDescriptor 的用法,并提供一系列步骤指导开发者使用ParcelFileDescriptor 进行文件操作。
一、概述
ParcelFileDescriptor 是Android 框架中的一个重要类,用于在进程间传递与共享文件描述符。它提供了一种方法,使得应用程序能够安全地将文件的读写权限传递给其他应用程,从而实现文件的共享和协作。
二、获取ParcelFileDescriptor
在Android 中,我们可以使用多种方式获取ParcelFileDescriptor 对象。下面是一些常见的获取方法:
1. 从File 对象获取:
java
File file = new File("/path/to/file");
FileInputStream fileInputStream = new FileInputStream(file);
ParcelFileDescriptor parcelFileDescriptor = ParcelFileDescriptor.fromFd(fileInputStream.getFD());
2. 从Uri 获取:
java
基于Android平台的记事本App的开发与实现
第35卷第12期2020年12月
/黑亠评紅芳F2学报
Journal of Leshan Normal University
No.12Vol.35
Dec.,2020
DOI:10.16069/ki.51-1610/g4.2020.12.008
基于Android平台的记事本App的开发与实现
江志华1,陈翱天2
(1.乐山师范学院人工智能学院,四川乐山614000; 2.北京交通大学计算机与信息技术学院,北京100044)
摘要:文章介绍了基于Android的智能终端完成记事本App客户端及服务端的开发与实现过程。该App基于MVC 模式,使用fragment,sqlite等技术,实现了信息的富文本编辑与查询、用户注册与登录、信息上传至服务器、PC端的后台管理等功能。记事本App的使用,丰富了人们记录内容的形式,提高了记录信息的效率,为工作和生活提供了便利。
关键词:Java;Android;MySQL;系统实现
中图分类号:TP311.1文献标志码:A文章编号:1009-8666(2020)12-0049-06
0引言
随着移动互联网的发展,移动智能终端设备在人们工作生活中起着越来越重要的作用。在人们日常学习和工作中经常需要快速高效地记录许多信息,然而传统的记录方式已经满足不了这种需求,因此开发一款能够便捷、高效运行在移动智能终端设备上的记事本App变得很有必要[1]。
在文献[1]中作者利用语音识别以及合成技术将语音转换成文字,通过云存储技术存储用户的笔记数据,设计实现了一款语音云记事本软件。在文献[2-5]中作者仅实现了记事本文本增删改查、检索以及信息分享、同步等基本功能。现有记事本App大多只实现了基本的信息记录功能,功能较单一,记录的信息类型也仅限于文本类信息;缺少用户身份验证功能,存在一定的安全隐患,一旦用户的安卓设备丢失,用户的笔记数据就可能会泄漏。本文开发实现的记事本App集多种功能于一体,在实现信息记录基本功能的基础上,还实现了用户安全验证、信息云备份等功能。App通过在客户端设置密码,实现启动验证功能,保障了用户信息的安全性;能够支持文本、清单、图片、语音多种信息类型的记录与备份,实现了记录信息类型的多样性;实现了信息云备份功能,用户能够根据需要关闭或打开云备份功能,将信息备份至云端服务器。该App 具有一定的创新性和应用价值,能有效地帮助人们提高记录效率,为人们的工作生活提供了方便。
android parcelfiledescriptor 的用法 -回复
android parcelfiledescriptor 的用法-回复ParcelFileDescriptor(以下简称PFD)是Android中用于进行文件操作的类,它提供了一种高效且安全的方式来传输文件和进行文件的读写操作。本文将详细介绍PFD的用法,并逐步解释其背后的原理和相关概念。
1. PFD的概述
ParcelFileDescriptor是Android中用于提供一个统一的入口点来管理文件的类,它可以用于创建、打开、关闭、读写文件等。PFD是File Descriptor (文件描述符)的一个封装类,每个PFD都关联着一个打开的文件,类似于C语言中的文件指针,通过对PFD的操作可以对关联的文件进行读写。
2. 创建ParcelFileDescriptor对象
PFD可以通过多种方式进行创建,最常见的方式是通过File或FileDescriptor对象来创建。下面是一个示例:
java
File file = new File("path/to/file");
ParcelFileDescriptor pfd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_WRITE);
上述代码将创建一个与指定文件关联的ParcelFileDescriptor对象,并指
定了读写模式。MODE_READ_WRITE是一个常量,表示读写模式,还可以使用MODE_READ_ONLY和MODE_WRITE_ONLY等常量来指定不同的读写模式。
android edittext 实现原理
android edittext 实现原理
Android中的EditText控件是Android用户界面中非常常见的一个组件,它用于输入文本。本篇文章将介绍EditText的实现原理,帮助开发者更好地理解和使用EditText控件。
一、EditText控件的基本概念
EditText控件是Android UI框架中的一种文本输入框,它允许用户输入和编辑文本。EditText控件内部由文本区域(TextArea)和光标(Cursor)组成,可以通过设置不同的属性来控制EditText控件的外观和行为。
二、EditText控件的实现原理
1. 视图系统(View System)
EditText控件是基于视图系统的,它由一组视图(View)组件组成,包括文本区域和光标。视图系统是Android UI框架的基础,它负责管理用户界面的布局和显示。
2. 文本区域(TextArea)
EditText控件的文本区域负责显示文本内容,并处理用户的输入操作。当用户在EditText控件中输入文本时,文本区域会更新显示新的文本内容,并在光标位置显示光标。
3. 光标(Cursor)
EditText控件的光标用于指示文本输入的位置。当用户在EditText控件中输入文本时,光标会跟随移动到新的位置。光标的移动是由视图系统控制的,它会根据用户的输入和编辑操作来更新光标的位置。
4. 属性设置
通过设置EditText控件的属性,可以控制其外观和行为。例如,可以通过设置字体、颜色、大小等属性来改变文本的外观,通过设置输入模式、光标样式等属性来控制EditText控件的行为。这些属性的设置是通过XML文件或编程方式来实现的。
android_imageview_的centerinside_的实现原理_概述及解释说明
android imageview 的centerinside 的实现原理概述
及解释说明
1. 引言
1.1 概述
本文将详细介绍Android中的ImageView控件的centerInside属性以及其实现原理。ImageView作为一个常用的界面元素,用于显示图片资源。其中,centerInside是ImageView的一种缩放类型,通过该属性可以使图片按比例缩放到View内部,并保持图像完整展示。
1.2 文章结构
本文共分为五个部分,每个部分都有详细的内容和说明。文章结构如下:
第一部分为引言部分。我们将在这里概述文章的目的和结构。
第二部分将重点说明ImageView控件的centerInside属性的实现原理。首先介绍ImageView控件,并解释其作用和效果;然后深入剖析centerInside属性的实现原理。
第三部分将详细解析centerInside属性的具体实现过程。包括图片尺寸适应策略、图像平移和缩放算法的分析,并通过实例演示和代码解释来加深理解。
第四部分将进行样例应用和使用场景的分析。我们将展示不同情况下centerInside属性的效果,并对其使用场景进行讨论;最后,推荐最佳实践方法供读者参考。
最后一部分是结论与总结。首先总结了ImageView中centerInside工作原理,然后展望了应用与拓展前景,并提出了预期的发展方向和改进建议。
1.3 目的
本文的主要目的是帮助读者了解Android中ImageView控件的centerInside 属性的实现原理。通过深入分析,让读者能够清晰地理解这一属性在图片尺寸适应、平移和缩放等方面的工作原理。同时,我们还将介绍其在不同使用场景下的效果展示,并提供最佳实践方法,以便读者在实际开发中能够更好地使用该属性。
android jsbrage原理 -回复
android jsbrage原理-回复
Android JavaScript Bridge(Android JSBridge)是一种用于在Android 应用程序中实现JavaScript和Java之间通信的技术。它提供了一种简单的方法,使JavaScript代码能够调用Android原生代码,以及Android 原生代码能够调用JavaScript函数。该技术在Web应用程序和混合应用程序中非常常见,它为开发者们提供了更大的灵活性和功能。
一. Android JSBridge的原理
Android JSBridge的原理非常简单,它使用了Android的WebView组件来加载包含JavaScript代码的Web页面。这个Web页面中的JavaScript代码负责调用Android原生方法,并将结果返回给JavaScript。同时,Android原生代码也可以调用JavaScript函数,以便在需要时更新Web页面。
具体来说,Android JSBridge的原理可以分为以下几个步骤:
1. 创建一个WebView组件并加载一个包含JavaScript代码的Web页面。
2. 在Web页面中,通过JavaScript函数调用Android原生方法,并传递参数。
3. Android原生方法接收JavaScript传递的参数,并执行相应的操作。
4. Android原生方法可以通过WebView的evaluateJavascript()函数调
用JavaScript函数,并传递结果。
5. JavaScript函数接收Android原生方法的结果,并根据需要更新Web 页面。
评论功能的实现
评论功能的实现
要实现评论功能,可以按照以下步骤进行:
1. 数据库设计:创建一个评论表,其中包含评论的唯一标识符、评论内容、评论者的唯一标识符、评论时间等字段。可以考虑使用关系型数据库如MySQL或非关系型数据库如MongoDB进行存储。
2. 后端接口设计:创建一个接口用于接收前端传来的评论内容,并将评论数据存入数据库。可以使用后端框架如Node.js的Express框架来创建接口。
3. 前端界面设计:在需要显示评论的页面中,创建一个评论输入框和提交按钮,用户可以输入评论内容并点击提交按钮进行评论。同时,在页面中显示已有的评论内容。
4. 前后端交互:通过AJAX或Fetch等技术,将用户输入的评论内容发送给后端接口,并获取后端返回的评论数据。将评论数据展示在前端页面中。
5. 安全性考虑:考虑对评论内容进行过滤和校验,防止XSS攻击和恶意评论。可以使用一些开源的库或框架来实现评论内容的过滤和校验。
6. 功能扩展:可以考虑实现评论的点赞、回复、删除等功能,可以通过给评论表添加相应的字段来实现。
以上是实现评论功能的一般步骤,具体的实现方法可以根据项目需求和技术栈进行调整和优化。
重学android小专栏 文章
重学android小专栏文章
重学Android小专栏
一、引言
近年来,移动应用开发领域发展迅猛,而Android作为最流行的移动操作系统之一,需求量也正逐渐增长。然而,由于技术的迭代更新以及开发者的日常工作,我们常常需要回顾和重学Android开发的基础知识。本篇小专栏将带您重新学习Android开发的重要知识点,帮助您在日常开发中更加得心应手。
二、Android基础知识回顾
1. Android系统架构
Android系统采用了分层架构,包括Linux内核层、系统库层、应用程序框架层和应用程序层。我们需要了解每个层级的功能和作用,以便更好地理解Android应用的开发过程。
2. Android应用开发环境搭建
在开始Android应用开发之前,我们需要搭建好开发环境。这包括安装JDK、Android Studio以及配置虚拟设备等步骤。只有正确配置好开发环境,我们才能顺利进行Android应用的开发工作。3. Android应用的组成和生命周期
Android应用由多个组件组成,包括活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器
(Content Provider)。了解每个组件的特点和生命周期,有助于我们编写出高质量的Android应用程序。
4. Android用户界面设计
Android提供了丰富的用户界面组件,如按钮、文本框、列表等。我们需要熟悉这些组件的用法,以及如何使用布局来构建复杂的用户界面。良好的用户界面设计能增加用户体验,提高应用的质量。5. Android数据存储
安卓自动评论实现原理
安卓自动评论实现原理
安卓自动评论的实现原理通常涉及使用脚本或自动化工具来模
拟用户在应用程序中的操作。其中可能涉及到以下几个方面的技术:
1. 辅助功能(Accessibility Service),通过开启辅助功能,可以获取应用程序的界面元素,并模拟用户的交互操作,比如点击
按钮、输入文字等。这可以通过辅助功能提供的接口来实现自动评
论的功能。
2. 脚本或自动化工具,开发者可以编写脚本或使用自动化工具
来模拟用户在应用程序中的操作,比如使用 Python 的 Appium、UIAutomator 等工具,或者使用第三方的自动化工具来实现自动评
论的功能。
3. API 调用,有些应用程序可能提供了 API 接口,开发者可
以通过调用这些接口来实现自动评论的功能,比如使用 HTTP 请求
向服务器发送评论内容。
总的来说,安卓自动评论的实现原理是通过模拟用户在应用程
序中的操作,可以通过辅助功能、脚本或自动化工具、API 调用等
方式来实现。然而,需要注意的是,未经应用程序许可的自动评论可能违反应用商店的规定,甚至可能违反法律法规,因此在实现自动评论功能时需要遵守相关规定和法律法规。
android bootloader littlekernel的两篇文章 -回复
android bootloader littlekernel的两篇文章-回
复
题目: Android Bootloader LittleKernel的深入探究
导言:
在现代智能手机中,Android操作系统从内核启动到完全加载需要经过一系列步骤,其中之一是引导加载程序(bootloader)的运行。在Android 设备上,有许多不同的引导加载程序,其中一个被广泛使用的引导加载程序是LittleKernel。本文将详细探讨Android bootloader LittleKernel 的工作原理、功能和重要性,并介绍将其与其他引导加载程序进行比较的一些关键方面。
第一部分: LittleKernel的工作原理
LittleKernel是一个轻量级的开源引导加载程序,用于启动Android设备。它的名称源自其小型而高效的特性。LittleKernel的主要任务是初始化设备硬件,设置运行环境并启动操作系统加载过程。这些过程包括内存管理、设备初始化和引导Android内核等。
LittleKernel 由多个模块组成,其中包括启动加载程序(bootstrap loader)、RAM初始化程序和设备初始化程序等。启动加载程序位于设备的只读存储器(ROM)中,并用于加载LittleKernel和其他相关组件到设备的随机存取存储器(RAM)中。一旦加载完成,RAM初始化程序负责
对设备的内存进行初始化和配置。
设备初始化程序是LittleKernel的核心部分,它负责执行硬件配置以及设置系统所需的设备驱动程序和固件等。设备初始化程序还负责加载Android内核及其相关模块。一旦Android内核加载完成,LittleKernel 就完成了其引导过程的任务,将控制权交给Android内核。
实现评论功能
实现评论功能
实现思路为,同时实现对帖⼦的评论以及对⽤户评论的评论。设计数据库中=时,添加评论对象的种类字段,以区分⼆者。在评论时,既要天嘉宜条评论,⼜要使评论数加⼀,因此使⽤Spring事务。此外,对帖⼦内容要做敏感词过滤,通过前缀树实现了这⼀功能。此外还要利⽤HtmlUtils.htmlEscape对评论中的html进⾏过滤。
Controller代码如下,加了详细的注解。
1 @Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED)
2public int addComment(Comment comment) {
3if (comment == null) {
4throw new IllegalArgumentException("参数不能为空!");
5 }
6
7// 添加评论
8 comment.setContent(HtmlUtils.htmlEscape(comment.getContent()));
9 comment.setContent(sensitiveFilter.filter(comment.getContent()));
10int rows = commentMapper.insertComment(comment);
11
12// 更新帖⼦评论数量
13if (comment.getEntityType() == ENTITY_TYPE_POST) {
14int count = commentMapper.selectCountByEntity(comment.getEntityType(), comment.getEntityId());
Android评论功能的实现过程
Android评论功能的实现过程
⽬前,各种App的社区或者⽤户晒照⽚、发说说的地⽅,都提供了评论功能,为了更好地学习,⾃⼰把这个功能实现了⼀下,做了个⼩的Demo。
⾸先推荐⼀款实⽤的插件LayoutCreater,可以帮助开发者⾃动⽣成布局代码,具体⽤法可以去GiHub上看看:
1、新建⼀个Android⼯程,写MainActivity的布局 activity_main.xml
<RelativeLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/grey">
<ListView
android:id="@+id/comment_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_marginBottom="50dp" />
<LinearLayout
android:id="@+id/rl_enroll"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android scrollverticallyby用法 -回复
android scrollverticallyby用法-回复Android中的`scrollVerticallyBy`方法是RecyclerView的一个方法,用于垂直滚动列表视图。它可以在RecyclerView中按指定的像素数垂直滚动视图。在本文中,我们将一步一步地解释如何使用`scrollVerticallyBy`方法以及它的用法。
步骤一:了解`scrollVerticallyBy`方法
在了解如何使用`scrollVerticallyBy`方法之前,我们需要了解一些关键信息。首先,`scrollVerticallyBy`是一个抽象方法,定义在RecyclerView类中。它用于定向滚动RecyclerView中的视图。`scrollVerticallyBy`方法的声明如下:
public abstract int scrollVerticallyBy (int dy, RecyclerView.Recycler recycler, RecyclerView.State state)
在这个方法中,`dy`参数表示要滚动的像素数。正值表示向上滚动,负值表示向下滚动。`recycler`参数是一个RecyclerView.Recycler对象,用于重新使用和回收视图。`state`参数是当前RecyclerView的状态。
步骤二:重写`scrollVerticallyBy`方法
要使用`scrollVerticallyBy`方法,我们需要在自定义的youtManager类中重写这个方法。为了更好地理解,让我们先创建一个自定义的LayoutManager类:
最新整理Android编程之杀毒的实现原理及具体实例
A n d r o i d编程之杀毒的实现原理及具体实例
电脑病毒看不见,却无处不在,有时防护措施不够或者不当操作都会导致病毒入侵。这篇文章主要介绍了A n d r o i d编程之杀毒的实现原理及具体实例,结合实例形式分析了A n d r o i d杀毒功能的原理与简单实现技巧,需要的朋友可以参考下
具体如下:
一个杀毒软甲最核心的部分一个是病毒库一个是杀毒引擎,病毒库从服务器中获得,杀毒引擎实际上是判断程序中的包名和签名是否匹配病毒库中的包名和签名,如果匹配则为病毒,界面使用帧动画来显示。
思路:
1.从服务器端把病毒的版本库信息下载下来将解析的数据存放到L i s t集合中
2.获取到手机中所有应用程序的包名以及程序的签名
3.将病毒库匹配手机应用程序包名及签名
4.用S c r o l l V i e w标签进行自动滚动显示
关键代码如下:
特洛伊木马病毒库的信息:
t o r y.v i r u s
c n.i t c a s t.v i r u s
恶意软件,读取用户日志
30820**1月,英特尔处理器中曝M e l t d o w n(熔断)和S p e c t r e (幽灵)两大新型漏洞,包括A M D、A R M、英特尔系统和处理器在内,几乎近20**发售的所有设备都受到影响,受影响的设备包括手机、电脑、服务器以及云计算产品。这些漏洞允许恶意程序从其它程序的内存空间中窃取信息,这意味着包括密码、帐户信息、加密密钥乃至其它一切在理论上可存储于内存中的信息均可能因此外泄。
二、G i t H u b遭遇大规模 M e m c a c h e d D D o S攻击
android scrollverticallyby用法 -回复
android scrollverticallyby用法-回复Android中的scrollVerticallyBy()方法是用于在垂直方向上滚动视图的方法。它允许您以编程方式滚动视图,并根据提供的像素数在垂直方向上移动内容。这个方法非常有用,尤其是当您需要在特定事件或条件触发的情况下进行滚动时。
首先,让我们看一下scrollVerticallyBy()方法的语法和参数。该方法是在View或其子类中定义的。下面是它的语法:
public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state)
参数说明:
- dy:表示应滚动的像素数,正值表示向上滚动,负值表示向下滚动。- recycler:RecyclerView的Recycler对象,用于回收和重用视图。- state:RecyclerView的State对象,提供有关RecyclerView状态的信息。
下面是使用scrollVerticallyBy()方法的一般步骤:
首先,您需要获取对包含所需视图的RecyclerView的引用。这可以通过从XML布局文件中获取或使用findViewById()方法来实现。
java
RecyclerView recyclerView = findViewById(R.id.recyclerView);
步骤2:创建LayoutManager
接下来,您需要创建一个LayoutManager对象,并将其分配给RecyclerView。LayoutManager负责确定视图是如何在屏幕上布局的,以及如何处理滚动。
android popupwindow基本使用方法 -回复
android popupwindow基本使用方法-回复Android PopupWindow基本使用方法
PopupWindow是Android提供的一种弹出式窗口,可以在当前Activity 界面上浮动展示额外的内容。它通常用于向用户显示快捷操作或者展示特定信息。
本文将一步一步回答关于PopupWindow的基本使用方法,帮助您快速上手。
第一步:创建PopupWindow布局
首先,我们需要创建PopupWindow的布局。可以使用XML文件创建布局,也可以直接在代码中创建布局。下面是一个例子:
xml
<LinearLayout
xmlns:android="
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<! 这里添加你需要展示的内容,比如TextView、ImageView等>
</LinearLayout>
在这个例子中,我们创建了一个垂直方向的LinearLayout,你可以根据需要添加你自己的内容。
第二步:实例化PopupWindow对象
接下来,我们需要在代码中实例化PopupWindow对象。我们可以使用以下代码创建一个PopupWindow对象:
java
PopupWindow popupWindow = new PopupWindow(view, width, height, focusable);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android实现文章+评论(MVP,RxJava,Dagger2,ButterKnife)
简介
这个项目主要有两个功能,一个加载网页/文章,另一个用来显示评论。并应用了MVP模式,Dagger2、RxJava、ButterKnife等开源框架。
demo
结构
首先来看一下布局文件:
xmlns:android="/apk/res/android" xmlns:app="/apk/res-auto" xmlns:tools="/tools" android:background="#ffffff" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.dean.articlecomment.article.ArticleActivity"> android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:theme="@style/AppTheme.AppBarOverlay"> android:id="@+id/toolbar" android:fitsSystemWindows="true" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/AppTheme.PopupOverlay" />
toolbar
在显示网页文章时是仿知乎的操作,向下滑动时隐藏toolbar和屏幕下方发表评论的视图,向上滚动时再显示。
toolbar的显示隐藏是通过设置其scrollFlags属性实现的。
enterAlways:向上滑时toolbar隐藏,向下滑动即展示。
enterAlwaysCollapsed:向上滑时toolbar隐藏,向下滑动直到NestedScrollView的底部时toolbar才展示。
exitUntilCollapsed:当你定义了一个minHeight,这个view将在滚动到达这个最小高度的时候消失。
snap:突然折断的意思,效果同enterAlwaysCollapsed,区别为滚动时手指离开屏幕时toolbar不会显示一半的状态,显示的部分大于一半时即全漏出来,小于一半时即隐藏掉。article_bottom_view
article_bottom_view是屏幕下方的评论条,它的隐藏显示与toolbar同步,使用方式是通过AppBarLayout.OnOffsetChangedListener的状态监听与动画实现的。
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if (verticalOffset >= 0) {
if (xAppBarListener != null) {
xAppBarListener.onFingerDown();
}
} else {
if (xAppBarListener != null) {
xAppBarListener.onFingerUp();
}
}
}
content_scrolling
content_scrolling布局如下:
xmlns:android="/apk/res/android" xmlns:app="/apk/res-auto" xmlns:tools="/tools" android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_scrolling"> android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> android:id="@+id/article_content_view" android:layout_width="match_parent" android:layout_height="wrap_content"> android:id="@+id/comment_content_view" android:layout_width="match_parent" android:layout_height="wrap_content">
NestedScrollView中嵌套两个视图article_content_view,comment_content_view。分别是用于显示文章Fragment视图和评论fragment视图。
文章Fragment
文章Fragment中使用Webview来显示网页/文章。
Webview使用了腾讯的X5WebView,并在外层封装一个加载用的进度条。
评论fragment
文章Fragment中使用了RecycleView(根据XRecyclerView改造)来显示添加评论,并且可以进行滑动加载更多。
值得注意的是NestedScrollview中嵌套RecycleView的问题,解决方法是:
使用Android Support Library 23.2.0以上,设置layoutManager.setAutoMeasureEnabled(true);
将recyclerView的高度设置为wrap_content