Request 是一个简答优雅的 python HTTP 库,相较于 python 标准库中的 urllib 和 urllib2 的库,Requests 更加的便于理解使用, 本篇文章将带你详细了解 Requests 的基本用法。
Requests 模块
安装
|
|
注意:在 python 3.8 中的安装包中默认安装了 pip 工具,只需要我们配置一下环境变量即可
|
|
Android 底部导航停留在屏幕的底部,在应用程序的顶层视图之间提供导航。这是在向后兼容的设计支持库中引入的。当应用程序有三到五个顶级导航时,应该使用底部导航。本文将介绍底部导航的基础知识,并将其与 Fragment相结合。我们还将学习如何通过通过 HTTP 调用获取 JSON 来加载第一个带有网格数据的片段(使用 RecyclerView)。
使用 Bottom Navigationview 组件可以轻松添加底部导航。您必须使用约束关系或相对关系属性,使它出现在屏幕底部。
|
|
Android 是少数流行的移动操作系统之一,拥有超过 190 个国家的数百万用户,并日益增长。所以当你想让你的应用在全球取得成功时,让应用本地化总是一个好主意。在进行本地化时,您应该考虑根据地区或国家使用适当的文本、音频、货币、数字和图形。但本教程只涉及本地化 Resource 支持多种语言。使用参考资料进行本地化说明在本地化应用程序时应该考虑其他事项。在本文中,我们将构建一个支持多语言的应用程序,它支持法语、德语、印地语和日语。
默认情况下,android 将英语作为主要语言,并从 res ⇒ values ⇒ strings.xml 加载字符串资源。当您想要添加对另一种语言的支持时,您需要通过添加连字符和 ISO 语言代码来创建一个 values 文件夹。例如,如果希望添加对法语的支持,应该创建一个名为 values-fr 的 values 文件夹,并在其中保存一个 strings.xml 文件,其中的所有字符串都翻译成法语。
简而言之,本地化工作如下:
因此,默认的 stings.xml 文件必须包含应用程序使用的所有字符串值,否则应用程序将崩溃或强制关闭错误。
Android Recyclerview 是 ListView 的升级版,具有性能提升等优点。同时使用 Recyclerview 和 CardView,可以很容易地创建列表和网格。以下是关于 Recyclerview 和其他例子的完整信息。在本教程中,我们将学习如何使用自定义布局呈现简单的 Recyclerview。我们还将学习编写适配器类、添加列表分隔符和行单击侦听器。我们将要设计的 Recyclerview 视图包含显示标题、类型和发行年份的电影列表。
以下是带有必要属性的RecyclerView小部件:
|
|
在开始之前,请确保将您的 Android Studio 更新到最新版本。目前我的 Android Studio 更新到 Android Studio 3.2。
我们知道,在平常调节音量的时候,是有一定的调节数值,也就是,每按一次音量 +/-,音量的增加/减小幅度,这个我们称为:系统的音量步进值。而音量还有一定的范围,系统的是:0 到 Max,Max 不确定,这个称为:系统的音量范围。
在Android中,是有几种类型的音量可以调节:
Android 中的所有音量都是通过:AudioManager 去管理的,也是通过它去调节:
|
|
在 Android 中拦截用户交互的事件不止一种,我们可能已经注意到前面使用过的一些公共回调方法例如 setOnClickListener
, onTouchEvent
等,有时候我们在自定义视图的时候需要去扩展或者覆盖某些事件,问题远比你想象的复杂。
监听事件是视图 View 类中包含的单个回调方法接口,当你注册了某个事件的监听器后,当用户触发 UI 操作就会回调此方法,主要包括如下几个监听器:
View.OnClickListener
接口。View.OnLongClickListener
接口。View.OnFocusChangeListener
接口。View.OnKeyListener
接口。View.OnTouchListener
接口。View.OnCreateContextMenuListener
接口。我们先来看看比较常见的两个事件,点击和长按事件:
|
|
在开始自定义组件 View 和 ViewGroup 之前我们先来理解一下它们之间的关系,在 Android 中所有 UI 视图组件的根类是 View,而 ViewGroup 继承自 View,但是需要注意的是 ViewGroup 是一个抽象类.
android.view.View
类:
|
|
android.view.ViewGroup
类:
|
|
从上面代码可以看出来一个 ViewGroup 中可以包含多个 View,也就是说 ViewGroup 既是一个容器又是一个 View,这样就可以将 ViewGroup 也作为 View 添加到这个集合中了,于是就可以形成如下图所示的树状结构。
对话框是一个小窗口,提示用户做出决定或输入附加信息。对话框不会填满屏幕,通常用于一些在用户执行某些操作前的提前选择。
Dialog 类是对话框的基类,但是我们不应该直接去实例化一个 Dialog 类,而是要实例化它的子类:
上面这些类定义对话框的结构和样式,但是你应该使用 DialogFragment 作为对话框容器而不是使用上面的 Dialog 子类,DialogFragment 类提供了创建对话框并管理其外观所需的所有控件。使用 DialogFragment 管理对话框可以确保它正确地处理生命周期事件,例如当用户按下后退按钮或旋转屏幕时。DialogFragment 类还允许您将对话框的 UI 作为可嵌入组件重用到更大的 UI 中,就像传统的 Fragment 一样(例如,当您希望对话框 UI 在大屏幕和小屏幕上以不同的方式显示时)。
Fragment 表示 FragmentActivity 中用户活动和界面的一部分,也称为界面碎片。你可以在一个 Activity 中包含多个 Fragment 来构建你的 UI 界面,这样你就可以抽取出来一些可以共用的 Fragment 了,Fragment 和 Activity 一样同样具有自己的生命周期,也可以定义自己的事件。
Fragment 必须始终驻留在 Activity 中,并且 Fragment 的生命周期直接受到宿主 Activity 生命周期的影响。例如,当 Activity 处于 paused 生命周期时,其中的所有 Fragment 也将处于 paused,当 Activity 被销毁时,所有 Fragment 也暂停。然而,当一个 Activity 正在运行(它处于恢复的生命周期状态)时,您可以独立地操作每个 Fragment,例如添加或删除它们。当您执行这样一个 Fragment 事务时,您还可以将它添加到由 Activity 管理的后堆栈中,Activity 中的每个后堆栈条目都是片段 transac 的记录
当你创建的 Fragment 作为 Activity 布局的一部分添加时,它位于 Activity 视图层次结构中的 ViewGroup 中,Fragment 定义了自己的视图布局。您可以通过在 Activity 的布局文件中将片段声明为 <fragment>
元素,或者通过将应用程序代码添加到现有的 ViewGroup,将 Fragment 插入到 Activity 布局中。
前面我们已经通过一篇文章《约束布局 ConstraintLayout 的使用》 介绍了如何创建和使用约束布局,今天我们来看一下关于约束布局 ConstraintLayout 的 API 属性,更进一步的了解关于约束布局的详细设置。
ConstraintLayout 继承自 android.view.ViewGroup 允许以灵活的方式定位和调整界面组件的大小。ConstraintLayout 是 Android 中的一个 support 库,你可以从 API level 9 (Gingerbread) 开始在Android 系统上使用它。我们可以使用的约束类型有如下几种:
相对定位是在 ConstraintLayout 中创建布局的基本构件之一。这些约束允许你将给定的小部件相对于另一个小部件进行定位。您可以在水平和垂直轴上约束小部件。
ConstraintLayout 允许您创建具有平面视图层次结构(没有嵌套视图组)的大型复杂布局。它类似于 RelativeLayout,因为所有视图都是根据兄弟视图和父视图布局之间的关系来布局的,但是它比 RelativeLayout 更灵活,并且更容易在 Android Studio 的布局编辑器中使用。
要在 ConstraintLayout 中定义视图的位置,必须为视图添加至少一个水平约束和一个垂直约束。每个约束表示到另一个视图、父布局或不可见的连接或基准线(对齐线)。每个约束定义视图沿垂直或水平轴的位置;因此,每个视图的每个轴必须至少有一个约束,但通常需要更多约束。
当您将视图放入布局编辑器时,即使没有约束,它也会停留在原来的位置。然而,这只是为了使编辑更容易;如果在设备上运行布局时视图没有约束,则在[0,0]
(左上角) 处绘制。
虽然缺少约束不会导致编译错误,但布局编辑器将缺少约束作为工具栏中的错误指示。要查看错误和其他警告,单击 “显示警告和错误”。为了帮助您避免丢失约束,布局编辑器可以使用 Autoconnect
和 infer constraints
特性自动为您添加约束。