Android高级
文章平均质量分 82
ElminsterAumar
Love magic for itself.
I ain't never backin' down (come and step in the plate).
For my city for my town (I'll do whatever it takes).
展开
-
程序员的进阶之路
在编程之余,有时候我就在想,什么样的程序员属于高级程序员呢?或者说,高级程序员有哪些特性呢?工作年限一定不是一个关键的指标,许多工作多年的程序员依然写不出优雅的程序。无论是在Android开发还是其他领域,高级程序员一定是勤奋的,可以快速地掌握大量的新技术、新框架,不仅懂得原理,还能把新的技术落地到公司的产品中去。这是衡量程序员工作能力的一个重要标准,那么怎样才能将技术运用自如呢?唯有实践。基于此...原创 2018-07-24 16:13:37 · 3361 阅读 · 4 评论 -
React Native 的 Navigator 组件使用方式
React Native的编程思想类似于iOS, 导航栏也使用Navigator作为标识, 类似于Android的ActionBar. 导航栏作为最重要的应用组件之一, 除了处理页面导航功能以外, 还会提供页面栈的管理, 管理页面的跳入和跳出. 本文介绍一下 Navigator 组件的使用方式. 更多: http://www.wangchenlong.org/本文源码的GitHub下载地址原创 2016-04-28 16:46:49 · 7371 阅读 · 0 评论 -
在正式提交测试前的代码检查
正式提交工作, 就意味着写的代码归档, 会影响其他共同开发者, 也会影响项目, 因此, 有些东西就必须要检查, 不要凭着直觉去做. 作为一个优秀的程序员, 最重要的就是仔细, 当然也会适用于各行各业. 欢迎Follow我的GitHub: https://github.com/SpikeKing功能检测功能列表. 确保所有功能都已经开发, 测试全部测试用例通过.检测存储类功能. 在版本更新时原创 2016-04-28 16:43:37 · 3338 阅读 · 1 评论 -
使用 Rx 的计算和最大化线程处理并行任务
随着手机的发展, 其性能已经与电脑越来越接近, 也会有一些复杂耗时的并行任务需要处理, 对于异步与并行, RxAndroid是我们的最佳选择. 那么让我来使用实例介绍一下吧.在计算调度器Schedulers.computation()中, 可以并行处理任务, 核数是Rx根据手机CPU定制的, 在我的华为P8手机(8核)中, 使用的是8个线程. 但是根据Java线程的最佳配置而言, 8核最佳是9个线程原创 2016-04-28 16:29:38 · 3766 阅读 · 0 评论 -
提取应用的签名和包名
欢迎Follow我的GitHub, 关注我的CSDN, 未经授权, 禁止转载.Android应用在使用第三方的库时, 可能需要申请密钥, 表明应用身份, 如高德定位SDK等. 应用签名(printcert)是公开的, 只要下载到Apk包, 就可以公开提取. 签名中包含MD5, SHA1, SHA256. 应用唯一性就是表现为签名+包名, 就像人的指纹一样重要, 是确定应用属性的重要信息, 也是应用原创 2016-04-28 16:25:26 · 12118 阅读 · 0 评论 -
实践移动端的Flux架构
欢迎Follow我的GitHub, 关注我的CSDN, 未经授权, 禁止转载.任何架构最终目的都是让程序更加有序, 功能便于扩展, Bug容易追踪.Facebook使用Flux架构来构建客户端的Web应用. Flux架构并不是为移动端设计的, 但是我们仍然可以采用这个思想在Android端使用. Flux是数据驱动型架构, 在以数据为核心的场景中使用非常合适, 不过Facebook好像把Flux架原创 2016-04-28 16:19:32 · 1843 阅读 · 0 评论 -
实现卡片翻转的动画效果
欢迎Follow我的GitHub, 关注我的CSDN.在Android设计中, 经常会使用卡片元素, 正面显示图片或主要信息, 背面显示详细内容, 如网易有道词典的单词翻转和海底捞的食谱展示. 实现卡片视图非常容易, 那么如何实现翻转动画呢? 在TB吃海底捞时, 使用Pad点餐, 发现应用的食谱功能使用卡片控件, 就准备和大家分享一下实现方式. 有兴趣的朋友可以去海底捞看看:)本文源码的Gi原创 2016-02-27 20:12:59 · 12700 阅读 · 8 评论 -
使用CircularReveal动画效果切换页面
欢迎Follow我的GitHub, 关注我的CSDN.Android的Material Design设计理念, 带来很多绚丽的动画效果. 在页面切换中, 最常用的就是SharedElementTransition, 通过设置控件的变换方式, 在进入时把控件变换为页面, 在退出时, 把页面变换为控件, 同时, 可以设置控件移动的轨迹. 这样的控件, 可以应用于消息通知, 或者广告显示, 提供非常好的原创 2016-02-27 20:17:41 · 7888 阅读 · 4 评论 -
Android开发Tips(5)
欢迎Follow我的GitHub, 关注我的CSDN.介绍关于Android的一些有趣的小知识点. 本文是第五篇了, 几乎一周一篇, 欢迎阅读. 其余第一篇, 第二篇, 第三篇, 第四篇.1. 模拟系统回收Activity.使用adb命令可以模拟Android系统自动回收Activity进程, 可以调试这个效果. 单进程adb shell am force-stop [包名]多进程adb sh原创 2016-02-26 22:02:39 · 2716 阅读 · 0 评论 -
炫丽的朋友圈视频滚动播放功能
博客: http://www.wangchenlong.org/在应用的信息流中, 用户会分享视频, 连续展示, 这就需要处理视频滚动播放. 然而, 在列表视图(RecyclerView)中使用MediaPlayer播放视频时, 会产生一些问题, 即无法同步控制视频的播放和停止.原创 2016-01-30 13:27:29 · 6163 阅读 · 9 评论 -
使用 RxAndroid 处理异步任务
博客: http://www.wangchenlong.org/Rx是响应式编程的意思, 本质是观察者模式, 是以观察者(Observer)和订阅者(Subscriber)为基础的异步响应方式. 在Android编程时, 经常会使用后台线程, 那么就可以使用这种方式.原创 2015-11-08 20:54:35 · 6470 阅读 · 3 评论 -
Kotlin(2): 优雅地扩展类的方法和属性
欢迎Follow我的GitHub, 关注我的CSDN. 个人博客: http://www.wangchenlong.org/, 最新内容.Kotlin由JetBrains公司推出, 是兼容Java的一种编程语言, 也可以用来开发Android. Kotlin的代码简洁, 非常优雅, 对于Android也是非常友好, 拥有大量新语言特性, 适合开发. 分为两个部分: 基础参考: 初探与集成A原创 2016-03-08 09:34:09 · 7359 阅读 · 0 评论 -
Vectors(2): 绘制优美的路径动画
欢迎Follow我的GitHub, 关注我的简书.时代在发展, 技术在进步, Android的Vector图像的时代已经到来. 在Google的最新支持库v23.2中, AppCompat类已经使用Vector图像, 使得AAR包减少9%, 大约70KB, 惠及所有高版本的应用. 当然我们也可以使用Vector, 瘦身应用. Vector图像是SVG格式在Android的表现形式. SVG图像适应原创 2016-03-08 09:29:12 · 2589 阅读 · 0 评论 -
全面解析Activity启动模式(LaunchMode)
欢迎Follow我的GitHub, 关注我的CSDN.在Android应用中, Activity是最核心的组件, 如何生成一个Activity实例, 可以选择不同的启动模式, 即LaunchMode. 启动模式主要包括: standard, singleTop, singleTask, singleInstance. 标准模式在每次启动时, 都会创建实例; 三种单例模式, 会根据情况选择创建还是复原创 2016-02-19 15:12:33 · 3213 阅读 · 6 评论 -
Java进化? Kotlin初探与集成Android项目
欢迎Follow我的GitHub, 关注我的CSDN.Kotlin是基于JVM的编程语言, 由JetBrains公司开发, 目前已经开源. IntelliJ IDEA, PyCharm, Android Studio等IDE, 就是出自于JetBrains公司.介绍: Statically typed programming language for the JVM, Android and原创 2016-02-15 16:47:09 · 2864 阅读 · 0 评论 -
防止密码输入错误, 密码明文显示功能
欢迎Follow我的GitHub, 关注我的CSDN.在使用App的时候, 首次都需要输入密码. 有些人为了安全性, 密码较长, 偶尔会输入错误; 有些人忘记了密码, 需要多次尝试, 但又不知道是输入错误, 还是密码错误, 这些都会影响用户体验.这一点, 移动端设计师们早有准备, 因为手机的私密性较强, 在输入密码时, 可以提示用户显式输入, 增强准确性, 提升体验. 这些当然是有成本的, 需要额原创 2016-02-19 14:42:25 · 5873 阅读 · 7 评论 -
React Native 的 ES6 类写法与未定义错误
ES6, 即ECMAScript6, JavaScript的新标准, 书写更加规范, 代码更加优雅. React Native推荐使用ES6的类写法代替传统的模块, 即使用extends React.Component代替React.createClass. 本文介绍在ReactNative中ES6的写法, 与传统方法进行对比, 并解决未定义(undefined)错误. 更多: http://原创 2016-04-28 16:56:13 · 4466 阅读 · 0 评论 -
关于 Android 进程的简介
在Android系统中, 进程非常重要, 除了主进程运行App, 我们还可以使用其他进程处理独立任务.进程, 即Process. 进程间通信, 即IPC(Inter-Process Communication). 在Android中, 使用多进程只有一种方式, 在AndroidManifest中, 为四大组件(Activity, Service, Receiver, ContentProvider)......原创 2016-05-16 17:27:34 · 1485 阅读 · 0 评论 -
应用插件化实践--DroidPlugin的使用
欢迎Follow我的GitHub, 关注我的CSDN.随着应用的体积越来越大, 插件化也逐渐受到关注, 参考. 应用插件化把模块完全解耦, 使用下载更新的方式, 扩展应用, 是平台化类应用的必然选择. 国内很多公司实现了各式各样的方法, 360的DroidPlugin是比较有意思的一个, 使用预占位的方式注册四大组件, 实现热更新, 参考, 也可以直接读源码理解实现逻辑.Talk is cheap原创 2016-01-16 13:29:12 · 6540 阅读 · 11 评论 -
为什么手机无法运行应用? Values之谜
欢迎Follow我的GitHub, 关注我的CSDN, 精彩不断!在GitHub上Clone的某开源Android项目, 下载配置, 完成构建, 在手机上可以安装, 但是无法运行. 项目的编译版本(compileSdkVersion)是25(7.1), 最低的兼容版本(minSdkVersion)是19(4.4), 手机的系统版本是21(5.0), 已经满足应用的最低运行条件. 然而, 在相同系统原创 2017-03-31 11:24:35 · 3028 阅读 · 2 评论 -
神奇"HTTPS重定向网页"在哪里?
欢迎Follow我的GitHub, 关注我的简书.我还没有看过J. K. 罗琳的”神奇动物在哪里”, 但是遇到过”神奇HTTPS重定向网页在哪里”, 这是一个关于WebView的故事. 在Android项目中, 为了更好地显示HTML网页, 必然需要重写WebView, 在其中添加一些默认属性. 当遇到HTTPS重定向网页时, 我们需要格外注意, 否则WebView会无法显示.概念补充重定向: 分原创 2017-03-30 11:39:05 · 5591 阅读 · 0 评论 -
Emoji's World, 一起实现Emoji
欢迎Follow我的GitHub, 关注我的CSDN, 精彩不断!Emoji (絵文字 或 えもじ; 日语发音: [emodʑi]) 是日本无线通讯中所使用的视觉情感符号, 绘代表图形, 文字是图形本身的隐喻. 用于输入者表达情感信息, 如笑脸就代表开心, 蛋糕就代表食物等. 形象生动, 在文字中出现图片, 更容易实现情感的表述.Emoji起初只能在日本使用, 如今相当一部分的Emoji字符集已经原创 2017-03-30 11:32:34 · 2402 阅读 · 0 评论 -
使用DialogFragment实现底部弹窗布局
欢迎Follow我的GitHub, 关注我的CSDN. Android对于底部弹窗已经在23.2新的实现方式, 即BottomSheet. 然而对于低版本, 我们仍需使用DialogFragment. 底部弹窗与普通Dialog不同, 需要紧贴应用下部, 但本质仍是一个Fragment, 通过继承DialogFragment类, 定制不同样式的Fragment.本文源码的GitHub下载地址定制D原创 2016-06-30 18:26:52 · 14206 阅读 · 4 评论 -
实现AIDL接口的Binder连接池
欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录.Binder作为AIDL通信的核心, 在使用中经常需要重复利用, 动态管理AIDL接口. Binder连接池的主要作用是把Binder请求统一发送至Service执行, 即动态管理Binder操作, 避免重复创建Service. 本文使用两种简单的AIDL服务, 使用Binder连接池动态切换, 含有演示Demo.本文原创 2016-06-30 18:24:46 · 1910 阅读 · 1 评论 -
使用Socket处理跨进程的实时聊天
欢迎Follow我的GitHub, 关注我的CSDN. Socket是套接字, 网络通信经常使用的方法, 分为TCP和UDP两种模式, 需要网络权限, 当然也可以应用于跨进程通信. 本文通过一个简易的Android聊天程序, 熟悉Socket的使用方法.本文源码的GitHub下载地址逻辑: 客户端向服务端发送数据, 服务端收到后返回客户端数据.ServerSocket处理属于网络请求, 需要在其他原创 2016-06-30 18:20:12 · 3020 阅读 · 0 评论 -
使用ContentProvider跨进程共享数据
欢迎Follow我的GitHub, 关注我的CSDN. ContentProvider主要应用于进程间数据共享. 对于应用而言, 多进程并不会经常使用, 因而较少使用ContentProvider, 是最不常见的四大组件(Activity, Service, BroadcastReceiver, ContentProvider). 但是其优异的性能与便捷, 对于多应用共享数据而言, 非常重要, 比原创 2016-06-30 18:18:03 · 3226 阅读 · 0 评论 -
使用AIDL实现Android的跨进程通信
欢迎Follow我的GitHub, 关注我的CSDN.AIDL(Android Interface Definition Language), 即Android接口定义语言. 在Android中, AIDL是跨进程通信的主要实现方式. 我们同样也可以使用AIDL, 实现自己的跨进程方案. 本文介绍AIDL的使用方式.服务端: 创建Service服务监听客户端的请求, 实现AIDL接口.客户端: 绑原创 2016-06-30 18:09:06 · 1740 阅读 · 0 评论 -
Android 进程使用 Messenger 通信
欢迎Follow我的GitHub: https://github.com/SpikeKing进程之间不能共享内存数据, 但是可以进行通信, 除了简单的Intent通信, 也可以使用Messenger, Messenger基于AIDL实现, 顺序执行, 不支持并发. 为了区分通信的始末, 我们暂定发送数据是客户端, 接收数据是服务端. 本文介绍Messenger的使用方式, 含有Demo. 更多原创 2016-05-18 16:34:35 · 1609 阅读 · 0 评论 -
Android Tips 8
欢迎Follow我的GitHub: https://github.com/SpikeKing本文是Tips的第8节, 记录一些有趣的知识点, 再加一些有用的代码段, 精心准备, 来源于实践. 更多: http://www.wangchenlong.org/其余: 第一篇, 第二篇, 第三篇, 第四篇, 第五篇, 第六篇, 第七篇, 第八篇.Android 5.0 Status Bar 图标显原创 2016-05-18 16:33:08 · 4202 阅读 · 0 评论 -
Intent 或持久化存储处理复杂对象
欢迎Follow我的GitHub: https://github.com/SpikeKing在进程或页面通信时需要使用Intent传递数据; 在对象持久化时需要存储数据. 对于复杂的对象, 进行序列化才可传递或存储, 可以使用Java的Serializable方式或Android的Parcelable方式. 本文介绍Serializable和Parcelable的使用方式, 含有Demo. 更原创 2016-05-16 17:51:58 · 2124 阅读 · 0 评论 -
平安好医生技术栈的分析
平安好医生作为平安旗下的移动医疗应用, 受到平安集团的很大重视, 非常不错. 让我们来分析一下这款应用所使用的技术吧, 多学习多进步. 大家在文中获取需要学习的内容吧.版本: personaldoc_PCGW_V_3.1.2_30102.apk架构Apk: 18.5M, 包名是com.pingan.papd.Android SDK: 构建版本19, 最低版本14.MultiDex: 使用两个Dex.原创 2016-05-16 17:44:54 · 5314 阅读 · 0 评论 -
Android Tips 7
介绍关于Android的一些有趣的小知识点. 本文是第七篇, 欢迎阅读.系列 第一篇, 第二篇, 第三篇, 第四篇, 第五篇, 第六篇, 第七篇.不兼容 Gradle 版本条件: 升级AS 2.0, 执行gradle clean; gradle build报错.Error:(1, 0) Plugin with id 'com.android.application' not found原因: 使用原创 2016-05-16 17:42:10 · 1385 阅读 · 0 评论 -
全面解析Activity的生命周期
欢迎Follow我的GitHub, 关注我的CSDN.在Android应用中, Activity是最重要的组件, 其生命周期(Lifecycle)被大家所熟知. 但是, 大家需要注意一些细节, 才能在使用中得心应手. Android的生命周期改变主要有两种情况, 一是用户参与Activity生命周期的改变, 二是系统回收或配置修改导致的改变.本文示例的GitHub下载地址Android的生命周原创 2016-02-15 16:43:10 · 2927 阅读 · 1 评论 -
高效地分析Android内存--MAT工具解析
欢迎Follow我的GitHub, 关注我的CSDN.MAT(Memory Analyzer Tool), 是著名的Android内存分析工具, 虽然LeakCanary更加便捷, 但是MAT可以清楚地获知整体内存使用情况, 还是必须要掌握的. 我来讲解一下如何使用.1. 内存文件使用Android Studio底部的AndroidMonitor, 获取内存片段. 点击Initial GC回收原创 2016-02-01 17:23:06 · 5943 阅读 · 0 评论 -
加速Gradle构建项目
在Gradle构建大型项目时, 耗时比较严重, 以下几点可以加快项目构建.1. 升级gradle进入项目文件夹, 使用最新的gradle. 修改$project/gradle/wrapper/gradle-wrapper.properties替换为最新.distributionUrl=https\://services.gradle.org/distributions/gradle-2.9-all.原创 2015-12-19 23:16:27 · 4116 阅读 · 1 评论 -
PercentLayout的固定比例
PercentLayout是百分比控件, 使用百分比属性创建控件. 除了常用的百分比, 也可以使用固定比例进行布局(aspect ratio). Percent相关Layout包括: PercentFrameLayout \ PercentRelativeLayout.Gradle依赖compile 'com.android.support:percent:23.1.0'Layout布局, 提供宽度原创 2015-11-30 08:08:44 · 4109 阅读 · 2 评论 -
RxAndroid使用方法
RxAndroid是RxJava的扩展, 可以优雅地处理异步请求. 以前的文章讲述过一些, 这次再补充些内容, 熟悉RxAndroid的使用方法. 要点包含: (1) 链式表达式的使用方式. (2) Lambda的应用. (3) Rx处理网络请求. (4) 线程自动管理, 防止内存泄露.GitHub下载地址.1. 基础当然, 从一个崭新的HelloWorld项目开始.原创 2016-01-01 10:10:35 · 12047 阅读 · 3 评论 -
使用RecyclerView实现滚动控件
滚动控件的实现方式有很多, 使用RecyclerView也比较简单. 做了一个简单的年龄滚动控件, 让我们来看看RecyclerView的使用方式, 主要有以下几点: (1) 对齐控件中心位置. (2) 计算滚动距离. (3) 高亮中心视图. (4) 实时显示中心数据. (5) 停止时自动对齐. (6) 滚动时, 设置按钮状态开关.1. 框架主要关注RecyclerView部分逻辑.原创 2015-11-30 07:03:18 · 7038 阅读 · 15 评论 -
通知栏设置系统字体颜色
Android的Rom版本非常多, 通知栏颜色也各有不同, 如HTC是白底, 红米Note是暗色透明, 也有其他黑底, 灰底等. 统一设置相同的字体颜色, 必然会导致颜色冲突. 那么如何设置字体颜色, 可以正常显示呢? 如HTC(5.0), 标题和内容的颜色已经和系统完全相同, 字体大小是适配的. 如红米Note, 标题和内容的颜色统一使用StatusBar字体的颜色. 通知的逻辑原创 2015-11-30 17:04:31 · 13375 阅读 · 5 评论 -
Android开发Tips(1)
欢迎Follow我的GitHub, 关注我的CSDN.介绍一些, 在Android开发中, 会经常使用的小知识点.1. Download文件夹绝对路径/storage/emulated/0/Download/xxx遍历 File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOW原创 2016-01-09 07:49:14 · 2713 阅读 · 1 评论