自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 创建淡入淡出动画

淡入淡出动画(也称为“叠化”)逐渐淡出一个 View 或 ViewGroup,同时淡入另一个。此动画适用于您希望在应用中切换内容或视图的情况。此处显示的淡入淡出动画使用 ViewPropertyAnimator,适用于 Android 3.1(API 级别 12)及更高版本。以下是从进度指示器切换到某些文字内容的淡入淡出示例。淡入淡出动画创建视图首先,您需要创建两个要淡入淡出的视图。以下示例创建了一个进度指示器和一个可滚动的文本视图:<?xml version="1.0" encoding

2020-09-08 20:22:11 341

原创 布局

管理界面状态:分而治之您可以通过在各种类型的持久性机制之间划分工作,高效地保存和恢复界面状态。在大多数情况下,这些机制中的每一种都应存储 Activity 中使用的不同类型的数据,具体取决于数据复杂度、访问速度和生命周期的权衡:本地持久性存储:存储在您打开和关闭 Activity 时不希望丢失的所有数据。示例:歌曲对象的集合,其中可能包括音频文件和元数据。ViewModel:在内存中存储显示关联界面控制器所需的所有数据。示例:最近搜索的歌曲对象和最近的搜索查询。onSaveIns.

2020-09-06 23:52:53 346

原创 任务和返回堆栈

任务是用户在执行某项工作时与之互动的一系列 Activity 的集合。这些 Activity 按照每个 Activity 打开的顺序排列在一个返回堆栈中。例如,电子邮件应用可能有一个 Activity 来显示新邮件列表。当用户选择一封邮件时,系统会打开一个新的 Activity 来显示该邮件。这个新的 Activity 会添加到返回堆栈中。如果用户按返回按钮,这个新的 Activity 即会完成并从堆栈中退出。通过以下视频可以大致了解返回堆栈的工作原理。会作为堆栈的根 Activity 打开。在当前 A

2020-09-06 23:48:17 258

原创 进程和应用生命周期

在大多数情况下,每个 Android 应用都在各自的 Linux 进程中运行。当需要运行应用的一些代码时,系统会为应用创建此进程,并使其保持运行,直到不再需要它且系统需要回收其内存以供其他应用使用。应用进程的生命周期并不由应用本身直接控制,而是由系统综合多种因素来确定的,比如系统所知道的正在运行的应用部分、这些内容对用户的重要程度,以及系统中可用的总内存量。这是 Android 非常独特的一个基本功能。应用开发者必须了解不同的应用组件(特别是 Activity、Service 和&n

2020-09-06 23:41:25 535

原创 ConstraintLayout

Relative positioning is one of the basic building blocks of creating layouts in ConstraintLayout. Those constraints allow you to position a given widget relative to another one. You can constrain a widget on the horizontal and vertical axis:相对定位是约束布局中创建.

2020-09-06 09:35:10 182

原创 布局和绑定表达式

借助表达式语言,您可以编写表达式来处理视图分派的事件。数据绑定库会自动生成将布局中的视图与您的数据对象绑定所需的类。数据绑定布局文件略有不同,以根标记 layout 开头,后跟 data 元素和 view 根元素。此视图元素是非绑定布局文件中的根。以下代码展示了示例布局文件:option+enter<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/

2020-09-05 10:13:04 193

原创 LiveData

LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。使用 LiveData 的优势使用 LiveData 具有以下优势:请按照以下步骤使用 LiveData 对象:创建 LiveData 实例以存储某种类型的数据。这

2020-09-05 10:12:17 128

原创 ViewModel

实现 ViewModel架构组件为界面控制器提供了 ViewModel 辅助程序类,该类负责为界面准备数据。在配置更改期间会自动保留 ViewModel 对象,以便它们存储的数据立即可供下一个 Activity 或 Fragment 实例使用。例如,如果您需要在应用中显示用户列表,请确保将获取和保留该用户列表的责任分配给 ViewModel,而不是 Activity 或 Fragment,如以下示例代码所示: public class MyView

2020-09-05 10:11:23 209

原创 保存界面状态

管理界面状态:分而治之您可以通过在各种类型的持久性机制之间划分工作,高效地保存和恢复界面状态。在大多数情况下,这些机制中的每一种都应存储 Activity 中使用的不同类型的数据,具体取决于数据复杂度、访问速度和生命周期的权衡:本地持久性存储:存储在您打开和关闭 Activity 时不希望丢失的所有数据。示例:歌曲对象的集合,其中可能包括音频文件和元数据。ViewModel:在内存中存储显示关联界面控制器所需的所有数据。示例:最近搜索的歌曲对象和最近的搜索查询。onSaveIns.

2020-09-05 10:10:53 177

原创 GitHub使用

删除库1.登陆GitHub进入仓库2.进入库3.删除库1、GitGit安装官网下载GitGit工作原理(图)Workspace:工作区 (目录)Index / Stage:暂存区(git add xxx.txt)Repository:仓库区(或本地仓库|版本库)(隐藏的.git目录)(git commit)Remote:远程仓库(中央服务器仓库) (码云(GItee),GitHub , GitLab)二、Git命令基本命令cd:进入pwd:查看当前文件m

2020-09-04 11:34:55 105

原创 常见的几种加密算法比较

一、加密的基本概念“加密”,是一种限制对网络上传输数据的访问权的技术。原始数据(也称为明文,plaintext)被加密设备(硬件或软件)和密钥加密而产生的经过编码的数据称为密文(ciphertext)。将密文还原为原始明文的过程称为解密,它是加密的反向处理,但解密者必须利用相同类型的加密设备和密钥对密文进行解密。数据存储和传输存在的风险:加密的基本功能包括:1.防止不速之客查看机密的数据文件;2.防止机密数据被泄露或篡改;3.防止特权用户(如系统管理员)查看私人数据文件;4.使入侵者不能轻易

2020-09-04 10:58:48 7632 1

原创 java算法

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:关于时间复杂度:平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序。O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数。 希尔排序

2020-09-04 10:20:05 204

原创 Mac终端命令

Mac电脑安装程序,打开允许任何来源的方法,在终端执行命令行即可。打开命令:sudo spctl --master-disable 关闭命令:sudo spctl --master-enable Mac终端打开文件1.打开文件夹的命令很简单,使用 open + 文件夹的路径例如:open ~/downloads2.打开前往中的前往文件夹如下图3.打开资源库按住Option打开前往就可以看到资源库文件定位cd进入到某个文件路径下cd ~/Desktop进入桌面位

2020-09-03 13:58:08 1770

原创 Mac版mysql 安装

安装mysql下载mysql。我下载的是:mysql-8.0.11-macos10.13-x86_64.dmg双击打开mysql-8.0.11-macos10.13-x86_64.dmg,然后双击mysql-8.0.11-macos10.13-x86_64.pkg一路点击继续,傻瓜式安装,没什么好说的此处选择“Use Legacy Password Encryption”,否则使用navicat连接mysql的时候,会报无法加载身份验证的错误。为“root”用户设置一个密码安装完成

2020-09-03 13:56:44 138

原创 Application自动初始化(初始化器)

lib无需在App进行初始化无需依赖自动初始化导入初始化器依赖 implementation 'androidx.startup:startup-runtime:1.0.0-alpha01'在lib清单列表中注册该初始化器<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package.

2020-09-03 13:54:48 239

原创 通过注解在编译器前生成代码

APT 技术Java注解处理器使用详解注解处理器运行是不会被打包apk,是在运行前生成代码否则会发生jar冲突,手机系统已经存在JavaPoet是一款可以自动生成Java文件的第三方依赖需求当前lib需要得到app参数时使用APT技术通过注解在编译器前生成代码来获取app中的参数1.自定义注解根据需要得到的参数定义注解(可以是TYPE,PARAMETER,PACKAGE,LOCAL_VARIABLE)导入依赖 annotationProcessor 'com.google

2020-09-03 13:52:26 296

原创 封装三方依赖步骤

1.打开Project找到两个gradel文件2.项目根目录创建version.gradel文件3.在项目gradel导入version.gradel4.配置version.gradel5.在app gradel 引入依赖

2020-09-03 11:58:29 170

原创 Java定义 进制变量

Java中数值变量的声明:二进制变量的声明以0b为前缀;八进制变量的声明以0为前缀;十六进制变量的声明以0x为前缀。二进制、八进制、十六进制数值在运用时候自动转为对应的十进制的值public static void main(String[] args) { int a = 0b11; //声明二进制变量 int b = 011; //声明八进制变量 int c = 11; //声明十进制变量 int d = 0x11; //声明十六

2020-09-03 11:57:35 810

原创 解决RecycleView非用户本意关闭

思路* 当RecycleView所在的进程非正常关闭时* 使用onSaveInstanceState保存当前RecycleView第一个可见条目和距离屏幕的高度* 当界面在此打开得到上次保存的状态即可 /* 解决RecycleView非用户本意关闭 */ @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInsta

2020-09-03 11:52:36 75

原创 RecycleView指定滑动指定位置自动播放视频

思路11.获取屏幕中要播放的中心点//限定范围为屏幕一半的上下偏移180 int playTop = CommonUtil.getScreenHeight(getActivity()) / 2 - CommonUtil.dip2px(getActivity(), 180); int playBottom = CommonUtil.getScreenHeight(getActivity()) / 2 + CommonUtil.dip2px(getActivity(),

2020-09-03 11:47:44 981

原创 Service

A Service is an application component representing either an application’s desire to perform a longer-running operation while not interacting with the user or to supply functionality for other applications to use. Each service class must have a correspond.

2020-09-03 10:37:32 74

原创 Android Studio debug 进阶

Love Googledebug过滤不需要的信息Show packageShow processshow date time你还可以使用日志过滤器log taglog messagepackage name折叠无用的信息折叠无用信息展开信息让运行中的app快速进入debug(Attach Debugger to Android Process)拖动断点让debug继续向下运行在debug中添加断点条件比如我们在一个for循环中只想要i==5的

2020-09-03 01:12:28 73

原创 开发思想: 对象复用

The ANDROID recommended application architecture recommends breaking code into multiple classes to benefit from the principle of Separation of concerns, where each class of the hierarchy has a defined responsibility. This requires wiring together more and.

2020-09-02 13:46:49 270

原创 ViewModel

ViewModel is a class that is responsible for preparing and managing the data for an [Activity] or a [Fragment].ViewModel 是一个类,负责准备和管理活动或片段的数据。它还处理 Activity/Fragment 与应用程序其余部分的通信(例如调用业务逻辑类)。A ViewModel is always created in association with a scope (a f.

2020-09-02 13:44:32 156

原创 使用Lifecycle全局监听Fragment的生命周期

1.得到Lifecycle对象 public void setLifecycleOwner(LifecycleOwner lifecycleOwner) {//设置监听 this.mLifecycleOwner = lifecycleOwner; mLifecycleOwner.getLifecycle().addObserver(this); }2.通过Lifecycle的对象// 通过Lifecycle监听生命周期 //条件注解监听具.

2020-09-02 13:43:25 2591

原创 接口化编程

使用接口编程,提共所需的方法让类取实现。避免伴随类的生成。降低代码的耦合度解决接口冲突当两个接口同时提供了默认方法,必须覆盖这个方法来解决冲突案例:public class SameInterface implements Person,Named{ public static void main(String[] args) {}@Overridepublic String getName() { // TODO Auto-generated method stub retur

2020-09-02 12:17:36 459

原创 分析堆栈轨迹

调试应用通常需要使用堆栈轨迹。每当您的应用因为错误或异常而崩溃时,都会生成堆栈轨迹。您还可以使用 Thread.dumpStack() 等方法输出应用代码中任意位置的堆栈轨迹。在连接的设备上,当您的应用在调试模式下运行时,Android Studio 会在 logcat 视图中输出并突出显示堆栈轨迹,如图 1 所示。有时,您需要分析错误报告中与您分享的堆栈轨迹,而不是您在调试时发现的堆栈轨迹。例如,您可能正在通过 Google Play 管理中心或一些其他工具(

2020-09-02 12:14:28 287

原创 使用 Memory Profiler 查看 Java 堆和内存分配

Memory Profiler 是 Android Profiler 中的一个组件,可帮助您识别可能会导致应用卡顿、冻结甚至崩溃的内存泄露和内存抖动。它显示一个应用内存使用量的实时图表,让您可以捕获堆转储、强制执行垃圾回收以及跟踪内存分配。要打开 Memory Profiler,请按以下步骤操作:依次点击 View > Tool Windows > Profiler(您也可以点击工具栏中的 Profile 图标 从 And

2020-09-02 12:13:40 392

原创 添加构建依赖项

如需向您的项目添加依赖项,请在 build.gradle 文件的 dependencies 代码块中指定依赖项配置,如 implementation。例如,应用模块的以下 build.gradle 文件包含三种不同类型的依赖项:apply plugin: 'com.android.application'android { ... }dependencies { // Dependency on a local library module implementation project(

2020-09-02 12:12:54 468

原创 启用离线模式

启用离线模式如果网络连接速度比较慢,那么在 Gradle 尝试使用网络资源解析依赖项时,构建时间可能会延长。您可以指示 Gradle 仅使用已缓存到本地的工件,从而避免使用网络资源。如需在使用 Android Studio 构建项目时离线使用 Gradle,请按以下步骤操作:依次点击 File > Settings(在 Mac 上,则依次点击 Android Studio > Preferences),打开 Preferences 窗口。在左侧窗格中,依次点击 Build, Execut

2020-09-02 12:10:39 506

原创 将可绘制对象拖放到布局中

您可以将可绘制对象从 Resource Manager 直接拖放到布局中。将资源放到布局上时,Resource Manager 会为该可绘制对象创建相应的 ImageView,如动画 1 所示:动画 1:将可绘制对象拖放到 Design 视图中的布局上。您也可以直接拖放到布局的 XML 上,如动画 2 所示:...

2020-09-02 12:00:23 76

原创 GitHub Desktop合并代码

2.3.4.

2020-09-02 11:46:52 1871

原创 设计思想与优化

♪优质代码优质代码应该是简洁而不是简化,四个标准是可用、可读、可维护、可扩展,这就离不开代码的设计思想与代码优化。简洁的代码是有力的,它不应该包含不必要的变量、语法结构,不要求程序员一定要把代码写的最短,或者省略很多细节,而是要求代码中出现的每个变量、函数都能清晰、直观的传达我们的意图和想法。代码应该是简洁的,因为简洁的代码更容易写(通常代码量更少)、更容易读、更好维护,简洁的代码就是更...

2020-02-25 22:28:27 111

原创 成为Android的一员

1.Android基础四大组件七大布局控件:基本控件、自定义控件、质感设计控件线程和进程三种动画事件处理数据存储网络基础数据库开源框架(网络、推送、图片、分享、事件、异步)2.Android进阶资源管理和打包优化NDK开发源码阅读(几个流行的三方框和SDK源码)3.热门技术热更新、热修复组件化开发Hook技术注解开发事件总线**混合开发HTMLwee...

2020-02-25 22:20:12 67

原创 Android 常用接口

接口上传字符串https://api.apiopen.top/getJoke{“page”:“1”,“count”:“2”,“type”:“video”}验证码接口:http://yun918.cn/study/public/index.php/verifyget 无参 返回结果:{‘code’:200,‘ret’:‘success’,‘data’:‘qosb’}注册接口:...

2020-02-25 22:15:50 2317

animation-samples.zip

Google官方动画Demo///////////////////////////////////////

2020-09-02

views-widgets-samples.zip

Google 官方动画demo///////////////////////////////////////////////////////////////

2020-09-02

空空如也

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

TA关注的人

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