自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 资源 (8)
  • 收藏
  • 关注

原创 乐学云课堂App开发——绪论

一、前言时隔将近一个月的时间,重返SCDN。这一个月简单的做了一个APP,来“应付”毕业设计。废话不多说,来看看它的效果吧。二、效果演示图开发软件:Android studio开发语言:Java服务器:Spring Boot 管理服务器模拟器:夜神模拟器工具:postman等本项目APP名为乐学云课堂,是针对目前主流的学习方式开发一款学生APP,主要分为六个模块...

2022-01-05 16:46:42 3316 4

原创 自定义视图:图形与图像的处理(一):使用简单图片

Android系统提供了ImageView显示普通的静态图片,也提供了AnimationDrawable来开发逐帧动画,还可通过Animation对普通图片使用补间动画。图形、图像处理不仅对Android系统的应用界面非常重要,而且Android系统上的益智类游戏、2D游戏都需要大量的图形、图像处理。 所谓游戏,本质就是提供更逼真的、能模拟某种环境的用户界面,并根据某种规则来响应用户操作。为了提供更逼真的用户界面,需要借助于图形、图像处理。 从广义的角度来看,Android应用中

2022-06-09 14:52:40 1061 2

原创 Android音视频开发(四)——MediaCodec:解码视频,得到YUV值,一帧一帧加载到SD卡中保存。

我们上一节了解了MediaExtractor、MediaMuxer、MediaFormat、MediaCodec.BufferInfo。重复的内容我就不再赘述了,假如有上面的四个的一些补充还是会写一下。接下来我们学习MediaCodec,本节篇幅会比较长,知识点较多,请耐心品味。一、MediaCodec​ MediaCodec类可用于访问低级媒体编解码器,即编码器/解码器组件。它是Android低级多媒体支持基础设施的一部分(通常与MediaExtractor, ...

2022-05-24 15:44:39 7317 7

原创 Android音视频开发(三)——MediaExtractor和MediaMuxer的使用

了解了音视频的编解码过程,我们接下来使用一下经常跟MediaCodec一起搭配的MediaExtractor和MediaMuxer。最后会使用一个简单的demo来了解具体了解这两个工具类的使用过程。这一节我们就先不讲MediaCodec了,放到下节的demo。一、MediaExtractorAndroid提供了一个MediaExtractor类,可以用来分离容器中的视频track和音频track。主要API介绍:setDataSource(String path):即可以设置本地文件又

2022-05-23 17:25:02 5363

原创 Android音视频开发(二)——Android编码实践

一、Android Camera API1.1 图像采集构建预览布局——使用SurfaceView或者TextureView 打开相机 ——Camera.open 设置参数——Camera.Parameters 设置预览数据回调——PreviewCallback 设置预览画布并启动——setPreviewTexture/startPreview 释放相机——stopPreview/release二、MediaCodec 实践2.1 MediaCodec (虽然常

2022-05-17 11:48:20 1499

原创 Android音视频开发(一)——音视频开发流程

一、视频文件是什么?视频文件就相当于是:音频码流和视频码流结合封装的一个容器。其中一个视频文件中可以放入多个音频码流和视频码流的文件。 并且从视频文件中导出来的视频压缩数据是不可以直接进行播放的(假设里面有两张相似的图片,其实并没有保存两张图片的完整信息,第二张图片可能只保存了与第一张图片的不同信息)二、为什么要编码?视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像。由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,我们看到的就...

2022-05-13 16:37:10 6286 3

原创 Android基于环信实现聊天功能(三)——登录注册界面

一、标题栏控件 EaseTitleBar 使用在 xml 中声明标题栏控件,可以在 xml 直接设置标题内容,左右图片,在 Java 文件中亦可以设置这些属性以及相关的点击事件。<com.hyphenate.easeui.widget.EaseTitleBar android:id="@+id/title_bar" android:layout_width="match_parent" android:layout_height="wrap_content"

2022-05-07 11:43:41 1255

原创 Android基于环信实现聊天功能(二)——欢迎界面(MVC)

这个系列只是一个基于环信的demo。界面设计很潦草,主要是完成功能的实现。首先结构分析:欢迎界面的功能是:延迟2s后跳转到指定界面(登录过就直接进入首页,没有登录就进入登录界面)一、准备工作:在集成环形的过程中需要创建一个IMApplication,用于初始化。1.IMApplication.javapublic class IMApplication extends Application { @Override public voi...

2022-05-05 10:08:26 785 1

原创 Android基于环信实现聊天功能(一)——了解环信

本系列知识点来自于:b站尚硅谷Android通信实战。一、环信集成概述环信和用户体系的集成主要发生在2个地方,服务器端集成和客户端集成。1.1发送消息过程客户端通过环信服务器进行消息发送。如下图所示: 在线状态:客户端A发送消息到环信服务器,环信服务器推送消息到客户端B。 离线状态:客户端A发送消息到环信服务器,环信服务器检测到客户端B不在线,会添加到离线缓存中,当客户端B登录后服务器会把离线消息推送给客户端B。 1.2聊天记录保存...

2022-05-01 23:34:18 3029

原创 Android打包知识体系(二)——APK签名介绍

上一节介绍到多渠道打包的快速,他是如何如此迅速的完成打包的?问题1:如何不修改签名的情况下,网APK中注入渠道信息???先不急接着往下看。一.APK签名介绍:1.APK 签名方案...

2022-04-18 13:33:41 6580 1

原创 Android打包知识体系(一)——ProductFlavor&&多渠道打包插件

一.什么是多渠道打包  在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。在安装包中添加不同的标识,以此区分各个渠道,方便统计app在市场的各种下载量和其他数据。多渠道打包的原理就是为我们每个平台或者市场发布的apk指定一个唯一的标识符。通过这个标识符就可以知道被下载的apk是在哪个平台市场下载的。二.多渠道打包例子:1.新建项目,在app下build.gradle中android下添加如下代码:produc...

2022-04-11 01:31:04 2473

原创 【笔试算法题】数据结构的应用(bfs&双端队列)

一.bfsbfs(广度优先搜索),类似二叉树的层序遍历,利用队列完成。一般用于求最短路。图的最短路问题:给定一个无向图,每条边的长度都是1。求1号点到x号点的最短距离。 顶点数n 边数为mq次询问 输入x 输出1到x的最短距离。 若1号点到x不连通,则输出-1二.双端队列双端队列的应用(区间翻转):对于长度为n的数组,给定一个长度为m的区间,区间初始位置为a[1]到a[m]。3种操作:区间右移(最右端不会超过a[n]) 区间左移(最左端不会超过a[n]..

2022-04-06 15:40:20 1016

原创 【笔试算法题】动态规划(线性dp、前缀和、差分、二维dp、背包问题&树形dp)

一、线性dp问题:给定一个正整数组成的数组,取出一些数使得和尽可能大,要求不能取相邻的数。len 1e6例如:3,2,6,9,1 取3+9=12例如:2,4,6,8,9 取2+6+9=17dp[i][0]取了第i个数的情况下,前i个数取完的最大值dp[i][1]没取第i个数的情况下,前i个数取完的最大值二、前缀和、差分问题1:给定一个数组,多次询问[l,r]区间的总和是多少?要求做到O(1)询问 首先求出前缀和数组dp[i] (前i个数的和);使用后缀和...

2022-04-06 15:39:51 3397

原创 【笔试算法题】递归(dfs & 记忆化搜索 & 分治)

递归:递归指函数调用自身。常用的递归算法有dfs(深度优先搜索)、记忆化搜索和分治。一、dfs(深度优先搜索)1.图的dfs/** * 深度优先搜索 * * @param node * @param set */public void DFS(Node node, Set<Node> set) { if (node == null) { //当没有节点时,退出此次方法 return; } if (!set

2022-04-05 18:36:00 1557

原创 【面试算法题】十种常用排序算法详解

排序算法的稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,如果排序以后,保证这些记录的相对次序保持不变,即在原序列中,a[i]=a[j],且 a[i] 在 a[j] 之前,排序后保证 a[i] 仍在 a[j] 之前,则称这种排序算法是稳定的;否则称为不稳定的。一.选择排序每次从待排序的元素中选择最小的元素,依次和第1、2、3...位置的元素进行交换。这样在数组前面的部分形成有序区域。每进行一次交换,有序区域长度加一。public static ...

2022-04-04 12:32:33 5617 5

原创 【笔试算法题】贪心和枚举(四个例子彻底弄懂)

笔试技巧:学会根据数据范围猜知识点 一般1s时间限制的题目,时间复杂度能跑到1e8左右(python和java会少一些,所以建议大家使用c/c++做笔试题)。 n范围20以内: O(n*2^n) 状压搜索/dfs暴搜 n范围200以内: O(n^3) 三维dp n范围3000以内: O(n^2) ...

2022-04-03 00:53:47 2757

原创 【算法题】kotori和n皇后

kotori最近在研究n皇后的问题。所谓n皇后问题是这样的:一个n*n的地图,上面一共放n个皇后,保证任意两个皇后都不能互相攻击(每个皇后可以攻击同一行、同一列以及同一45度角斜线和135度角斜线上的所有其他皇后)。kotori思考了很久都无法得出答案,整个人都变成琴梨了。她于是拿了一堆皇后在一个无穷大的棋盘上模拟,按照次序一共放了k个皇后。但是,皇后的站位太复杂了,kotori甚至不知道是否存在两个皇后会互相攻击。于是她想问问聪明的你,在第i个皇后放置在棋盘上之后,是否存在两个皇后可以互相攻击

2022-04-01 22:44:58 682 2

原创 ConcurrentHashMap jdk1.7详解 (如何实现并发访问的?)

前言:本来以为HashMap已经够复杂了,这不又冒出来一个大哥—— ConcurrentHashMap,但是类比HashMap还是很好理解的。本文章就带大家了解一下ConcurrentHashMap(结合不同版本)。读前须知:由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,为了更好的理解 ConcurrentHashMap,让我们首先来了解一下 Java 的内存模型。Java 语言的内存模型由一些规则组成,这些...

2022-03-27 22:40:52 1587

原创 ArrayList继承了AbstractList为何还要实现List接口?

与之类似的问题: Vector既然继承了AbstractList为啥还要实现List接口? HashMap继承了AbstractMap为何还要实现Map接口? HashSet继承了AbstractSet为何还要实现Set接口? 首先了解一下:AbstractListAbstractList:继承于AbstractCollection 并且实现了大部分List接口。ArrayList继承AbstractList是一种思想, 现在AbstractList里实现一些通用的

2022-03-27 14:28:58 1900 3

原创 Android面试必备——Java篇(2)

1.静态属性和静态方法能被继承吗?静态方法又是否能被重写呢?结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏.原因:1). 静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成对,不需要继承机制及可以调用。如果子类里面定义了静态方法和属性,那么这时候父类的静态方法或属性称之为"隐藏"。如果你想要调用父类的静态方法和属性,直接通过父类名.方法或变量名完成,至于是否继承一说,子类是有继承静态方法和属性,但是跟实例方法和属性不太一样,存在"隐藏"的这种情

2022-03-26 22:14:13 1067

原创 接口、抽象类与new之间的爱恨情仇(匿名内部类没有构造器,编译时又哪来的)

问题1:首先我们都知道,接口和抽象都是不能用new来实例化的。疑问:那么为什么按钮单机事件setOnClickListener中new的是一个接口(OnClickListener)?这个问题先放一放。看见这个问题知道了,原来接口是可以new,只是不能实例化而已。那么又出来了一个问题。疑问:接口和抽象类new出来是个什么东西呢?可以使用匿名类的方式new出来,但必须实现接口中的所有接口方法和抽象类中的所有抽象方法。那么为什么按钮单机事件setOnClickListe...

2022-03-25 22:58:36 1255

原创 Android面试必备——Java篇(1)

1.操作系统相关 1.1什么是操作系统?操作系统(OS)是管理计算机硬件和软件资源的系统软件,为计算机程序提供公共服务。分时操作系统可以有效地使用系统,还可以包括处理器时间、海量存储、打印和其他资源的成本分配的会计软件。对于诸如输入输出和内存分配这样的硬件功能,操作系统充当了程序和计算机硬件之间的中介,尽管应用程序代码通常是由硬件直接执行的,并且常常使系统调用一个OS函数或被它中断。在许多设备上都有操作系统,这些设备包括电脑——从手机和视频游戏机到网络服务器和超级计算机。Android是一种基于.

2022-03-25 11:33:09 3910

原创 疯狂Android讲义(二)——第二部分:第1组UI组件(布局管理器)

一、第1组UI组件:布局管理器Android 的界面组件比较多,不利于掌握它们内在的关系。为了帮助读者更好地掌握Android界面组件的关系,本书将会把这些界面组件按照它们的关联分析,分为几组进行介绍。本节介绍的是第1组UI组件:以ViewGroup为基类派生的布局管理器。为了更好地管理Android应用的用户界面里的各组件,Android提供了布局管理器。通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性。通常,推荐使用布局管理器来管理组件...

2022-02-22 09:57:44 3377

原创 疯狂Android讲义(二)——第一部分:界面编程与视图 (View) 组件详解

这里主要针对一些控件和布局的使用,篇幅会有点长。而且,不会像第一章一样全部详细列出。本章主要会用知识点的方式展示内容。①Android应用开发的—项内容就是用户界面的开发。不管应用实际包含的逻辑多么复杂、多么优秀,如果这个应用没有提供友好的图形用户界面(Graphics User Interface,GUI),也将很难吸引最终用户。② 实际上,Windows之所以广为人知,其最初的吸引力就是来自于它所提供的图形用户界面一、界面编程与视图 (View) 组件 1.视图组件与容器组件...

2022-02-21 13:03:32 4315 1

原创 疯狂Android讲义(一)——第六部分

一.Android应用的基本组件介绍Android应用通常由一个或多个基本组件组成,前面我们看到Android应用中最常用的组件就是Activity。事实上Android应用还可能包括Service、BroadcastReceiver、ContentProvider等组件。本节先让读者对这些组件建立一个大致的认识,后面的章节还会对这些组件做更详细的介绍。 1. Activity和ViewActivity是Android应用中负责与用户交互的组件—大致上可以把...

2022-02-18 13:26:52 2933

原创 疯狂Android讲义(一)——第五部分

一.Android应用的开发Android应用程序建立在应用程序框架之上,所以Android编程就是面向应用程序框架API编程——这种开发方式与编写普通的Java或Kotlin应用程序并没有太大的区别,只是Android新增了一些API而已。 1.使用Android Studio开发第一个Android应用使用Android Studio开发Android应用非常方便,因为Android Studio会为我们自动完成许多工作。使用Android Studio...

2022-02-17 09:38:35 2700

原创 疯狂Android讲义(一)——第四部分

一.搭建Android开发环境在搭建Android开发环境之前,要先会搭建Java语言环境。想JDK的安装、环境配置、设置JAVA_HOME环境变量等。下面将从下载和安装 Android Studio开始讲起,详细介绍 Android开发、调试环境的安装和使用,这些内容是 Android开发的基础。按照目前开发环境的搭建步骤,接下来依次要完成如下事情。下载和安装 Android Studio,这是 Android开发的IDE。 通过 Android Studio在线下载 ...

2022-02-10 22:14:03 2777

原创 疯狂Android讲义(一)——第三部分(Gradle详解2)

一、本章内容:使用Gradle自动化构建项目(***)5.Gradle插件和java、application等插件前面已经介绍了 Gradle的任务和属性,但如果一份构建文件内所有的任务和属性每次执行都需要开发人员重新编写,而且一些复杂的任务总需要开发员重新定义任务类型,那这样Gradle不就和Ant差不多了吗?这就完全体现不出 Gradle的优势了。为了简化开发人员编写构建文件的工作, Gradle提供了插件机制。开发 Gradle插件很...

2022-01-30 21:46:25 3847

原创 疯狂Android讲义(一)——第二部分(Gradle详解1)

备注:下方的*代表这章的重要性。一、本章内容:使用Gradle自动化构建项目(***)Gradle是新一代的自动化构建工具。如果读者熟悉Ant、 Maven则可以把Gradle理解为升级版的Ant或 Maven, Gradle可以完成Ant、Maven的所有工作,甚至整合Ant或Maven的功能。1.下载和安装Gradle本书之所以要介绍 Gradle,是因为 Android Studio所采用的构建工具就是 Gradle。早期 And...

2022-01-25 14:35:39 4169

原创 疯狂Android讲义(一)——第一部分

.备注:下方的*代表这章的重要性。一、本章内容:1.Android的发展与简介Android并不是Google创造的,而是Android公司创造的,该公司的创始人是Andy Rubin。该公司后来被Google收购,而Andy Rubin也成为了Google公司的Android产品负责人。Google于2007年11月5日发布了Android 1.0手机操作系统,但是并没有得到广泛的市场支持。2009年5月.Gooole发布了Andro...

2022-01-11 19:55:40 3723

原创 疯狂Android讲义(第四版)——绪论

一、本节要点Java快搞完了,接着搞Android。都是熟悉的味道,接下来直接步入主题吧。本书是《疯狂Android 讲义》的第4版,本书真正基于最新的 Android 9.x,而且本书采用了Google推荐的IDE: Android Studio作为开发工具。书中每个案例都已对Android 9.x进行了适配,完美支持Android 9.x平台的运行。此外,相比第3版,本书大体涉及如下更新内容。新增了约束布局的介绍。 删除了 Android不再推荐的RelativeLayout、GridV

2022-01-09 22:30:08 5235

原创 加载Fragment引发OOM导致程序崩溃

问题:最近做一个小型app,做好界面加载时出现如下图错误:解决方法:因为图片消耗太大了,超出了系统分配给应用的内存,从而导致了oom,解决方案也很简单,在manifest.xml中添加一个属性:android:largeHeap="true"问题是解决了,可是加载变慢了很多!!!接着解决:...

2021-12-09 22:36:54 2162

原创 ScrollView问题:子布局无法适配父容器

在scrollview下加入的组件无论如何也不能自动扩展到屏幕高度,最后在这里找到解决办法,给ScrollView设置一个属性就可以解决了。Found the solution myself in the end. The problem was not with theLinearLayout, but with theScrollView(seems weird, considering the fact that theScrollViewwasexpanding, while ...

2021-12-06 02:22:23 3905

原创 Android设置button背景颜色无法改变

如图所示:我设置的登录按钮是蓝色底的,但是显示的是紫色这是由于新版本的主题问题导致的解决方法:修改app/res/values目录下的themes.xml修改成:成果:按钮恢复预设状态...

2021-11-29 01:25:44 4307 5

原创 Android Studio执行在vivo手机上出现“应用程序安装异常(-15)”

Android Studio在vivo手机执行程序时出现“应用程序安装异常(-15)”出误。如图:设备信息:Android Studio版本3.0.1,出现的错误信息为:翻译:解决办法:打开gradle.propeities文件,在最底下加入:android.injected.testOnly=false即可正常运行。...

2021-11-28 19:54:35 6055 5

原创 string resource id #0x0的问题

原因:在setText()方法中设置了一个int型变量,在运行的时候就会报String resource id #0x0的错误,解决方法:是把int型数据改成String类型,如setText(5+"");因为这样Android系统就会主动去资源文件当中寻找, 但是它不是一个资源文件ID, 所以就会报出这个bug。...

2021-11-27 01:33:08 5200

原创 私厨菜谱app的设计与实现(六)

一.个人中心的设计与实现 1.个人中心的布局设计二.代码实现 1.fragment_three.xml<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="m...

2021-11-26 23:45:17 5035

原创 私厨菜谱app的设计与实现(五)

一.搜索界面的设计与实现 1.搜索界面的布局设计 2.结果界面的布局设计 3.搜索界面的功能设计二.布局代码部分 1.fragment_one.xml补充一个搜索栏<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and...

2021-11-25 09:48:12 3656

原创 私厨菜谱app的设计与实现(四)

一.菜谱收藏界面的设计与实现 1.项目简介 2.“收藏”/”取消收藏”按钮布局设计 3.1、数据库的设计 3.2、数据库的操作 4.收藏界面的布局设计二.界面代码部分 1.recipe_detail.xml加入一个Button控件即可。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:...

2021-11-24 01:41:53 3225

原创 私厨菜谱app的设计与实现(三)

一.详情界面的功能设计对上一篇文章的补充1.要做到信息传输,需要序列化操作 //在JsonToBean中的所有类加上接口implements Serializable //intent.putExtra("data", (Serializable) courseInfo);2.新加的RecipeDetailActivity要在AndroidManifest.xml进行手动添加 //<activity android:name=".RecipeDetailAc...

2021-11-23 19:26:30 3520 2

菜谱app源码:参考学习用

菜谱app源码。 目前万维宜源的数据api不可用,可以换成免费的:天气数据 想学习的,对照博客观看即可,这份源码只是辅助。

2022-05-31

AndroidMPChart资源jar包

AndroidMPChart资源jar包

2022-05-13

Android SQLite数据库.zip

拥有Android SQLite数据库增删改查的基本代码讲解

2021-09-01

简易视频播放器pdf文档+源码.zip

7.2-简易视频播放器的设计与实现

2021-08-29

简易音乐播放器.zip

Android软件制作,学习需要

2021-08-29

RecyclerView.zip

想了解RecyclerView的可以免费下载了解

2021-08-11

ListView.zip

适合Android入门人群

2021-08-09

5.3 调用摄像头和相册——案例文档.pdf

学习调用摄像头和打开相册的简单案例

2021-07-30

空空如也

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

TA关注的人

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