当前分类 / Android / 总共73篇

看完才知道约束布局 ConstraintLayout 原来这么简单

前面两篇介绍了关于 ConstrantLayout 的使用和相关属性 API 的介绍,这一篇我们来实际演示一下各种情况下如何使用,所以说这一篇就是前面两篇的实践,建议你先阅读前面两篇文章。

这一篇是真正的实践,如果你看过前面两篇建议你看一下这一篇,这一篇文章会让你对前面的所学恍然大悟,融汇贯通。

创建第一个约束

我们先打开 Design 面板,然后拖动一个 ImageView 控件到画布:

拖动一个组件到画布演示

接下来设置一个默认图片,我就设置了里面自带的默认背景图片,此时整个界面的代码如下:

阅读更多

Android中约束布局ConstraintLayout的API和属性解析

前面我们已经通过一篇文章《约束布局 ConstraintLayout 的使用》 介绍了如何创建和使用约束布局,今天我们来看一下关于约束布局 ConstraintLayout 的 API 属性,更进一步的了解关于约束布局的详细设置。

ConstraintLayout 继承自 android.view.ViewGroup 允许以灵活的方式定位和调整界面组件的大小。ConstraintLayout 是 Android 中的一个 support 库,你可以从 API level 9 (Gingerbread) 开始在Android 系统上使用它。我们可以使用的约束类型有如下几种:

约束布局相对定位

相对定位是在 ConstraintLayout 中创建布局的基本构件之一。这些约束允许你将给定的小部件相对于另一个小部件进行定位。您可以在水平和垂直轴上约束小部件。

  • 横轴: left 左、 right 右、start 起点和 end 终点。
  • 纵轴:top 顶部、bottom 底部和 text baseline 文本基线。

相对定位示例

阅读更多

Android内部分享[9]——约束布局 ConstraintLayout 的使用

ConstraintLayout 允许您创建具有平面视图层次结构(没有嵌套视图组)的大型复杂布局。它类似于 RelativeLayout,因为所有视图都是根据兄弟视图和父视图布局之间的关系来布局的,但是它比 RelativeLayout 更灵活,并且更容易在 Android Studio 的布局编辑器中使用。

约束布局概述

要在 ConstraintLayout 中定义视图的位置,必须为视图添加至少一个水平约束和一个垂直约束。每个约束表示到另一个视图、父布局或不可见的连接或基准线(对齐线)。每个约束定义视图沿垂直或水平轴的位置;因此,每个视图的每个轴必须至少有一个约束,但通常需要更多约束。

当您将视图放入布局编辑器时,即使没有约束,它也会停留在原来的位置。然而,这只是为了使编辑更容易;如果在设备上运行布局时视图没有约束,则在[0,0] (左上角) 处绘制。

例如:视图编辑器在 A 下方显示视图 C,但它没有垂直约束

例如:视图 C 现在垂直约束在视图 A 之下

虽然缺少约束不会导致编译错误,但布局编辑器将缺少约束作为工具栏中的错误指示。要查看错误和其他警告,单击 “显示警告和错误”。为了帮助您避免丢失约束,布局编辑器可以使用 Autoconnectinfer constraints 特性自动为您添加约束。

阅读更多

Android入门到进阶视频教程(25~28)

2019 年最新 Android 全套视频教程正在连载中...

前几讲中我们对 Android 中的各种本地存储方式进行了研究和学习,接下来我们来研究另一种存储方式,也就是我们今天的主角 Android 中的网络请求,讲到网络请求就难免要说到图片的加载和适配器,所以今天的四节视频就是针对这些问题来进行讨论的。而且我要告诉大家的是,网络请求,图片加载,适配器的使用是 Android 中用途最广泛的一种技术,所以今天的内容特别重要,希望你能够重视并且多多练习,有什么问题请留言。

第二十五讲:网络请求概述

在 Android 2.2 版本之前 sdk 为我们提供了 HttpClient, 在 2.3 版本开始引入了 HttpURLConnection 来实现网络请求。HttpURLConnection 相比于 HttpClient ,其 API 简单,体积小,而且其压缩和缓存机制可以有效的减少网络访问的流量,在提升速度和省电方面都很有优势,但是在 2.3 之前存在很多bug。

阅读更多

Android内部分享[8]——Android系统的应用程序权限申请

Android 中的权限概述

Android 中需要申请权限的目的是保护用户的隐私。如果你的应用程序需要访问用户的敏感数据,必须申请对应的访问权限(如联系人和短信) ,还有一些系统功能的使用也需要申请权限(如摄像头和互联网)。根据功能和安全等级的不同,Android 系统可能会自动授予权限,也可能提示用户确认并同意权限请求。

Android 安全架构设计的一个核心点就是默认情况下没有任何应用程序有权执行任何可能对其他应用程序、操作系统或用户造成不利影响的操作。这包括读取或写入用户的私有数据 (如联系人或电子邮件)、读取或写入另一个应用程序的文件、执行网络访问、保持设备处于清醒状态等等。

接下来我们来看一下 Android 权限的工作原理,包括:权限如何呈现给用户、安装时和运行时权限请求之间的区别、如何执行权限、权限类型及其权限组。

申请Android应用程序权限

应用程序必须通过在应用程序清单(app manifest)中包含 <uses-permission> 标记来公开它需要的权限。例如,需要发送 SMS 消息的应用程序清单中会有下面这一行权限声明:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.snazzyapp">

    <uses-permission android:name="android.permission.SEND_SMS"/>

    <application ...>
        ...
    </application>
</manifest>

如果您的应用程序在其清单中列出了普通权限(即不会对用户隐私或设备操作造成太大风险的权限),系统会自动将这些普通权限授予您的应用程序。如果您的应用程序在其清单中列出了危险的权限(即可能影响用户隐私或设备正常运行的权限),例如上面的 SEND_SMS 权限,用户必须明确同意授予这些权限。

阅读更多

Android入门到进阶视频教程(21~24)

2019 年最新 Android 全套视频教程正在连载中...

接着上一次的本地存储,今天我们来看一个非常方便的数据库框架 ObjectBox 的用法,接下来再看看在 Android 中如何读写文件,最后教大家从 GitHub 克隆我们的示例代码,最后给大家讲解一下 json 格式和对象映射为后面的网络请求部分内容做铺垫。

第二十一讲:数据库 ObjectBox 框架

阅读更多

Android入门到进阶视频教程(17~20)

2019 年最新 Android 全套视频教程正在连载中...

从今天开始我们来研究一下 Android 中的本地持久化数据,在 Android 中本地持久化的主要方式有如下三种:

  • SharePreference : key-value 形式,主用于数据较少的配置信息的存储。
  • SQLite :一些比较复杂的数据结构,特别适合对象存储。
  • File Save : 比较大的文件(例如日志,图片缓存,apk包等)或者某些特殊的配置文件。

本次视频的所有主题都有对应的示例代码,可以在这里下载: https://github.com/lxqxsyu/InnerShareCode2

第十七讲:SharePreference【上】

SharePreference 是我们平时开发过程中最常用的一种持久化存储方式,它是一种键值对的存储方式(key-value),可以存储基本数据类型。支持的数据类型有:String, boolean, float, int, long, Set<String>.

阅读更多

Android入门到进阶视频教程(13~16)

2019 年最新 Android 全套视频教程正在连载中...

在前面的视频中我们对 Android 的项目界面部分有了一个基础认识并且可以实现一些相对简单的界面了,接下来我们先来看看 Gradle 项目构建过程,随后我特意准备了两节关于 Java 扫盲的课程,如果你对 Java 基础不是很熟悉或者有些生疏可以观看此视频,帮助你对后面课程的理解。

第十三讲:项目构建过程概述

我们前面编写的 Android 源码要执行打包并安装到手机(或模拟器)上到底经历了怎样的一个过程,看完这个视频你就会明白。

阅读更多

Android入门到进阶视频教程(9~12)

2019 年最新 Android 全套视频教程正在连载中...

今天开放的四节 Android 视频教程都是关于界面布局相关的,基于这些基础布局知识你可以完成很多甚至是复杂的界面样式。

第九讲:线性布局和相对布局

还是那个大家常说的 2,8 定律,线性布局和相对布局可能是你以后开发中使用率最高的布局(暂且不说约束布局),所以说不要看它们两个简单,它们是开启布局大门的重要环节,掌握它并熟练应用它。

阅读更多

Android入门到进阶视频教程(5~8)

2019 年最新 Android 全套视频教程正在连载中...

今天开放了四节免费课程,关注此博客,后续会不定期开放新的免费课程,有任何疑问和问题可以在此留言。

第五讲:编辑界面样式和Android尺寸单位

Android 中的单位尺寸是一个比较重要的知识点,理解屏幕分辨率、屏幕密度 以及 和尺寸之间的换算关系很重要。

阅读更多

Android 音频播放器应用开发

前言

音频播放和视频播放还是有很多本质的区别的,例如视频播放需要和对应的界面(Activity 或者 Fragment)绑定,因为它需要显示内容,而音频播放不需要显示内容,所以通常和对应的 Service 绑定。但是它们也有一些共同的行为抽象和播放过程抽象,也就是说有共同的控制逻辑。

音视频控制逻辑

MediaController(媒体控制器)负责隔离界面和媒体播放器,来实现控制隔离。它只会对 UI 暴露部分的控制接口 API 例如播放、暂停等。当 Media Session(媒体会话)的状态发送变化的时候也会通过回调的方式传递到媒体控制器。而媒体会话则负责维护具体的播放逻辑,例如播放,暂停等,它负责和具体的 Player(播放器)之间进行通信。

阅读更多

Android入门到进阶视频教程(1~4)

2019 年最新 Android 全套视频教程正在连载中...

第一讲:自我介绍和如何学习 Android

如何开始并学好一个技术栈是一个比较普遍的问题,对所有技术栈都适用,我的观点是从宏观到微观,先要从整体上对这个技术栈的方向、特点、用途等有一个总体认识,然后再进入到技术细节,这样才不至于盲人摸象。

阅读更多