11 张作为

已隐藏 android开发工程师

耐得住寂寞,才能守得住繁华

等级
TA的排名 4w+

Leetcode: 两数相加

题目:给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...

2020-01-12 15:38:08

Leetcode: 回文数

题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...

2020-01-11 15:33:57

Leetcode: 整数反转

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−,− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解法: ...

2020-01-11 15:06:09

Leetcode:两数之和

题目:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解...

2019-12-22 16:16:01

Android 事件分发机制(未完成)

1. 概述在 Android 开发中,会遇到事件冲突的情况,点击、滑动等事件在叠加的 View 中造成了冲突。而要解决这类问题就必须了解Android 的事件分发机制。此篇博客记录下相关的一些原理,方便有需要的时候复习下。2. 实例当用户触摸屏幕时,将产生点击事件(Touch 事件),Touch事件相关细节被封装成MotionEvent。对象主要发生的 Touch有:MotionE...

2019-11-10 17:28:20

Android Jetpack 之 Paging(未完成)

1.概述The Paging Library helps you load and display small chunks of data at a time. Loading partial data on demand reduces usage of network bandwidth and system resources.这是 Google 对于 Paging 的简介,可以这...

2019-11-07 22:28:32

Android Bitmap 的优化

1. 概述Android 中的图片是以 Bitmap 方式存在的,绘制的时候也是 Bitmap,直接影响到app运行时的内存。通过 ImageView 来显示图片,很多时候 ImageView 并没有原始图片的尺寸那么大,这个时候把整个图片加载进来后再设置给 ImageView,显然是没有必要的,因为 ImageView 根本没办法显示原始图片。可以将图片缩小后再加载进来,这样图片既能在 Im...

2019-11-02 20:52:28

Android Jetpack 之 Navigation

1. Navigation 的定义Navigation 是指支持用户导航、进入和退出应用中不同内容片段的交互。Android Jetpack 的导航组件可帮助实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式,该组件均可应对。导航组件还通过遵循一套既定原则来确保一致且可预测的用户体验。导航组件由以下三个关键部分组成:导航图:在一个集中位置包含所有导航相关信息的 X...

2019-10-25 04:49:28

Android Jetpack 之 DataBinding

1.DataBinding通过声明的方式,将 xml 布局中的组件与程序中的源数据进行绑定的框架库。当数据变化的同时组件能够及时同步并更新,减少Activity 中 View 的定义以及初始化,代码更加简洁。2.DataBinding 的使用2.1 在项目中对应 module 的 build.gradle 文件中添加 dataBinding 可用的配置:android { ...

2019-10-24 13:14:30

Android Jetpack 之 LiveData

1. LiveData是什么LiveData is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, f...

2019-10-24 00:11:04

Android Jetpack 之 LifeCycle

1. JetpackJetpack 是一套库、工具和指南的集合,并不是一个框架或者组件。Jetpack 包含与平台 API 解除捆绑的 androidx.*软件包库。Android Jetpack 组件是库的集合,这些库是为协同工作而构建的,不过也可以单独采用,可全部使用,也可混合搭配!Lifecycle 就是 Android Jetpack 组件之一。2.LifecycleL...

2019-10-23 20:04:29

FFmpeg 的编译

之前在投简历很多公司都做短视频相关的,都要求懂FFmpeg,抖音真的带动了一大波短视频相关岗位哈。下面就记录下使用的相关步骤:1.编译环境用的是我买的一个阿里云。也可以在Windows下安装VMWare搭建虚拟机。可以参考我之前写的文章:VMware虚拟机搭建。2.准备 NDK下载:wget https://dl.google.com/android/repositor...

2019-10-20 14:22:16

Android 自定义控件:继承View

在自定义控件中,一种类型就是继承自 View,通过画笔,从无到有画出一个符合需求的控件。在工作中,相机模块中,需要做一个点击后的聚焦框,就是通过继承 View,从无到有画出来的。实现代码如下:package cn.zzw.customview.custom.view;import android.content.Context;import android.graphics.Can...

2019-10-19 22:42:37

Android 系统启动流程(二)

1. 前言在Android 系统启动流程(一)中,描述了 Android 系统启动流程中从按下 Power 到 Zygote 进程的启动。最终 Zygote 启动了 SystemServer,并调用了 SystemServer 中的 main 方法,这里继续分析启动 SystemServer 后的流程。2.SystemServer 源码SystemServer 的入口为 main ...

2019-10-19 00:32:36

Android 系统启动流程(一)

1. 前言看过很多关于 Android 系统启动流程的博客,对此都是半知半解。坚信只有自己将流程走一遍,才能有更进一步的认知,以及更深的理解。此篇文章算是自己在梳理 Android 系统启动流程所做的记录。由于自己对 C 以及 C++ 了解的不足,这里只从 Java 层开始追。此流程是基于 Android 9.0 的源码做出的记录,具体源码链接:http://androidxref.com/9...

2019-10-16 20:21:00

Serializable 和 Parcelable 的用法和区别

1. Serializable 和 Parcelable 的用法Android 开发过程中,需要对对象进行存储和传递,而对于对象的存储传递就需要用到Serializable 和 Parcelable 对对象进行序列化和反序列化。1.1Serializable 的使用对象类实现Serializable 接口,并定义serialVersionUID:package cn.zz...

2019-10-13 18:49:30

LruCache 源码解析

1. 概述对于Android 开发者,LruCache 肯定不陌生,几乎所有的图片缓存框架都会用到它来实现内存缓存等,可见LruCache 在 Android 开发中的重要性。LRU 是Least Recently Used 的缩写,近期最少使用的意思。当我们进行缓存的时候,如果缓存满了,会先淘汰使用最少的缓存对象。因为在 Android 中为每个APP分配的内存大小有限,而 LruCa...

2019-10-07 22:29:19

LinkedHashMap 源码解析

1. 概述大部分的 Android 开发人员对LinkedHashMap 的认识,应该都是从 Lrucache 里面的来的吧。Lrucache 只所以实现开始访问排序,底层原理就是靠的LinkedHashMap。LinkedHashMap 的例子如下:package zzw.cn.testlinkedhashmap;import java.util.Iterator;impor...

2019-10-07 09:11:48

Android 自定义控件:Path

在 Canvas 的学习中,只能画一些比较规则的图形,如方形,圆,弧线等。如果要画一些比较复杂的图形,只要计算好坐标,就需用到 Path 类就能做到,以及著名的贝塞尔曲线也是用 Path 来实现。这里列举下 Path 常用的方法。画笔等相关设置为: private void init() { mPaint = new Paint(); mPaint....

2019-10-05 18:55:28

Android 自定义控件:Canvas

在 Android 自定义控件中,如果继承 View,需要进行绘图,就需要用到Canvas 。Canvas 称为画布,能够在上面绘制各种东西,是 Android 平台 2D 图形绘制的基础。当创建自定义View类时候,继承 View,就可以重写方法 onDraw(),在方法中的参数就是 Canvas 对象: @Override protected void onDraw(Ca...

2019-10-05 14:08:10

查看更多

勋章 我的勋章
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。