自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

非也缘也的博客

音视频小白,公众号「非也缘也」。

  • 博客(28)
  • 收藏
  • 关注

原创 Jsoup 在 Android 中的尝试

Jsoup 是一款 Java 的 HTML 解析工具,主要是对 HTML 和 XML 文件进行解析。所以,对 JS 动态生成内容的支持并不好。如果想解析 HTML,因为不同网站的情况不同,一些简单的网站可以通过下面的方法尝试(复杂的我也还不会)。具体解析要依据网站的结构,如果对前端有些了解大概能更好理解。HTML 解析首先添加依赖:implementation 'org.jsoup:jsoup:1.14.1'第一种方式:通过 Jsoup.connect 的方式来解析 private.

2021-07-20 23:28:54 448 3

原创 Android BottomSheetDialog

MD 风格的底部弹窗,比自定义 Dialog 或 PopupWindow 使用更简单,功能也更强大,比如可以方便的实现拖拽关闭。 细分来说,分为 BottomSheet、BottomSheetDialog、BottomSheetDialogFragment。BottomSheet:依赖于 CoordinatorLayout 和 BottomSheetBehavior,需要将底部菜单作为CoordinatorLayout 的子 View,并且有三个关键的属性需要其设置。app:layout_beha.

2021-07-15 09:06:45 2067

原创 Linux 基础-基本命令

Linux 基础知识基本命令cd:用于切换当前工作目录。jianghouren@jianghourendeMacBook-Pro ~ % cd testjianghouren@jianghourendeMacBook-Pro test %在 test 目录跳转到 Downloads 目录jianghouren@jianghourendeMacBook-Pro test % cd ~/Downloadsjianghouren@jianghourendeMacBook-Pro Download.

2021-03-13 10:25:59 165

原创 Android 手势检测

手势检测Android 手势检测,也就是对 GestureDetector 的使用。而 GestureDetector 则可以使用 MotionEvents 检测各种手势和事件。GestureDetector.OnGestureListener 是个回调方法,在发生特定事件时会调用 Listener 中对应的方法回调。这个类只能用于检测触摸事件的 MotionEvent,不能用于轨迹球事件。使用步骤创建一个 GestrueDetector 实例在 onTouchEvent(MontionE.

2021-02-08 11:42:02 539 1

原创 Android 自定义 View 三步骤

自定义 View 三步骤自定义View三步骤,即:onMeasure()(测量),onLayout()(布局),onDraw()(绘制)。onMeasure()首先我们需要弄清楚,自定义 View 为什么需要重新测量。正常情况下,我们直接在 XML 布局文件中定义好 View 的宽高,然后让自定义 View 在此宽高的区域内显示即可。但是为了更好地兼容不同尺寸的屏幕,Android 系统提供了 wrap_content 和 match_parent 属性来规范控件的显示规则。它们分别代表自适应大小和.

2021-02-07 08:12:16 2360 2

原创 Android 自定义 View 分类

自定义 View 分类继承View重写onDraw方法。实现一些不规则效果。需要自己支持wrap_content,padding也需自己处理。继承ViewGroup派生特殊的Layout。实现自定义布局。需要合适的处理ViewGroup的测量和布局这两个过程,并同时处理子元素的测量和布局过程。继承特定的View(如TextView)。用于扩展。不需要自己支持wrap_content,padding等。继承特定的ViewGroup(如LinearLayout)。用于扩展。不需要处理ViewGrou.

2021-02-06 21:53:19 84

原创 Android 属性动画

属性动画框架属性动画可以使用 ViewPropertyAnimator、ObjectAnimator、ValueAnimator 这三种 Animator。它们其实是一种递进的关系:从左到右依次变得更加难用,也更加灵活。但它们的性能是一样的,因为 ViewPropertyAnimator 和 ObjectAnimator 的内部实现其实都是 ValueAnimator,ObjectAnimator 更是本来就是 ValueAnimator 的子类,它们三个的性能并没有差别。它们的差别只是使用的便捷性.

2021-02-01 06:40:34 237 1

原创 Android View 动画

View 动画框架使用 View 动画框架可以在 View 上执行补间动画。补间动画是指,只要指定动画的开始与结束的“关键帧”,而动画变化的“中间帧”由系统计算并补齐。动画并没有改变 View 的实际位置,仅是改变了 View 的显示位置。FILE LOCATION: res/anim/filename.xml The filename will be used as the resource ID.COMPILED RESOURCE DATATYPE: Resource.

2021-01-31 07:31:17 310

原创 Android 逐帧动画

逐帧动画帧动画也属于 View 动画,只是它的表现形式和其它四种不太一样。帧动画是顺序播放一组预先定义好的图片,通过 AnimationDrawable 类来使用。它比较容易引起 OOM,所以使用时应尽量避免使用过多尺寸较大的图片。用来逐帧显示预先定义好的一组图片,类似于电影播放。对应于AnimationDrawable类。FILE LOCATION: res/drawable/filename.xml The filename will be used as the resou.

2021-01-31 07:30:58 234 2

原创 Android 动画

概述动画的本质,其实就是把内容的两个状态平滑的过度,而不是直接切换。示例: /** * 通过不断平移 * 来实现动画效果 */ float newTranslationX = 0; public void translationX(View view){ Runnable runnable = new Runnable() { @Override public void run() {.

2021-01-30 20:34:30 165 2

原创 C 语言基础

C 语言基础// 引入头文件。里面包含了重要的 printf。#include <stdio.h>// 入口函数。// 参数一指输入的参数个数,参数二保存了所有参数。// 返回值为 int 类型,一般 0 代表成功,负数代表失败。int main(int argc,char* argv[]){ printf("Hello World!\n"); return 0; // 代表执行成功。}通过指令的编译与执行:MAC 下的编译使用 clang,Linux 下

2021-01-20 14:40:11 113

原创 Android Material Design

Toolbar由 AndroidX 库提供的用来替代 ActionBar 的一个控件。 详细信息 ActionBar 即每个 Activity 最顶部的那个标题栏,任何新建的项目默认都会显示,但它被限定只能位于 Activity 的顶部,从而不能实现一些 Material Design 的效果,因此官方现在已经不再建议使用,可在 res/values/styles.xml 文件中设置为不带 ActionBar 的主题。更加推荐的是 Toolbar,它不仅继承了 ActionBar 的所

2021-01-20 14:27:51 234

原创 Jetpack 高级程序开发组件

Jetpack 简介Jetpack 是一个开发组件工具集,它的主要目的是帮助我们编写出更加简洁的代码、并简化开发过程。Jetpack 中的组件有一个特点,它们大部分不依赖于任何 Android 系统版本,这意味着这些组件通常是定义在 AndroidX 库当中的,并且拥有非常好的向下兼容性。Jetpack 家族主要由基础、架构、行为、界面这 4 个部分组成。其中也不全是些新东西,像通知、权限、Fragment 都属于 Jetpack。ViewModelViewModel 的一个重要作用就是可以帮助

2021-01-20 14:19:18 177

原创 Kotlin 扩展课堂

Kotlin 中的小魔术字符串内嵌表达式fun main(){ // Kotlin 中字符串内嵌表达式的语法规则: // "hello, ${obj.name}, nice to meet you! " // 当表达式仅有一个变量时,可将大括号省略。 // "hello, $name, nice to meet you! " val brand = "Samsung" val price = "1299.99" println("Cellphone(brand

2021-01-20 13:08:47 91

原创 Kotlin 与 Java 代码之间的转换

Java 代码转换成 Kotlin 代码有许多老项目是使用 Java 语言编写的,而现在想要转换成 Kotlin 语言,最笨的转换方式就是对每一行代码都重新手动编写。第一种转换方式事实上,将 Java 代码转换成 Kotlin 代码,在语法层面上是有一定规律的,而 Android Studio 给我们提供了非常便利的功能来一键完成这种转换工作。首先,只要复制一段 Java 代码,然后在 Android Studio 中的任意一个 Kotlin 文件中进行粘贴,Android Studio 都会弹出提

2021-01-20 13:08:15 2128 2

原创 Kotlin 使用 DSL 构建专有的语法结构

DSL 的全称是领域特定语言(Domain Specific Language),它是编程语言赋予开发者的一种特殊能力,通过它我们可以编写出一些看似脱离其原始语法结构的代码,从而构建出一种专有的语法结构。在 Kotlin 中,实现 DSL 的方式并不固定。这里主要的学习目标是通过高阶函数的方式来实现 DSL,这也是 Kotlin 中实现 DSL 中最常见的方式。在 Android 中,Gradle 是一种基于 Groovy 语言的构建工具,因此,当我们在 build.gradle 中添加依赖库时所编写的

2021-01-20 13:07:51 136

原创 Kotlin 泛型

泛型和委托泛型的基本用法Java 早在 1.5 版本中就引入了泛型的机制,因此,Kotlin 自然也就支持了泛型功能。但是 Kotlin 中的泛型与 Java 中的泛型有同有异,这里先看与 Java 中相同的部分。泛型,是指在一般的编程模式下,我们需要给任何一个变量指定一个具体的类型,而泛型允许我们在不指定具体类型的情况下进行编程,这样编写出来的代码将会拥有更好的扩展性。比如 List 就是使用泛型来实现的。泛型主要有两种定义方式,一种是定义泛型类,另一种是定义泛型方法,使用的语法结构都是<T

2021-01-20 13:07:25 1041

原创 Kotlin 协程

协程,可以将它简单地理解成一种轻量级的线程。要知道,之前所学习的线程是非常重量级的,需要依靠操作系统的调度才能实现不同线程之间的切换。而使用协程却可以仅在编程语言的层面就能实现不同协程之间的切换,从而大大提升了并发编程的运行效率。协程允许我们在单线程模式下模拟多线程编程的效果,代码执行时的挂起与恢复完全是由编程语言来控制的,和操作系统无关。这种特性使得高并发程序的运行效率得到了极大地提升。为什么要使用协程?轻量、高效简单、好用可以用同步的方式编写异步代码协程的基本用法添加依赖首先要添加依

2021-01-20 13:06:11 180

原创 Kotlin 高阶函数

定义高阶函数高阶函数和 Lamdba 的关系是密不可分的。像接收 Lambda 参数的函数就可以称为具有函数式编程风格的 API,而如果想定义自己的函数式 API,那就得借助高阶函数来实现了。高阶函数的定义:如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数。(这里的另一个函数指的是函数类型,就像整型等。)函数类型的基本语法规则:(String, Int) -> Unit-> 左边部分用来声明该函数接收什么参数,多个参数之间用逗号隔开,如果不接收任

2021-01-20 13:05:14 162

原创 Kotlin 语言入门

语言简介编程语言大致可以分为两类:编译型语言和解释型语言。编译型语言的特点是编译器会将我们编写的源代码一次性地编译成计算机可识别的二进制文件,然后计算机直接执行,像 C/C++ 都属于编译型语言。解释型语言的特点是它有一个解释器,在程序运行时,解释器会一行行地读取我们编写的源代码,然后实时地将这些源代码解释成计算机可识别的二进制数据后再执行,因此解释型语言通常效率会差一些,像 Python 和 JavaScript 都属于解释性语言。Java 属于解释性语言。Java 代码编译之后生成的并不是计算机

2021-01-20 09:06:28 671

原创 Mac 本地服务器

最近做 Web 项目遇到一些问题,比如获取本地文件相关,或者 iframe 的传值问题,使用本地文件的方式(file:///)是无效的。而每次上传到阿里云服务器上来测试又太麻烦,所以可使用 Mac 自带的 Apache 服务器。配置流程1、创建文件夹在家目录创建一个文件夹 Sites ,创建后这个文件夹会有所不同,文件夹上面有一个网络的标记。(提示:家目录也就是用户名目录,没有家目录的在 访达(Finder)-> 偏好设置-> 勾选家目录)2、打开文件打开终端,切换工作目录,进入 ap

2021-01-16 09:12:48 304

原创 Java 代码块与函数的执行顺序

代码块与函数的执行顺序:父类优先子类,静态优先普通,构造代码块优先构造函数。public class A { public A(){ System.out.println("A 构造函数"); } static { System.out.println("A 静态代码块"); } { System.out.println("A 构造代码块"); } public void APrint(){

2021-01-16 08:56:17 124

原创 Android 音频

AudioRecordAPI详解AudioRecord 是 Android 系统提供的用于实现录音的功能类。接下来实现使用 AudioRecord 采集音频 PCM 并保存到文件。AndioRecord 类的主要功能是让各种 JAVA 应用能够管理音频资源,以便它们通过此类能够录制声音相关的硬件所收集的声音。此功能的实现就是通过 ”pulling”(读取)AudioRecord 对象的声音数据来完成的。在录音过程中,应用所需要做的就是通过后面三个类方法中的一个去及时地获取 AudioRecord 对象

2021-01-16 08:33:14 466

原创 音视频基础知识

Android 音视频开发的难度相对较高,音视频开发中很多有特色的或者核心的模块使用 NDK 开发,而 NDK 开发又主要使用 C/C++ 语言编写代码 ,这对于使用 Java 语言的 Android 开发者来说有门槛。音视频应用从业方向;算法方向,工程方向。音视频基础知识如图所示,这是一个 MP4 的视频文件的属性,可以看到在更多信息栏里编解码器有 AAC、H.264,这个就是视频的音频编码和视频编码,而 MP4 其实就是封装协议。一般情况下,视频流从加载都准备播放是需要经过解协议、解封装、解编

2021-01-13 16:04:56 229

原创 在 AS 中运行 java 类报错

在 AS 中运行 java 类报错:Error:Gradle: failed to create directory 'E:\jhrFile\SortApplication\app\build\generated\source\r\debug\com\example\sortapplication'.Error:Gradle: java.util.concurrent.ExecutionE...

2019-11-06 17:12:09 325

原创 AndroidStudio新版本3.1.3导入旧版本项目出现的问题

遇到了这个,别Update,我应该就是第三方用得太多。详细参考;https://blog.csdn.net/qq_36009027/article/details/79009268

2018-06-28 13:30:42 2760

原创 AS导入项目报错Error:Your project path contains non-ASCII characters.

具体报错信息如下;解决办法;其实就是 工程项目路径 或者 项目名称 包含了中文对于像我这种英文不好的人,确实挺尴尬。虽说英文不是硬性标准,但提升一下还是很有必要的。参考;对的,我们要专业,不仅限于包名,还有像类名,方法名等等......https://blog.csdn.net/lovejjfg/article/details/50574140注;如果有任何其他问题,像侵权或建议等,请联系我,谢谢...

2018-06-22 19:47:08 950

原创 AS版本3.0.1新建项目报错Error:Execution failed for task ':app:preDebugAndroidTestBuild'。

具体报错信息如下;查到的解决办法有两种;1;Build-&gt;Rebuild Project,临时解决,重新打开项目还是会报错。2;在app下的build.gradle文件中的dependences {}中添加如下代码:     androidTestCompile('com.android.support:support-annotations:26.1.0') {            fo...

2018-06-21 18:23:56 281

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除